Ce qui suit est mon 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>
Comme vous pouvez le constater, j'ai ajouté les autorisations nécessaires pour obtenir des informations sur l'emplacement. Cependant, lorsque je lance mon application, j'obtiens une erreur étrange ...
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
J'ai déjà ajouté ceci dans mon AndroidManifest.xml
, alors pourquoi cette erreur est-elle générée? J'ai essayé de redémarrer Android Studio. J'ai essayé d'effacer les données de l'émulateur. J'ai essayé Gradle -> Clean. Aucun de ceux-ci n'a aidé. Qu'est-ce qui se passe ici?
Est-il possible que mon émulateur Android bloque le GPS ou autre chose?
Avez-vous essayé de demander des autorisations au moment de l'exécution ..
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);
}
Vous pouvez vérifier les détails sur ce site Demander des autorisations au moment de l'exécution
C’est ainsi que vous demandez à l’utilisateur d’accorder une autorisation au moment de l’exécution après Android 6.0
Vous pouvez vérifier Erreur de permission Android 6.0 répondre également.
J'espère que ça vous aidera.
ce dont vous avez besoin, c'est l'autorisation d'exécution. techniquement parlant, depuis os 6, la permission manifeste ne veut rien dire.
google "autorisation d'exécution Android gps" et vous obtiendrez des tonnes de réponses sur ce qu'il faut faire et pourquoi.
Avec React-Native, vous devez utiliser PermissionsAndroid pour obtenir des autorisations sur les appareils Android 6.0 (ou version ultérieure).
Ajoutez ces lignes à vos fichiers
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)
}
}
puis appelez requestLocationPermission()
avant d'utiliser l'emplacement