使用React Native和Android,没有权限提示/依赖权限的组件在发行版上不起作用

时间:2018-12-28 11:32:59

标签: android react-native permissions geolocation release

我试图使用React Native在Android设备上生成应用程序的签名APK。 解决了几个问题后,所有内容似乎都可以正常工作,但是在显式调用权限提示时以及相关功能方面都存在问题。

在调试版本上,一切正常运行,权限提示和相关组件(地理位置)始终运行。

该android设备运行OS 7.1.1-SDK 25,我选择了该应用的位置许可,但它无法从该设备获取信息。

我还使用了react-native-image-picker模块,该模块在需要时调用权限对话框,在发布时有效。

app / build.gradle

android {

    compileSdkVersion 25
    buildToolsVersion '28.0.3'

    defaultConfig {
        applicationId "com.remetaldriverapp"
        minSdkVersion 25
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }
...
}

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.remetaldriverapp">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission 
android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-permission 
android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission 
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-feature android:name="android.hardware.location.gps" />
    <uses-feature android:name="android.hardware.location.network" />
...

我还向用户请求对我的App.js的许可

requestGeoLocationPermission = async () =>  {
try {       
  const perm = await PermissionsAndroid.request(
    PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
    {
      'title': 'This App needs permission to use your location',
      'message': 'please choose an option ',
    }
  );
  console.log('asking for permission', perm);
  const granted = await PermissionsAndroid.check( PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION );
  console.log('asking for granted', granted);
  if (granted) {
    console.log("Geolocation activated");
    return this.watchLocation();         
  } else {
    console.log("Geolocation disabled")
    return -1;
  }
} catch (err) {
  console.log('failed geolocation');
  console.warn(err)
}

}

我希望设备能够提示权限对话框,或者按预期从设备中检索地理位置信息,但是这些都没有发生。

0 个答案:

没有答案