Не удалось найти последнее активное время приложение использовалось - PullRequest
0 голосов
/ 28 мая 2018

Я создал приложение, которое запускает другое приложение под названием 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 не запускается в первый раз, когда я его установил.Кто-нибудь может решить эту проблему

1 Ответ

0 голосов
/ 28 мая 2018

Из примеров Google:

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();} 
...