Я использую Intent ACTION_USAGE_ACCESS_SETTINGS
в настройке (Settings->Security->Apps with usage access
) для использования UsageStatsManager
в версии Lollipop.
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() проверяет разрешение для приложения. и включите намерение, если приложение не имеет разрешения (не проверяет)
@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
function
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_PERMISSIONS_REQUEST_PACKAGE_USAGE_STATS){
...
}
}
Я ссылаюсь на ссылку Проверить, включено ли у моего приложения доступ к использованию, но он просто проверяет разрешение приложения.