uniapp开发怎么获取HarmonyOS鸿蒙Next设备的存储权限

uniapp开发怎么获取HarmonyOS鸿蒙Next设备的存储权限 使用uniapp开发需要实现将图片保存到本地

3 回复
import { uni } from '@dcloudio/uni-app';

@Entry
@Component
struct IndexPage {
    private requestStoragePermission() {
        uni.requestPermissions({
            permissions: [
                // 根据鸿蒙系统版本选择合适的权限
                'ohos.permission.READ_EXTERNAL_STORAGE',
                'ohos.permission.WRITE_EXTERNAL_STORAGE'
            ],
            success: (res) => {
                if (res.authResults['ohos.permission.READ_EXTERNAL_STORAGE'] === 'authorized' &&
                    res.authResults['ohos.permission.WRITE_EXTERNAL_STORAGE'] === 'authorized') {
                    console.log('存储权限已获取');
                    // 在这里执行需要存储权限的操作
                } else {
                    console.log('存储权限获取失败');
                }
            },
            fail: (err) => {
                console.error('请求存储权限失败:', err);
            }
        });
    }

    build() {
        Stack({ alignContent: FlexAlign.Center, justifyContent: FlexAlign.Center }) {
            Button('请求存储权限')
              .onClick(() => {
                    this.requestStoragePermission();
                })
        }
        .width('100%')
        .height('100%')
    }
}

更多关于uniapp开发怎么获取HarmonyOS鸿蒙Next设备的存储权限的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


可以参考以下demo:

<template>
    <view class="content">
        <image class="logo" src="/static/fox.jpg" [@click](/user/click)="ImgClick"></image>
        <view class="text-area">
            <text class="title">{{title}}</text>
        </view>
        <button class="buttonOne" [@click](/user/click)="ClickHandle">点击下载图片并保存到相册</button>
        <image class="fileImg" v-if="imageSrc" :src="imageSrc" mode=""></image>
        <!-- <button class="check" [@click](/user/click)="saveToCamera">保存到相册</button> -->
    </view>
</template>

<script>
    export default {
        data() {
            return {
                title: '你好,这个是Uniapp-鸿蒙测试项目',
                imageSrc: "https://img0.baidu.com/it/u=3217812679,2585737758&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500",
                saveRes: ""
            }
        },
        onLoad() {

        },
        methods: {
            ClickHandle() {
                this.saveImageToAlbum(this.imageSrc)
            },
            saveImageToAlbum(imageUrl) {
                // 使用 uni.downloadFile 下载图片
                uni.downloadFile({
                    url: imageUrl,
                    success: (res) => {
                        if (res.statusCode === 200) {
                            // 下载成功,获取文件的临时路径
                            const tempFilePath = res.tempFilePath;
                            // 调用API保存图片到相册
                            uni.saveImageToPhotosAlbum({
                                filePath: tempFilePath,
                                success: () => {
                                    uni.showToast({
                                        title: '保存成功',
                                        icon: 'success'
                                    });
                                },
                                fail: (err) => {
                                    uni.showToast({
                                        title: '保存失败',
                                        icon: 'none'
                                    });
                                    console.error('保存图片失败:', err);
                                }
                            });
                        }
                    },
                    fail: (err) => {
                        uni.showToast({
                            title: '下载失败',
                            icon: 'none'
                        });
                        console.error('下载图片失败:', err);
                    }
                });
            }   
        }
    }
</script>

<style>
    .content {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }

    .logo {
        height: 200rpx;
        width: 200rpx;
        margin-top: 200rpx;
        margin-left: auto;
        margin-right: auto;
        margin-bottom: 50rpx;
    }

    .fileImg {
        height: 300rpx;
        width: 400rpx;
        margin-top: 20rpx;
    }

    .text-area {
        display: flex;
        justify-content: center;
    }

    .title {
        font-size: 36rpx;
        color: #8f8f94;
    }

    .check {
        margin-top: 20rpx;
    }

    .buttonOne {
        margin-top: 200rpx;
        margin-bottom: 20rpx;
    }
</style>

在Uniapp开发中获取HarmonyOS鸿蒙Next设备的存储权限,首先需要在应用的配置文件中声明所需的权限。在manifest.json文件中添加ohos.permission.READ_USER_STORAGEohos.permission.WRITE_USER_STORAGE权限声明。例如:

{
  "app": {
    "bundleName": "com.example.app",
    "vendor": "example",
    "version": {
      "code": 1,
      "name": "1.0"
    }
  },
  "module": {
    "name": "entry",
    "type": "entry",
    "deviceTypes": [
      "phone",
      "tablet"
    ],
    "distro": {
      "deliveryWithInstall": true,
      "moduleName": "entry"
    },
    "abilities": [
      {
        "name": "MainAbility",
        "icon": "$media:icon",
        "label": "$string:mainability_label",
        "description": "$string:mainability_description",
        "visible": true,
        "permissions": [
          "ohos.permission.READ_USER_STORAGE",
          "ohos.permission.WRITE_USER_STORAGE"
        ]
      }
    ]
  }
}

在代码中,使用@ohos.ability.featureAbility模块的requestPermissionsFromUser方法动态请求权限。示例代码如下:

import featureAbility from '@ohos.ability.featureAbility';

let permissions = ['ohos.permission.READ_USER_STORAGE', 'ohos.permission.WRITE_USER_STORAGE'];
featureAbility.requestPermissionsFromUser(permissions, (err, data) => {
  if (err) {
    console.error('Permission request failed:', err);
  } else {
    console.log('Permission request result:', data);
  }
});

通过以上步骤,可以在Uniapp中获取HarmonyOS鸿蒙Next设备的存储权限。

回到顶部