android 访问权限,Android 使用情况访问权限
問題描述
添加了使用情況訪問權限,如果不開啟權限就不讓進去,但是發現如果不開啟,直接點擊返回的話,會再次進入頁面但是下面的列表數據不出現
問題出現的環境背景及自己嘗試過哪些方法
第一次出現(進軟件的時候是可以的),但是點擊返回之后就一直轉圈
點擊返回的時候,打了個這個
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;
}
你期待的結果是什么?實際看到的錯誤信息又是什么?
用戶點擊返回后,刷新能夠顯示正常。
總結
以上是生活随笔為你收集整理的android 访问权限,Android 使用情况访问权限的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全球首款!华为P60系列再次捅破天:首发
- 下一篇: 日本航空宣布将采购21架波音737-8飞