我需要开发一个应用程序,就像Android App Lock一样,当指定的应用程序启动时,会打开密码活动。我已经阅读了下面的问题,但没有找到合适的解决方案。我只想问一下,他们在使用哪种服务或方法?如何知道任何其他应用程序的启动事件?
在我的当前实现中,我添加了一个服务,在MyService中,我添加了一个计时器来检查currentApp,然后我将current app与assigned app进行比较。我不喜欢这种方法,因为计时器会消耗很多电池,而且设备变慢。
在我的当前实现中,我添加了一个服务,在MyService中,我添加了一个计时器来检查currentApp,然后我将current app与assigned app进行比较。我不喜欢这种方法,因为计时器会消耗很多电池,而且设备变慢。
public void isForeground(String myPackage){
String currentApp="";
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
UsageStatsManager usm = (UsageStatsManager) getSystemService("usagestats");
long time = System.currentTimeMillis();
List<UsageStats> appList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY,
time - 1000 * 1000, time);
if (appList != null && appList.size() > 0) {
SortedMap<Long, UsageStats> mySortedMap = new TreeMap<Long, UsageStats>();
for (UsageStats usageStats : appList) {
mySortedMap.put(usageStats.getLastTimeUsed(),
usageStats);
}
if (mySortedMap != null && !mySortedMap.isEmpty()) {
currentApp = mySortedMap.get(
mySortedMap.lastKey()).getPackageName();
}
}
} else {
ActivityManager am = (ActivityManager) getBaseContext().getSystemService(ACTIVITY_SERVICE);
currentApp = am.getRunningTasks(1).get(0).topActivity .getPackageName();
}
processCurrentApp(currentApp,myPackage);
}
有人可以在这方面帮我吗?提前感谢。