7***@qq.com
7***@qq.com
  • 发布:2020-07-22 17:50
  • 更新:2023-07-04 22:01
  • 阅读:1519

【报Bug】APP手动禁用摄像头权限,在onShow中使用requestPermissions方法会导致无限触发onShow和onHide

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 19041.388

HBuilderX类型: 正式

HBuilderX版本号: 2.7.14

手机系统: Android

手机系统版本号: Android 9.0

手机厂商: 小米

手机机型: 小米6

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
onShow: function() {  
        console.log('App Show');  
        plus.android.requestPermissions(['android.permission.CAMERA'],function(){},function(err){});  
    },  
    onHide: function() {  
        console.log('App Hide');  
    }

操作步骤:

代码示例中的代码写在APP.VUE中,并且先允许摄像头权限。然后退回桌面,禁用掉APP的摄像头权限,再切回APP就会复现

预期结果:

通过失败回调来编写代码警告用户不要自行禁止摄像头权限

实际结果:

一直触发onShow和onHide。导致写在onShow中的代码一直重复执行

bug描述:

需求需要检测用户是否切回桌面禁用了摄像头。
在APP.VUE的onShow中使用plus.android.requestPermissions,结果导致切回应用后无限触发onShow和onHide。

2020-07-22 17:50 负责人:无 分享
已邀请:
7***@qq.com

7***@qq.com (作者)

顶顶顶顶

jxtian

jxtian

尽量避免在 onshow 里使用需要权限的API(比如setScreenBrightness()等需要手机权限), 会反复触发 onshow 造成死循环。

  • 7***@qq.com (作者)

    那遇到退到后台手动禁止权限 然后再点开APP 岂不是不能提示用户开启权限

    2020-07-24 11:02

  • 8***@qq.com

    我也是发现这个问题,跳转到系统权限界面后回来无法检测是否开启,因为回来就是onshow,如果在onshow里就会无限死循环,不知道如何解决

    2020-11-07 20:06

  • 1***@qq.com

    回复 7***@qq.com: 请问一下 你解决了么

    2021-01-12 14:07

Emmpty

Emmpty

顶顶顶~~~老问题了

AKA小迪

AKA小迪 - 信息

没人解决吗

  • 1***@qq.com

    防抖的做法

    定义一个全局的变量 isApplyPermission: false

    页面onshow中判断 未申请的情况下才能调用方法

    方法中设置为true,函数走完再置为false

    2023-09-07 11:54

  • 坤坤崩

    回复 1***@qq.com: 没有用的,他还是会多触发一次

    2024-10-31 18:07

要回复问题请先登录注册