Ich habe Android Runtime Permissions in meiner Android App implementiert. Ich bin auch in der Lage zu überprüfen, ob eine Erlaubnis zur Laufzeit erlaubt oder verweigert wird. Aber ich möchte wissen, ob es sowieso so ist, wenn ein Benutzer zuerst die Berechtigung verweigerte und sie dann über das App-Berechtigungsmenü in den Einstellungen erlaubte. (Angenommen, ein Service immer zu prüfen, läuft, wenn Änderungen auftreten)Android Runtime Permissions von Einstellungen überprüfen
Antwort
Ich verwende die folgende Hilfsklasse für die Überprüfung und Anfordern von Berechtigungen
public final class Permissions {
public static final int INTERNAL_STORAGE_REQUEST_CODE = 1;
public static final int FINE_LOCATION_REQUEST_CODE = 2;
private static final int COARSE_LOCATION_REQUEST_CODE = 3;
public static final String READ_EXTERNAL_STORAGE = Manifest.permission.READ_EXTERNAL_STORAGE;
public static final String ACCESS_FINE_LOCATION = Manifest.permission.ACCESS_FINE_LOCATION;
public static final String ACCESS_COARSE_LOCATION = Manifest.permission.ACCESS_COARSE_LOCATION;
public static boolean havePermissionFor(Context context, String permission) {
return Build.VERSION.SDK_INT < Build.VERSION_CODES.M ||
ActivityCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED;
}
public static void showPermissionDetails(String message, Context context, DialogInterface.OnClickListener okListener) {
M.showAlert(context, "Request for permission", message, "ALLOW", "DON'T ALLOW", okListener, null, false);
}
public static void requestForPermissions(Activity activity, String[] permissions, int permissionRequestCode) {
ActivityCompat.requestPermissions(activity, permissions, permissionRequestCode);
}
public static void requestPermissionForFragment(Fragment fragment, String[] permissions, int permissionRequestCode) {
fragment.requestPermissions(permissions, permissionRequestCode);
}
public static boolean shouldShowPermissionRationale(Activity activity, String permission) {
return ActivityCompat.shouldShowRequestPermissionRationale(activity, permission);
}
public ArrayList<String> getRequiredPermissions(Context context, String... permissions) {
ArrayList<String> requiredPermissionsList = new ArrayList<>();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return requiredPermissionsList;
for (String permission : permissions) {
if (!havePermissionFor(context, permission))
requiredPermissionsList.add(permission);
}
return requiredPermissionsList;
}
}
Ein kleiner Trick für I am also able to check if a permission is allowed or denied at runtime
. Speichern Sie dieses Detail (abgelehnt oder erlaubt) und wenn der Benutzer etwas von den Einstellungen geändert hat, können Sie die vorherigen Details in der Berechtigungsfunktion Ihrer App einfach vergleichen.
Zum Beispiel: Ihre gespeicherten Details wurden verweigert und dann erlaubte Ihnen die Erlaubnis durch Einstellungen, wenn Sie Ihre App in der Berechtigungsfunktion öffnen, können Sie sehen, dass Ihr gespeichertes Detail verweigert wurde, aber jetzt haben Sie die Erlaubnis, für erlaubt umgekehrt.
Aber Problem ist, dass meine App nur einmal geöffnet ist, dann läuft es immer im Hintergrund :( –
- 1. Android Runtime permissions- wie
- 2. Android Runtime Permissions für Standortdienste
- 3. Android Runtime Permissions geben mir Probleme
- 4. Android Permissions Denial
- 5. Android mit Super User Permissions? Erlauben Zugang
- 6. android 6.0 Runtime-Erlaubnis nicht funktionieren
- 7. Bluetooth Location Permissions auf Android 6.0
- 8. GitLab Permissions
- 9. Überprüfen, wenn Benutzer von Einstellungen App iOS
- 10. Runtime - ApplicationPackageManager.getPackageInfo in Android
- 11. Android mehrere Runtime-Erlaubnis in einzelnen Dialog
- 12. XML Deserialization Permissions Fehler
- 13. Android Homescreen-Projekt, Runtime
- 14. Parse.com Runtime Absturz - Android
- 15. Android Marshmallow Runtime-Berechtigungen funktioniert nicht
- 16. Android Runtime-Berechtigung immer verweigert
- 17. Android RunTime Berechtigungen
- 18. Android: Überprüfen, ob der Google-Einstellungen-Standort aktiviert ist
- 19. Python Pickle File Permissions
- 20. Android 6.0 Runtime Erlaubnis + Intent-Filter
- 21. Android Runtime-Standortberechtigung für einen Dienst
- 22. Denying Runtime Permission in Android Marshmallow Crashs App
- 23. Process.Start Permissions Problem
- 24. Android Runtime exec mit NetworkRequest
- 25. AppCompatActivity und Marshmallow Permissions
- 26. iOS KontakteUI Framework Permissions
- 27. DocumentDB Permissions on Collections
- 28. WordPress Synology File Permissions
- 29. Java Applet Permissions
- 30. Android Studio: Android Runtime Fatal Exception
Sie können jederzeit nach der Berechtigung suchen, während der Benutzer Ihre App verwendet. Warum möchten Sie Änderungen an Berechtigungen im Hintergrund erkennen? – Sony