jun*_*Man 20 permissions android geolocation react-native
我一直在尝试将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" />
Run Code Online (Sandbox Code Playgroud)
但是,我的在线研究表明,对于ANDROID> = 6.0的版本,上面的代码行是无用的
由于我的GeoLocation实现目前无法正常工作,我没有其他理由,只能相信未正确处理位置权限.
如何在运行时为React Native Android App成功请求位置权限?提前致谢 !
Jag*_*esh 21
我通过在android/app/build.gradle中更改targetSdkVersion(与我的案例23中的compileSdkVersion相同)解决了这个问题.
编辑位于android/src/main中的AndroidManifest.xml并添加
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
Run Code Online (Sandbox Code Playgroud)
//下一个 :
import { PermissionsAndroid } from 'react-native';
Run Code Online (Sandbox Code Playgroud)
//然后添加此方法:
export async function requestLocationPermission()
{
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
'title': 'Example App',
'message': 'Example App access to your location '
}
)
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log("You can use the location")
alert("You can use the location");
} else {
console.log("location permission denied")
alert("Location permission denied");
}
} catch (err) {
console.warn(err)
}
}
Run Code Online (Sandbox Code Playgroud)
//并在运行时请求位置时访问该方法
async componentWillMount() {
await requestLocationPermission()
}
Run Code Online (Sandbox Code Playgroud)
小智 16
这不适合我
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
}
Run Code Online (Sandbox Code Playgroud)
我提到了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" )
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以使用 react native PermissionsAndroid 来请求权限:https : //facebook.github.io/react-native/docs/permissionsandroid.html#request
或者,一个更简单的选择是使用一个为你做的库,比如https://github.com/yonahforst/react-native-permissions
归档时间: |
|
查看次数: |
37317 次 |
最近记录: |