问题描述
添加了使用情况访问权限,如果不开启权限就不让进去,但是发现如果不开启,直接点击返回的话,会再次进入页面但是下面的列表数据不出现
问题出现的环境背景及自己尝试过哪些方法
第一次出现(进软件的时候是可以的),但是点击返回之后就一直转圈
点击返回的时候,打了个这个
I/Timeline: Timeline: Activity_launch_request time:45233510 intent:Intent { act=android.settings.USAGE_ACCESS_SETTINGS }
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
private static final int MY_PERMISSIONS_REQUEST_PACKAGE_USAGE_STATS = 1101;
//判断应用是否有读取应用列表权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (!hasPermission()) {
startActivityForResult(
new Intent(android.provider.Settings.ACTION_USAGE_ACCESS_SETTINGS),
MY_PERMISSIONS_REQUEST_PACKAGE_USAGE_STATS);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//若用户未开启权限,则引导用户开启“Apps with usage access”权限
try {
if (requestCode == MY_PERMISSIONS_REQUEST_PACKAGE_USAGE_STATS) {
if (!hasPermission()) {
startActivityForResult(new Intent(android.provider.Settings.ACTION_USAGE_ACCESS_SETTINGS), MY_PERMISSIONS_REQUEST_PACKAGE_USAGE_STATS);
}
}
} catch (Exception e) {
Log.i("e", "e:" + e);
}
}
//检测用户是否对本app开启了“Apps with usage access”权限
private boolean hasPermission() {
AppOpsManager appOpsM = (AppOpsManager)
getSystemService(Context.APP_OPS_SERVICE);
int mode = 0;
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
mode = appOpsM.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS,
android.os.Process.myUid(), getPackageName());
}
return mode == AppOpsManager.MODE_ALLOWED;
}
你期待的结果是什么?实际看到的错误信息又是什么?
用户点击返回后,刷新能够显示正常。