Android 5.0以後版本開啟“有權檢視使用情況的應用”
阿新 • • 發佈:2019-02-06
前段時間曾做過一個應用鎖的功能,但是在android5.0版本後獲取棧頂應用的方法getRunningTask方法被google給遮蔽掉了,然後在網上各種找資料啊,最後找到一個折中的辦法,使用UsageStatsManager獲取,但是這種獲取方法需要使用者在手機上賦予APP許可權才可以使用,就是在安全-高階-有權檢視使用情況的應用 在這個模組中勾選上指定APP就可以獲取到棧頂的應用名。那麼現在問題來了,如何呼叫系統提供的常量開啟“有權檢視使用許可權的應用”介面。
知道最近才偶然發現 Settings.ACTION_USAGE_ACCESS_SETTINGS 這個常量就是跳轉到介面的值。
找到準確的值來那就好辦了:
首先 根據此常量可以判斷當前裝置中有沒有“有權檢視使用許可權的應用”這個選項,雖說這個選項是android 系統中自帶的,但是現在國內很多廠商ROM眾多,很多都給閹割掉了,例如:小米、魅族只流。
下面上程式碼:
判斷當前裝置中有沒有“有權檢視使用許可權的應用”這個選項
private boolean isNoOption() { PackageManager packageManager = getApplicationContext() .getPackageManager(); Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS); List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; }
判斷呼叫該裝置中“有權檢視使用許可權的應用”這個選項的APP有沒有開啟
然後就是跳轉的程式碼了:<span style="color:#000000;"> private boolean isNoSwitch() { long ts = System.currentTimeMillis(); UsageStatsManager usageStatsManager = (UsageStatsManager) getApplicationContext() .getSystemService("usagestats"); List<UsageStats> queryUsageStats = usageStatsManager.queryUsageStats( UsageStatsManager.INTERVAL_BEST, 0, ts); if (queryUsageStats == null || queryUsageStats.isEmpty()) { return false; } return true; }</span>
<span style="color:#000000;">if (isNoOption()) {
buttonGuide.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(
Settings.ACTION_USAGE_ACCESS_SETTINGS);
startActivity(intent);
}
});</span>
最後 千萬不要忘了新增許可權:
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />
好了,到此結束。