Lors de l'ajout d'autorisations à mon fichier manifeste, le code XML ci-dessous fonctionne.
<permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
Cependant, ce XML ne fonctionne pas.
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
Lequel suis-je censé utiliser? Si c'est le premier, pourquoi ça ne marcherait pas? Comment puis-je le réparer?
En outre, je reçois une exception liée aux autorisations d'exécution Android 6.0:
Java.lang.SecurityException: "gps" location provider requires ACCESS_FINE_LOCATION permission.
Lorsque j'essaie d'ajouter l'autorisation à un tableau de chaînes afin de vérifier l'autorisation, Android Studio m'indique qu'il ne peut pas résoudre Manifest.permission
dans le code ci-dessous:
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
Pourquoi ferait-il cela? Comment puis-je le réparer?
Pour la première partie, vous devriez utiliser <uses-permission>
selon le site Android Devlopers . Essayez de vous assurer de déclarer vos autorisations directement sous la balise <manifest>
, pas dans votre balise <application>
. Il est difficile de savoir quel est votre problème sans consulter l'intégralité de votre fichier manifeste. Consultez le lien que j'ai posté ci-dessus pour plus d'informations sur la façon de déclarer des autorisations dans votre manifeste.
En ce qui concerne votre problème d'autorisations d'exécution:
With uses-permissions Impossible de résoudre ce problème ..
new String [] {Manifest.permission.ACCESS_FINE_LOCATION}
Pourquoi?
Assurez-vous que vous utilisez Android.Manifest
au lieu de my.app.package.Manifest
. Très souvent, Android Studio utilisera le dernier par défaut au lieu du premier.
Ainsi, votre nouvelle ligne de code ressemblerait à ceci:
new String[]{Android.Manifest.permission.ACCESS_FINE_LOCATION};
Edit: j'ai reformaté ma réponse.
Edit 2: Méfiez-vous d'importer Android.Manifest
. Cela peut causer des problèmes si vous importez également my.app.package.Manifest
. Autre que cela, import Android.Manifest
est un autre moyen valide de résoudre ce problème.
change ça
Manifest.permission.ACCESS_FINE_LOCATION
dans cette
Android.Manifest.permission.ACCESS_FINE_LOCATION
Essaye ça! Comme ACCESS_FINE_LOCATION est disponible dans le package suivant, ajoutez:
import Android.Manifest;
Un séjour sans faille
J'ai eu un problème similaire où utilisé;
ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED
où il n'a pas pu résoudre le symbole READ_CONTACTS
.
Cependant sur l'utilisation;
import Android.Manifest;
Il a commencé à reconnaître READ_CONTACT
si vous travaillez sur des autorisations dynamiques et des autorisations telles que ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION en donnant une erreur "impossible de résoudre la méthode PERMISSION_NAME" dans ce cas, écrivez votre code avec le nom de l'autorisation, puis reconstruisez votre projet cela va régénérer le fichier manifeste (Manifest.permission)
Si vous avez déjà correctement configuré ses.permissions dans votre fichier manifeste, comme déjà mentionné par hnilsen, remplacez simplement votre ligne:
Manifest.permission.ACCESS_FINE_LOCATION
par celui-ci:
Android.Manifest.permission.ACCESS_FINE_LOCATION
Cela peut résoudre votre problème.
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(Android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
|| checkSelfPermission(Android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
mapView.setMyLocationEnabled(true);
}
}
else
{
mapView.setMyLocationEnabled(true);
}
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
changez le en
Android.manifest.permission.ACCESS_FINE_LOCATION
Essayez ceci avant de lancer, assurez-vous que vous avez la permission d'y accéder.
try {
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
} catch (SecurityException e) {
dialogGPS(this.getContext()); // lets the user know there is a problem with the gps
}
Changement
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
Pour ça
new String[]{Android.Manifest.permission.ACCESS_FINE_LOCATION}
Votre problème sera résolu.