Wenn Sie meiner Manifestdatei Berechtigungen hinzufügen, funktioniert die unten stehende XML-Datei.
<permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Diese XML-Datei funktioniert jedoch nicht.
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Welches soll ich benutzen? Wenn es das erste ist, warum sollte es nicht funktionieren? Wie kann ich es reparieren?
Außerdem erhalte ich eine Ausnahme zu Android 6.0-Laufzeitberechtigungen:
java.lang.SecurityException: "gps" location provider requires ACCESS_FINE_LOCATION permission.
Wenn ich versuche, die Berechtigung zu einem String-Array hinzuzufügen, um die Berechtigung zu überprüfen, sagt mir Android Studio, dass es nicht aufgelöst werden kann Manifest.permission
im folgenden Code:
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
Warum sollte es das tun? Wie kann ich es reparieren?
Antworten:
190 für die Antwort № 1Für den ersten Teil sollten Sie verwenden <uses-permission>
gemäß der Android Devlopers-Site. Vergewissern Sie sich, dass Sie Ihre Berechtigungen angeben direkt unter dem <manifest>
Tag, nicht in Ihrem <application>
Etikett. Es ist schwer zu wissen, was Ihr Problem ist, ohne Ihre gesamte Manifestdatei zu sehen. Schauen Sie sich den Link an, den ich oben gepostet habe Weitere Informationen dazu, wie Sie Berechtigungen in Ihrem Manifest deklarieren.
In Bezug auf Ihr Laufzeitberechtigungsproblem:
Mit Anwendungsberechtigungen Kann das nicht auflösen ..
neuer String [] {Manifest.permission.ACCESS_FINE_LOCATION}
Warum?
Stellen Sie sicher, dass Sie wieder verwenden android.Manifest
Anstatt von my.app.package.Manifest
. In vielen Fällen wird Android Studio anstelle von erstem standardmäßig verwendet.
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 android.Manifest
. Es kann Probleme verursachen, wenn Sie auch importieren my.app.package.Manifest
. Anders als das import android.Manifest
ist ein weiterer gültiger Weg, um dieses Problem zu lösen.
72 für die Antwort № 2
ändere das
Manifest.permission.ACCESS_FINE_LOCATION
das mögen
android.Manifest.permission.ACCESS_FINE_LOCATION
14 für die Antwort № 3
Versuche dies! Da ACCESS_FINE_LOCATION in folgendem Paket vorhanden ist, so fügen Sie Folgendes hinzu:
import android.Manifest;
Das
3 für die Antwort № 4
wenn Sie an dynamischen Berechtigungen und etwaigen Berechtigungen arbeiten ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION Fehler geben "Methode PERMISSION_NAME kann nicht aufgelöst werden" In diesem Fall schreiben Sie den Code mit dem Berechtigungsnamen und dann Baue dein Projekt neu auf dieser Wille regenerieren die Manifestdatei (Manifest.permission)
3 für die Antwort № 5
Ich hatte ein ähnliches Problem, wenn es verwendet wurde.
ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED
wo es Symbol nicht auflösen konnte READ_CONTACTS
.
Jedoch bei der Verwendung;
import android.Manifest;
Es fing an zu erkennen READ_CONTACT
0 für die Antwort № 6
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);
}
0 für die Antwort № 7
Probieren Sie dies vor dem Ausführen aus, und stellen Sie sicher, dass Sie die Berechtigung zum Zugriff haben.
try {
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
} catch (SecurityException e) {
dialogGPS(this.getContext()); // lets the user know there is a problem with the gps
}
0 für die Antwort № 8
Veränderung
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
Um dies zu erreichen
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}
Ihr Problem wird gelöst.
0 für die Antwort № 9
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
ändere es zu
android.manifest.permission.ACCESS_FINE_LOCATION
0 für die Antwort № 10
Wenn Sie schon die haben Verwendungen. Berechtigungen Richten Sie die Einstellung in Ihrer Manifestdatei korrekt ein, wie bereits von hnilsen erwähnt.
Manifest.permission.ACCESS_FINE_LOCATION
von diesem:
android.Manifest.permission.ACCESS_FINE_LOCATION
Dies kann Ihr Problem lösen.
-2 für die Antwort № 11
Versuche dies:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_SELECT_PICTURE);
return;
}
-2 für die Antwort № 12
Wenn Sie "Manifest" eingeben, sollte Android Studio Ihnen vorschlagen, einige Optionen für Manifest auszuwählen. Sie sollten den Start-Android anstelle des Namens Ihres Projekts wählen.
Wenn Sie auf die Referenz von Manifest.java zugreifen und feststellen, dass in der Klasse "Permission" nur 1-2 Zeilen vorhanden sind, referenzieren Sie die falsche Manifest-Klasse.