QUERY_ALL_PACKAGES パーミッションには通常の保護レベルがあるため、追加しても例外はスローされません。
この許可を強制する方法はqueryUsageStats
、UsageStatsManager
インスタンスを呼び出すことです。空のリストが返された場合は、電話の設定で使用状況データへのアクセスを有効にするようユーザーに通知します。
private fun requestPackagePermission() {
val stats: List<UsageStats> = usageStatsManager
.queryUsageStats(
UsageStatsManager.INTERVAL_BEST,
0,
System.currentTimeMillis()
)
val isEmpty = stats.isEmpty()
if (isEmpty) {
// notify user before opening app settings
startActivity(Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS))
} else {
// carry out your work
}
}
アクティビティまたはフラグメントでこのメソッドを呼び出しonResume()
て、Usage Data Access がオンになり、ユーザーがアプリに戻ったときに、変更を確認するためにメソッドが再度呼び出されるようにします。