getRunningTask API
来源:互联网 发布:伯明翰大学 知乎 编辑:程序博客网 时间:2024/06/14 11:08
解决方法1:Is there an alternative for getRunningTask API
String getTopPackage(){ long ts = System.currentTimeMillis(); UsageStatsManager mUsageStatsManager = (UsageStatsManager)getSystemService("usagestats"); List<UsageStats> usageStats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_BEST, ts-1000, ts); if (usageStats == null || usageStats.size() == 0) { return NONE_PKG; } Collections.sort(usageStats, mRecentComp); return usageStats.get(0).getPackageName();}
static class RecentUseComparator implements Comparator<UsageStats> { @Override public int compare(UsageStats lhs, UsageStats rhs) { return (lhs.getLastTimeUsed() > rhs.getLastTimeUsed()) ? -1 : (lhs.getLastTimeUsed() == rhs.getLastTimeUsed()) ? 0 : 1; }}
需要的权限
<uses-permission xmlns:tools="http://schemas.android.com/tools" android:name="android.permission.PACKAGE_USAGE_STATS" tools:ignore="ProtectedPermissions" />
设置界面授权
Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);startActivity(intent);
检查是否申请了权限
public static boolean needPermissionForBlocking(Context context) { try { PackageManager packageManager = context.getPackageManager(); ApplicationInfo applicationInfo = packageManager.getApplicationInfo(context.getPackageName(), 0); AppOpsManager appOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE); int mode = appOpsManager.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS, applicationInfo.uid, applicationInfo.packageName); return (mode != AppOpsManager.MODE_ALLOWED); } catch (PackageManager.NameNotFoundException e) { return true; }}
解决方法2:getRunningTasks doesn’t work in Android L
Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);startActivity(intent); public void getTopActivtyFromLolipopOnwards(){ String topPackageName ; if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { UsageStatsManager mUsageStatsManager = (UsageStatsManager)getSystemService(Context.USAGE_STATS_SERVICE); long time = System.currentTimeMillis(); // We get usage stats for the last 10 seconds List<UsageStats> stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000*10, time); // Sort the stats by the last time used if(stats != null) { SortedMap<Long,UsageStats> mySortedMap = new TreeMap<Long,UsageStats>(); for (UsageStats usageStats : stats) { mySortedMap.put(usageStats.getLastTimeUsed(),usageStats); } if(mySortedMap != null && !mySortedMap.isEmpty()) { topPackageName = mySortedMap.get(mySortedMap.lastKey()).getPackageName(); Log.e("TopPackage Name",topPackageName); } } }}
0 0
- getRunningTask API
- API
- api
- API
- API
- api
- API
- API
- API
- API
- API
- API
- API
- API
- API
- api
- api
- API
- SVN(服务器)安装
- js中的作用域和执行上下文的区别
- ReentrantLock实现原理
- OPENID互信机制及实现方案
- 20个很棒的android开源项目帮助你提升开发技能
- getRunningTask API
- h5 固定底部
- MIPI-DSI
- 题目1143:Primary Arithmetic
- AnnotationWorkflowInterceptor
- Hive扩展功能(九)--Hive的行级更新操作(Update)
- LeetCode
- mysql处理海量数据时的一些优化查询速度方法
- salesforce 零基础学习(六十六)VF页面应善于使用变量和函数(二)常用函数的使用