2017-08-07 100 views
1

我正在测试Android 5.1.1上的应用程序,其中存储权限被自动拒绝。当我启动应用程序时,没有提示给应用程序的权限。然而,当我测试Android 6.0及以上版本的应用程序与新的Android权限模型一切工作正常。如何正确设置权限并获取权限对话框以提示在Android 5.0及更低版本上启动应用程序?React Native Android Permission Denied

回答

0

现在不能测试此权利,但作为一个准则:

async function requestStorageAccess() { 
    const permission = await PermissionsAndroid.request(
    PermissionsAndroid.WRITE_EXTERNAL_STORAGE 
) 

    if (permission === PermissionsAndroid.RESULTS.GRANTED) { 
    console.log('Granted'); 
    } 
} 

阅读: http://facebook.github.io/react-native/releases/0.45/docs/permissionsandroid.html

和:https://developer.android.com/reference/android/Manifest.permission.html#WRITE_EXTERNAL_STORAGE

+0

我有同样的异步函数和if条件里面,我把代码下载和保存图像。在Android 6.0及以上版本中一切正常,但低于该API,权限被拒绝。我在这里做错了什么? –

+0

你有没有在* AndroidManifest.xml *中设置? https://developer.android.com/guide/topics/manifest/uses-permission-element.html – zvona

+0

是的,我拥有在AndroidManifest.xml中设置的权限。 –

0

我正好碰到同样的问题上位置权限android版本5.0。

这似乎是在RN(我们使用v0.44.0)的错误

const granted = await PermissionsAndroid.request(
    PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION, { 
     title: 'Enable Location Tracking', 
     message: 'Use your location to find nearby things', 
    }, 
); 

    if (granted === PermissionsAndroid.RESULTS.GRANTED) { 
    return true; 
    } 

出于某种原因,在Android 5.0,授予被设置为true,而不是“授”,这是它在6.0+上设置了什么。

我工作围绕它通过改变

if (granted === true || granted === PermissionsAndroid.RESULTS.GRANTED)