webentwicklung-frage-antwort-db.com.de

ACCESS_FINE_LOCATION funktioniert nicht

Folgendes ist mein AndroidManifest.xml...

<uses-permission Android:name="Android.permission.INTERNET"/>
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />

<uses-sdk
    Android:minSdkVersion="16"
    Android:targetSdkVersion="22" />

<application
  Android:name=".BeaconApp"
  Android:allowBackup="true"
  Android:label="@string/app_name"
  Android:icon="@mipmap/ic_launcher"
  Android:theme="@style/AppTheme">
  <activity
    Android:name=".MainActivity"
    Android:label="@string/app_name"
    Android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
    <intent-filter>
        <action Android:name="Android.intent.action.MAIN" />
        <category Android:name="Android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>
  <activity Android:name="com.facebook.react.devsupport.DevSettingsActivity" />
    <meta-data
        Android:name="com.google.Android.geo.API_KEY"
        Android:value="AIzaSyBqhOHH31FYObdzoVW9TmQsv62TOP0LSLI"/>
</application>

Wie Sie sehen, habe ich die erforderlichen Berechtigungen hinzugefügt, um Standortinformationen abzurufen. Wenn ich jedoch meine App starte, erhalte ich einen seltsamen Fehler ...

Looks like the app doesn't have permission to access location.
Add the following line to your app's AndroidManifest.xml:
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />

throwLocationPermissionMissing
...etc

Ich habe dies bereits in meinen AndroidManifest.xml eingefügt. Warum erhalte ich diese Fehlermeldung? Ich habe versucht, Android Studio neu zu starten. Ich habe versucht, Daten aus dem Emulator zu löschen. Ich habe Gradle -> Clean ausprobiert. Nichts davon hat geholfen. Was geht hier vor sich?

Ist es möglich, dass mein Android-Emulator GPS oder etwas blockiert?

6
Bolboa

Haben Sie versucht, zur Laufzeit nach Berechtigungen zu fragen.

int permissionCheck = ContextCompat.checkSelfPermission(thisActivity,
    Manifest.permission.ACCESS_FINE_LOCATION);
if(permissionCheck != PackageManager.PERMISSION_GRANTED) {
    // ask permissions here using below code
    ActivityCompat.requestPermissions(thisActivity,
            new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
            REQUEST_CODE);
}

Sie können Details auf dieser Site überprüfen Anfordern von Berechtigungen zur Laufzeit

Auf diese Weise bitten Sie den Benutzer zur Laufzeit nach Android 6.0 um Erlaubnis.

Sie können Android 6.0 Permission Error answer auch überprüfen.

Ich hoffe es hilft dir.

6
ELITE

was Sie brauchen, ist die Laufzeitberechtigung. technisch gesehen bedeutet die Manifest-Erlaubnis seit os 6 nichts.

google "Android Runtime GPS-Berechtigung" und Sie erhalten Tonnen von Antworten, was zu tun ist und warum.

4
TooManyEduardos

Mit React-Native müssen Sie PermissionsAndroid verwenden, um Berechtigungen für Android 6.0-Geräte (oder höher) zu erhalten.

Fügen Sie diese Zeilen Ihren Dateien hinzu

import { PermissionsAndroid } from 'react-native';

async function requestLocationPermission() {
  try {
    const granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
      {
        'title': 'Location Permission',
        'message': 'This app needs access to your location',
      }
    )
    if (granted === PermissionsAndroid.RESULTS.GRANTED) {
      console.log("You can use the location")
    } else {
      console.log("Location permission denied")
    }
  } catch (err) {
    console.warn(err)
  }
}

rufen Sie dann requestLocationPermission() auf, bevor Sie den Speicherort verwenden

2
MujtabaFR