Я использую Intent ACTION_USAGE_ACCESS_SETTINGS
в настройке (Settings->Security->Apps with usage access
), чтобы использовать UsageStatsManager
в версии Lollipop.Как закрыть ACTION_USAGE_ACCESS_SETTINGS, когда пользователь нажимает правильное целевое приложение?
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);
}
Во-первых, onCreate() проверит разрешение для приложения. и включите Intent, если приложение не имеет разрешения (не проверять)
@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;
}
}
Мой вопрос заключается в том, что я хочу, чтобы закрыть окно настроек, если пользователь выбирает (чек) в целевом приложении, в противном случае, он будет покажите сообщение о названии приложения для указания выбранного пользователя. Как мне это сделать? Спасибо. Я думаю, что он будет делать в onActivityResult
функции
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_PERMISSIONS_REQUEST_PACKAGE_USAGE_STATS){
...
}
}
Я имею в виду ссылку Check if my application has usage access enabled, но он просто проверяет, включите приложения.
Ничего, но я не думаю, что это работает на Lollipop 5.0 (AL 21). Не так ли? – IlToro