lag*_*age 7 android usage-statistics android-recents android-5.0-lollipop
自Android Lollipop以来,我们现在拥有一个用于访问应用使用情况统计数据的API.但是,您的应用必须由用户授予这些权限.
我知道使用Settings.ACTION_USAGE_ACCESS_SETTINGS将用户重定向到这些设置.
现在,我的问题是您如何知道用户已授予您这些权限,以便您可以停止将其重定向到设置.
谢谢!
小智 7
您可以简单地使用每日间隔和结束时间查询当前时间的使用状态,如果没有返回任何内容,则表示用户未授予权限
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public boolean doIHavePermission(){
final UsageStatsManager usageStatsManager = (UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE);
final List<UsageStats> queryUsageStats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, 0, System.currentTimeMillis());
return !queryUsageStats.isEmpty();
}
Run Code Online (Sandbox Code Playgroud)
具有开始日期0和结束日期的每日间隔当前时间必须至少返回今天的使用情况.因此,仅当未授予权限时,它才会为空.
检查这个答案: Tomik的回答
如果你快点,这是解决方案;)
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public static boolean usageAccessGranted(Context context) {
AppOpsManager appOps = (AppOpsManager)context.getSystemService(Context.APP_OPS_SERVICE);
int mode = appOps.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS,
android.os.Process.myUid(), context.getPackageName());
return mode == AppOpsManager.MODE_ALLOWED;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10830 次 |
| 最近记录: |