React Native PermissionsAndroid всегда возвращает "never_ask_again" для местоположения на Android - PullRequest
0 голосов
/ 02 июля 2018

действительно застряли здесь и нуждаются в помощи.

PermissionsAndroid всегда возвращает «never_ask_again», а response-native-permissions всегда возвращает «limited» Ниже приведен фрагмент кода:

async _getLocationAsync(){
if (Platform.OS === 'android') {

    Permissions.request('location').then(response => {
      // Returns once the user has chosen to 'allow' or to 'not allow' access
      // Response is one of: 'authorized', 'denied', 'restricted', or 'undetermined'
      Alert.alert(" ",response);
    });
} else if (Platform.OS === 'ios') {
    //this.nextAction();
    Alert.alert(" ",Platform.OS);
}}


AndroidManifest.xml

 <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permisssion.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permisssion.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.location" />

compileSdkVersion 25

buildToolsVersion "23.0.1"

minSdkVersion 16

targetSdkVersion 25

compileSdkVersion 23

buildToolsVersion "23.0.1"


Ниже код с PermissionsAndroid, дает мне ответ "never_ask_again".

async _getLocationAsync(){
if (Platform.OS === 'android') {
    var permissions = [
        PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
        PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION
    ];

    try {
        PermissionsAndroid.requestMultiple(permissions).then(granted => {
             Object.entries(granted).map(([key, value]) => {
                 Alert.alert(key,value);
             });
            //Alert.alert(granted);
        });
    } catch (err) {
        Alert.alert(granted);
    }
} else if (Platform.OS === 'ios') {
    //this.nextAction();
    Alert.alert(Platform.OS);
}
}

Я уже пробовал на 2 реальных устройствах и 2 эмуляторах и его же вывод.

Я также пытался с targetSDKVersion = 23 и buildSDKVersion = 23 с одинаковыми выходными данными.

Reaction-native-cli: 2.0.1 реактивный: 0.55.4

что я делаю не так?

1 Ответ

0 голосов
/ 03 июля 2018

Нашел ответ. Ура! Если вы когда-либо сталкивались с одной и той же проблемой, ее можно решить ниже:

Сценарий: вы используете: реагировать родной-facebook-Логин реагировать-нативный-геолокации-сервис (Я думаю, что такая же проблема возникает и при использовании PermissionsAndroid.)

Два сталкиваются друг с другом. геолокация работает, но вход в Facebook приводит к сбою приложения.

Ниже приведены настройки, которые работали для меня:

build.gradle

compileSdkVersion 25
buildToolsVersion "23.0.1"

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

allprojects {
repositories {
    jcenter()
    maven { url "https://maven.google.com" }
}
}

compile project(':react-native-facebook-login')
compile(project(':react-native-geolocation-service')) {
    exclude group: 'com.google.android.gms'
}
compile ("com.google.android.gms:play-services-base:+") { 
    force = true;
}
compile ("com.google.android.gms:play-services-location:+") {
    force = true;

внутри build.gradle модуля response-native-facebook-login (находится в папке node_modules), измените facebook-android-sdk на 4.19. +, Как показано ниже

compile ('com.facebook.android:facebook-android-sdk:4.19.+')

PS: еще не тестировали на нескольких устройствах Android.

Кроме того, эта страница полезна для решения подобных проблем: https://github.com/transistorsoft/react-native-background-geolocation/issues/229

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...