android - 无法找到上次使用该应用程序的活动时间
问题描述
我已经构建了一个应用程序,它启动另一个名为 WazeApp 的应用程序,这样如果 Waze 应用程序的最后活动时间大于 5 分钟,那么我将启动该应用程序,否则我不会。
这是方法:
/**
* return true if waze was running before 5 Minutes
* @param context
* @return
*/
private static boolean wasWazeRunningBefore5Minutes(Context context) {
long current = System.currentTimeMillis();
long fiveMinuteBeforeMillis = current - TimeUnit.SECONDS.toMillis(TIME_INTERVAL);//TIME_INTERVAL=5*60 sec
UsageStatsManager usageStatsManager = (UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE);
List<UsageStats> stats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, fiveMinuteBeforeMillis, current);
for (UsageStats stat : stats) {
if (stat.getPackageName().equals(WAZE_PACKAGE_NAME)) {
long lastTimeUsed = stat.getLastTimeUsed();
Log.d(TAG, "last time used: " + DateFormat.format("dd/MM/yyyy, hh:mm:ss", new Date(lastTimeUsed)));
long gap = TimeUnit.MILLISECONDS.toSeconds(current - lastTimeUsed);
if (gap > TIME_INTERVAL) {
return true;
}
Log.d(TAG, "app open gap: " + gap + " sec");
break;
}
}
return false;
}
但我的 WazeApp 在我第一次安装时没有启动。任何人都可以解决这个问题
解决方案
来自谷歌的例子:
https://github.com/googlesamples/android-AppUsageStatistics
public List<UsageStats> getUsageStatistics(int intervalType) {
// Get the app statistics since one year ago from the current time.
Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR, -1);
List<UsageStats> queryUsageStats = mUsageStatsManager
.queryUsageStats(intervalType, cal.getTimeInMillis(),
System.currentTimeMillis());
if (queryUsageStats.size() == 0) {
Log.i(TAG, "The user may not allow the access to apps usage. ");
Toast.makeText(getActivity(),
getString(R.string.explanation_access_to_appusage_is_not_enabled),
Toast.LENGTH_LONG).show();
mOpenUsageSettingButton.setVisibility(View.VISIBLE);
mOpenUsageSettingButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS));
}
});
}
return queryUsageStats;
}
他们可以使用这个:
http://developer.android.com/intl/es/reference/android/app/usage/UsageStats.html#getLastTimeUsed()
if( mUsageStats.getPackageName().equals("YOUR PACKAGE NAME")){
mUsageStats.getLastTimeUsed();}
推荐阅读
- r - r tidyverse - 计算具有相同名称的多个列的平均值
- jquery - AJAX 响应未显示在页面上
- html - 覆盖:svg 移动覆盖 div,它们不再匹配
- javascript - 隐藏和显示输入 - 动态表单 Yii2
- node.js - Node.js puppeteer - 获取所需的值不起作用(td:nth-child(n)
- r - 工作一小时后闪亮的“与服务器断开连接”就好了
- hyperledger-composer - Composer 运行时 (0.19.13) 与客户端 (0.20.0) 不兼容
- gun - 如何在没有订阅功能的情况下获取地图?
- c++ - 如何像在 javascript 中一样“推送”c++ 映射
- android - 更换自身后自动重启安卓应用