Beim Hinzufügen von Berechtigungen zu meiner Manifestdatei funktioniert die folgende XML-Datei.
<permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
Diese XML funktioniert jedoch nicht.
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
Welches soll ich verwenden? Wenn es das erste ist, warum würde es nicht funktionieren? Wie kann ich es reparieren?
Außerdem erhalte ich eine Ausnahme in Bezug auf die Laufzeitberechtigungen für Android 6.0):
Java.lang.SecurityException: "gps" location provider requires ACCESS_FINE_LOCATION permission.
Wenn ich versuche, die Berechtigung einem String-Array hinzuzufügen, um die Berechtigung zu überprüfen, gibt Android Studio an, dass Manifest.permission
Im folgenden Code nicht aufgelöst werden kann:
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
Warum sollte es das tun? Wie kann ich es reparieren?
Für den ersten Teil sollten Sie <uses-permission>
verwenden, wie auf der Android Devlopers-Site angegeben. Stellen Sie sicher, dass Sie Ihre Berechtigungen deklarieren direkt unter dem <manifest>
- Tag, nicht in Ihrem <application>
- Tag. Es ist schwer zu wissen, was Ihr Problem ist, ohne es zu sehen Ihre gesamte Manifestdatei. Weitere Informationen zum Deklarieren von Berechtigungen in Ihrem Manifest finden Sie unter dem oben angegebenen Link .
In Bezug auf Ihr Laufzeitberechtigungsproblem:
With uses-permissions Kann das nicht auflösen.
neuer String [] {Manifest.permission.ACCESS_FINE_LOCATION}
Warum?
Stellen Sie sicher, dass Sie Android.Manifest
Anstelle von my.app.package.Manifest
Verwenden. Häufig verwendet Android Studio standardmäßig das letztere anstelle des ersteren.
Ihre neue Codezeile würde also so aussehen:
new String[]{Android.Manifest.permission.ACCESS_FINE_LOCATION};
Edit: Ich habe meine Antwort neu formatiert.
Edit 2: Seien Sie vorsichtig beim Importieren von Android.Manifest
. Es kann can Probleme verursachen, wenn Sie auch my.app.package.Manifest
Importieren. Abgesehen davon ist import Android.Manifest
Eine weitere gültige Methode, um dieses Problem zu beheben.
ändere das
Manifest.permission.ACCESS_FINE_LOCATION
das mögen
Android.Manifest.permission.ACCESS_FINE_LOCATION
Versuche dies! Da ACCESS_FINE_LOCATION in folgendem Paket verfügbar ist, fügen Sie Folgendes hinzu:
import Android.Manifest;
Für den Fall, dass Sie nicht mehr weiterkommen möchten
Ich hatte ein ähnliches Problem, wo verwendet;
ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED
wo es das Symbol READ_CONTACTS
nicht auflösen konnte.
Jedoch bei der Verwendung von;
import Android.Manifest;
Es begann zu erkennen, READ_CONTACT
wenn Sie an dynamischen Berechtigungen und Berechtigungen wie ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION arbeiten und einen Fehler melden "Methode PERMISSION_NAME kann nicht aufgelöst werden" In diesem Fall schreiben Sie den Code mit dem Berechtigungsnamen und dann Erstellen Sie Ihr Projekt ne Dies wird neu generieren die Manifest-Datei (Manifest.permission)
Wenn Sie bereits das ses.permissions - Setup korrekt in Ihrer Manifest-Datei haben, wie bereits von hnilsen erwähnt, ersetzen Sie einfach Ihre Zeile:
Manifest.permission.ACCESS_FINE_LOCATION
von diesem:
Android.Manifest.permission.ACCESS_FINE_LOCATION
Dies kann Ihr Problem lösen.
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}
ändere es in
Android.manifest.permission.ACCESS_FINE_LOCATION
Versuchen Sie dies, bevor Sie ausführen, und stellen Sie sicher, dass Sie über die Zugriffsberechtigung verfügen.
try {
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
} catch (SecurityException e) {
dialogGPS(this.getContext()); // lets the user know there is a problem with the gps
}
Veränderung
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
Dazu
new String[]{Android.Manifest.permission.ACCESS_FINE_LOCATION}
Ihr Problem wird gelöst.