Ich verwende Intent ACTION_USAGE_ACCESS_SETTINGS
in Einstellung (Settings->Security->Apps with usage access
), um UsageStatsManager
in der Lollipop-Version zu verwenden.Wie wird ACTION_USAGE_ACCESS_SETTINGS Intent geschlossen, wenn der Benutzer auf die richtige Zielanwendung klickt?
public static final int MY_PERMISSIONS_REQUEST_PACKAGE_USAGE_STATS = 1;
if(!hasPermission()){
startActivityForResult(
new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS),
MY_PERMISSIONS_REQUEST_PACKAGE_USAGE_STATS);
}
Zuerst überprüft onCreate() die Berechtigung für die App. und auf der Absicht wenden, wenn die App keine Berechtigung hat (nicht überprüft)
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private boolean hasPermission() {
try {
PackageManager packageManager = getApplicationContext().getPackageManager();
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(getApplicationContext().getPackageName(), 0);
AppOpsManager appOpsManager = (AppOpsManager) getApplicationContext().getSystemService(Context.APP_OPS_SERVICE);
int mode = appOpsManager.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS, applicationInfo.uid, applicationInfo.packageName);
return (mode == AppOpsManager.MODE_ALLOWED);
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}
Meine Frage ist, dass ich das Einstellungsfenster schließen möchten, wenn der Benutzer wählt (Scheck) in Ziel-App, andernfalls wird es Zeige eine Nachricht über den Anwendungsnamen, um den ausgewählten Benutzer zu führen. Wie kann ich es tun? Vielen Dank. Ich denke, es ist in onActivityResult
Funktion tun
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_PERMISSIONS_REQUEST_PACKAGE_USAGE_STATS){
...
}
}
ich den Link verweisen Check if my application has usage access enabled, aber es nur Kontrollen ermöglichen der App.
Schön, aber ich denke nicht, dass dies auf Lollipop 5.0 (AL 21) funktioniert. Nicht wahr? – IlToro