HarmonyOS 鸿蒙Next 图片上传权限问题:首次申请读写权限后,允许并上传;系统设置关闭文件权限,再次上传仍能成功

发布于 1周前 作者 songsunli 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 图片上传权限问题:首次申请读写权限后,允许并上传;系统设置关闭文件权限,再次上传仍能成功 第一次使用requestPermissionsFromUser申请权限:

ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA

第一次会弹出是否允许访问媒体权限,选择允许,去应用后台关掉文件访问权限,进入APP再次上传,仍旧会执行requestPermissionsFromUser,不会弹出弹框,这不是重点,重点是这个时候没有文件权限可以上传成功,这是正常的吗

3 回复

没有权限上传成功这个不好复现,能提供一个demo吗?

更多关于HarmonyOS 鸿蒙Next 图片上传权限问题:首次申请读写权限后,允许并上传;系统设置关闭文件权限,再次上传仍能成功的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


用户授权弹窗 只有当 第一次打开应用才会弹起,后续需要授权只能让用户手动打开设置进行授权,关掉应用被授权的缓存具体操作如下:

ide设置内有是否保存 测试应用数据的选项

打开ide -> Run -> Edit Configurations -> Application -> entry -> Store as project file 不要勾选 以及

General -> Keep Allication Data 和 Auto Dependence 不要勾选 清理桌边的应用及数据 后再做尝试

权限弹框只会弹出一次,如果用户在设置里做了修改,需要app做权限判断,然后引导用户去系统设置里面修改权限,参考如下demo:

import common from '@ohos.app.ability.common';
@Entry
@Component
struct Index {
  build() {
    Row() {
      Column() {
        Button("跳转到设置").onClick(() => {
          let context = getContext(this) as common.UIAbilityContext;
          context.startAbility({
            bundleName: 'com.huawei.hmos.settings',
            abilityName: 'com.huawei.hmos.settings.MainAbility',
          });
        }).margin({ bottom: 20 })
        Button("跳到总的通知页面").onClick(() => {
          let context = getContext(this) as common.UIAbilityContext;
          context.startAbility({
            bundleName: 'com.huawei.hmos.settings',
            abilityName: 'com.huawei.hmos.settings.MainAbility', // com.huawei.hmos.settings.AppInfoAbility
            uri: "systemui_notification_settings", //application_settings application_info_entry
          });
        }).margin({ bottom: 20 })
        Button("跳到应用信息")
          .onClick(() => {
            let context = getContext(this) as common.UIAbilityContext;
            context.startAbility({
              bundleName: 'com.huawei.hmos.settings',
              abilityName: 'com.huawei.hmos.settings.MainAbility', // com.huawei.hmos.settings.AppInfoAbility
              uri: 'application_info_entry', //application_settings application_info_entry
              parameters: {
                pushParams: 'com.example.myapplication' // 修改为自己的应用包名
              }
            });
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

第一次点禁止也是没关系的,这个跳转到本应用的设置页面,可以看到权限然后点击允许就可以,代码参考:

Button("跳到应用信息")
          .onClick(() => {
            let context = getContext(this) as common.UIAbilityContext;
            context.startAbility({
              bundleName: 'com.huawei.hmos.settings',
              abilityName: 'com.huawei.hmos.settings.MainAbility', // com.huawei.hmos.settings.AppInfoAbility
              uri: 'application_info_entry', //application_settings application_info_entry
              parameters: {
                pushParams: 'com.example.myapplication' // 修改为自己的应用包名
              }
            });
          })

针对HarmonyOS 鸿蒙Next 图片上传权限问题,首次申请读写权限后用户允许并成功上传图片,但在系统设置中关闭文件权限后,应用仍然能够上传图片的情况,这里给出以下解释:

在HarmonyOS系统中,应用的权限管理机制较为严格,但也可能存在某些特殊场景或系统漏洞导致权限管理不按预期执行。理论上,当用户在系统设置中关闭了应用的文件读写权限后,应用应无法访问存储中的文件,包括图片。然而,如果应用仍然能够上传图片,可能的原因包括:

  1. 缓存或临时权限:应用在首次获得权限时可能缓存了某些数据或临时权限,使得在权限被关闭后仍能短暂访问。
  2. 系统漏洞或异常:HarmonyOS系统可能存在某些未被修复的漏洞,导致权限管理机制失效。
  3. 应用使用了特殊技术:部分应用可能采用了特殊的技术手段,如通过其他应用或服务间接访问文件。

针对此问题,建议开发者检查应用的权限申请和使用逻辑,确保在权限被关闭后无法访问存储中的文件。同时,用户也可以尝试重启设备或清除应用数据来查看问题是否得到解决。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部