【问题标题】:Permissions.askAsync(Permissions.CAMERA) always denied in standalone apk in Android EXPO SDK 37Permissions.askAsync(Permissions.CAMERA) 在 Android EXPO SDK 37 的独立 apk 中总是被拒绝
【发布时间】:2020-11-25 02:46:00
【问题描述】:

我正在使用 Expo sdk 37.0.1 并请求相机和画廊许可。它在本地博览会设备和模拟器中工作,但是当我构建安装在真实设备中的 APK 时,它总是被拒绝。下面是获取/设置权限的代码。

const resultCamera = await Permissions.askAsync(Permissions.CAMERA);

我还在 app.json 文件中添加了权限,根据独立应用程序所需的 expo 本身的文档,这似乎是正确的。

https://docs.expo.io/versions/latest/sdk/permissions/#android-permissions-equivalents-inside-appjson App.json 代码如下

"android": {
  "versionCode": 9,
  "permissions": [
    "CAMERA",
    "READ_INTERNAL_STORAGE",
    "WRITE_INTERNAL_STORAGE",
    "READ_EXTERNAL_STORAGE",
    "WRITE_EXTERNAL_STORAGE"
  ]
},

我还记录了 const resultCamera = await Permissions.askAsync(Permissions.CAMERA)的独立应用程序的输出

"resultCamera": {
"status": "denied",
"expires": "never",
"canAskAgain": false,
"granted": false,
"permissions": {
  "camera": {
    "granted": false,
    "status": "denied",
    "canAskAgain": false,
    "expires": "never"
  }
}
}

我的 react native sdk 包如下

"react-native": "https://github.com/expo/react-native/archive/sdk-37.0.1.tar.gz",

我该如何解决这个问题?

【问题讨论】:

标签: react-native


【解决方案1】:

我在 expo-av 麦克风权限方面遇到了类似的问题。在世博会客户端中,权限完美无缺,但是当我不得不弹出以使用一些本机模块时,权限变得古怪。在 Android 上,canAskAgain 权限始终返回 false(我还没有使用 ios)。我找到了解决我的问题的方法,可能对您有用。

触发权限请求取决于未授予的权限以及再次请求的能力。但是 expo-av 默认 permissions.canAskAgain 为 false 所以我这样做了:

 async function getPermissions(){
    let permissions = await Audio.getPermissionsAsync();
    console.log(permissions)
    setCanUseMic(permissions.granted);
    if(!permissions.granted){
      console.log('Requesting mic permissions')
      try{
        await Audio.requestPermissionsAsync();
        // update permissions
        permissions = await Audio.getPermissionsAsync();
        setCanUseMic(permissions.granted);
      }catch(err){
        if(!permission.canAskAgain){
          console.log('Unable to ask again for mic permissions')
          // use an alert to tell user to go to settings to enable mic permissions
        }
      }
    }
  }

我没有检查permissions.canAskAgain,而是简单地请求权限。到目前为止,一切正常

【讨论】:

    猜你喜欢
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 2018-05-09
    • 2015-07-05
    • 2014-11-06
    • 2020-08-25
    相关资源
    最近更新 更多