2016-04-24 234 views
4

我想檢查用戶是否已批准我的應用程序使用PACKAGE_USAGE_STATS。什麼我目前做的是這樣的:PACKAGE_USAGE_STATS的請求權限

// Control that the required permissions is instantiated! 
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(this, Manifest.permission.PACKAGE_USAGE_STATS) != PackageManager.PERMISSION_GRANTED) { 
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.PACKAGE_USAGE_STATS}, MULTIPLE_PERMISSION_GRANTED); 
} 

我已經實現了requestPermissions作爲Android開發者部分描述和它工作得很好ACCESS_FINE_LOCATION

但是,當我的應用程序要求的權限它只顯示ACCESS_FINE_LOCATION許可,而不是PACKAGE_USAGE_STATS任何人都可以解釋,爲什麼?如果是這樣,給我一個解決辦法,我可以做到這一點?

我想這兩種權限在這樣一個對話框顯示: enter image description here

回答

7

可惜你不能要求PACKAGE_USAGE_STATS在運行時像你這樣一個危險的權限做。用戶需要手動授予通過設置應用許可作爲UsageStatsManagerdocumentation解釋:

此API需要許可 android.permission.PACKAGE_USAGE_STATS,這是一個系統級 權限和將不會被授予到第三方應用程序。但是,聲明權限意味着要使用API​​,設備的用戶 可以通過設置應用程序授予權限。

您可以直接使用此代碼打開Apps with usage access活動:

startActivity(new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS)); 

Here你可以找到一個基本的應用程序,展示瞭如何使用應用程序的使用統計API的例子。

+0

是的,我已經這樣做了。我只是很煩惱我的用戶不得不打開設置應用程序。但謝謝你清理那個。 – Anonymous