如何在运行时在 React Native 中请求 Android 设备位置的权限?

新手上路,请多包涵

我一直在尝试将 React Native 的 GeoLocalisation 用于 Android 应用程序。在 https://facebook.github.io/react-native/docs/geolocation.html 可以找到文档记录不佳的模块。根据文档,您使用 AndroidManifest.xml 文件中的以下代码在 Android 上处理位置权限

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

但是,我的在线研究表明,上述代码行对于 ANDROID >= 6.0 的版本是无用的

由于我的 GeoLocation 实现当前无法正常工作,我没有其他理由相信位置权限没有得到正确处理。

如何在运行时为 React Native Android App 成功请求位置权限?提前致谢 !

原文由 jungleMan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 920
2 个回答

这对我不起作用

if (granted === PermissionsAndroid.RESULTS.GRANTED) {
}

我提到了 https://facebook.github.io/react-native/docs/permissionsandroid.html#request 和 check() 返回一个布尔值

const granted = await PermissionsAndroid.check( PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION );

if (granted) {
  console.log( "You can use the ACCESS_FINE_LOCATION" )
}
else {
  console.log( "ACCESS_FINE_LOCATION permission denied" )
}

原文由 Jan 发布,翻译遵循 CC BY-SA 4.0 许可协议

在清单中

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.CAMERA"/>

更多细节

import {PermissionsAndroid} from 'react-native';

async function requestCameraPermission() {
  try {
    const granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.CAMERA,
      {
        title: 'Cool Photo App Camera Permission',
        message:
          'Cool Photo App needs access to your camera ' +
          'so you can take awesome pictures.',
        buttonNeutral: 'Ask Me Later',
        buttonNegative: 'Cancel',
        buttonPositive: 'OK',
      },
    );
    if (granted === PermissionsAndroid.RESULTS.GRANTED) {
      console.log('You can use the camera');
    } else {
      console.log('Camera permission denied');
    }
  } catch (err) {
    console.warn(err);
  }
}

export default class AlertDetails extends Component{

    async componentDidMount() {
        await request_storage_runtime_permission()
    }
}

原文由 Keshav Gera 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题