Android 5.0以後版本開啟“有權檢視使用情況的應用”
轉自:http://blog.csdn.net/chaozhung_no_l/article/details/49490401
前段時間曾做過一個應用鎖的功能,但是在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有沒有開啟
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;
}
然後就是跳轉的程式碼了:
if (isNoOption()) {
buttonGuide.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(
Settings.ACTION_USAGE_ACCESS_SETTINGS);
startActivity(intent);
}
});
最後 千萬不要忘了新增許可權:
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />
好了,到此結束。
相關文章
- 如何檢查 Android 應用的記憶體使用情況Android記憶體
- Oracle 索引的使用情況檢視Oracle索引
- 檢視Undo使用情況的SQLSQL
- windows檢視埠占用情況Windows
- 用 bmon 檢視網路頻寬使用情況
- (開發必看)windows檢視埠號使用情況Windows
- linux檢視埠占用情況Linux
- Windows 如何檢視埠占用情況?Windows
- 怎麼檢視埠占用情況?
- DB2檢視索引的使用情況DB2索引
- 檢視空間使用情況的指令碼指令碼
- 檢視Oracle的表空間的使用情況Oracle
- oracle 檢視錶空間使用情況Oracle
- Linux檢視程式埠占用情況Linux
- netstat -anp檢視埠占用情況
- 檢視oracle表空間使用情況Oracle
- SOLARISE檢視記憶體使用情況記憶體
- 使用netstat命令檢視埠的使用情況
- 檢視SQL SERVER表的空間使用情況SQLServer
- CentOS7檢視開放埠命令、檢視埠占用情況和開啟埠命令、殺掉程式等命令教程。CentOS
- 看下Linux 如何檢視埠占用情況Linux
- 如何檢視Mac埠號以及佔用情況Mac
- sql檢視所有表空間使用情況SQL
- flashbacklog.sql檢視flashback使用情況SQL
- 檢視埠被佔用情況,殺死埠
- 檢視SQL SERVER表的空間使用情況(續)SQLServer
- 轉:Linux檢視GPU資訊和使用情況LinuxGPU
- Linux 伺服器硬碟使用情況檢視Linux伺服器硬碟
- 檢視LINUX程式記憶體佔用情況Linux記憶體
- netstat -ano 檢視機器埠占用情況
- 用命令檢視埠占用情況 netstat -ano
- 檢視mysql資料庫空間使用情況MySql資料庫
- linux下檢視記憶體使用情況Linux記憶體
- 安卓應用對多核心的利用情況安卓
- Linux檢視埠占用情況,並強制釋放佔用的埠Linux
- 查詢表空間使用情況的簡單檢視
- 檢視資料庫中tablespace和datafile的使用情況。資料庫
- 監視index的使用情況Index