Как узнать продолжительность использования приложения (Whats App)?

Я искал способ узнать, сколько времени я провожу в Whatsapp. Я нашел пару приложений в Play Market:

https://play.google.com/store/apps/details?id=com.agrvaibhav.AppUsageTracking&hl=en

Размер таких приложений составляет менее 1 МБ, поэтому я предполагаю, что это довольно простой фрагмент кода, но я нигде не могу найти способ.

Все ссылки либо дают мне знать, как часто используется мое собственное приложение, либо говорят, что это возможное вторжение в частную жизнь [странно!].

Код * # * # 7 8 6 # * # * якобы должен работать, но каждый раз вылетает.

Я много искал и нигде не могу найти решение. Я придумал один из возможных способов — запустить службу, которая отслеживает все открытые приложения, но я не уверен, что это возможно в Android.


person Rishabh Bhardwaj    schedule 21.09.2015    source источник
comment
Пожалуйста, не добавляйте комментарии для голосования к сообщениям. Идеально, если люди объясняют свои отрицательные голоса, но они не обязаны, и подавляющее большинство читателей, которые не голосуют, не заинтересованы в этом обсуждении. Вместо этого добавьте комментарий, если хотите :-).   -  person halfer    schedule 21.09.2015
comment
Заявление о том, что предоставление приложениям возможности отслеживать использование пользователем других приложений может быть нарушением конфиденциальности, не так уж надуманно. Это, конечно, хорошо, если вы явно хотите, чтобы приложение вело себя таким образом, но большинство людей не знают, какие разрешения есть у каждого приложения, или используют ли приложения разрешения, которые у них есть, в духе руководящих принципов, изложенных Google.   -  person halfer    schedule 21.09.2015
comment
эта библиотека делает именно то, что вам нужно, а также другие дополнительные функции.   -  person bhanu kaushik    schedule 14.05.2019


Ответы (3)


Да, Usage Stats API — это ответ. Сначала я пытался понять это, но, наконец, мне это удалось.

Требуемое разрешение:

<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />

Код для получения информации об использовании приложения:

 final UsageStatsManager usageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE);// Context.USAGE_STATS_SERVICE);
            Calendar beginCal = Calendar.getInstance();
            beginCal.set(Calendar.DAY_OF_MONTH, 11);
            beginCal.set(Calendar.MONTH, 10);
            beginCal.set(Calendar.YEAR, 2015);

            Calendar endCal = Calendar.getInstance();
            endCal.set(Calendar.DAY_OF_MONTH, 12);
            endCal.set(Calendar.MONTH, 10);
            endCal.set(Calendar.YEAR, 2015);

final List<UsageStats> queryUsageStats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, beginCal.getTimeInMillis(), endCal.getTimeInMillis());
System.out.println("results for " + beginCal.getTime().toGMTString() + " - " + endCal.getTime().toGMTString());
for (UsageStats app : queryUsageStats) {
    System.out.println(app.getPackageName() + " | " + (float) (app.getTotalTimeInForeground() / 1000));
}

Откройте разрешения, используя:

Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
startActivity(intent);

Этот вопрос помог во всем разобраться. Лучшая документация на веб-сайте Android очень помогла бы.

Вот пара ссылок, которые мне помогли:

https://github.com/googlesamples/android-AppUsageStatistics

Как использовать UsageStatsManager?

person Rishabh Bhardwaj    schedule 12.11.2015
comment
Это только для >=lollipop устройств. А как насчет устройств до lollipop? - person b devloper; 16.06.2017
comment
Я хочу отслеживать Facebook, WhatsApp, Instagram и поиск Google. Удалось ли вам отслеживать Whatsapp с помощью UsageStats? Вы меняли какие-либо настройки в своем устройстве или даже в AVD? Когда открывается действие настроек доступа к использованию, я не вижу ни одного из перечисленных приложений. Очень немногие приложения получают список, и есть возможность перечислить системные приложения, но это не те приложения, которые я отслеживаю. - person Meenohara; 20.08.2019

Вы можете увидеть больше подобных приложений, которые определяют использование вами приложений в течение всей недели.

Отслеживание времени — отслеживание использования приложений

Однако при использовании этого приложения я обнаружил, что оно не запускает никаких фоновых служб (проверено с помощью запущенных служб). Таким образом, это должно быть использование статистики использования, которая на самом деле является встроенным механизмом, предлагаемым Android, который сам отслеживает ваши мобильные действия ежедневно, ежемесячно и ежегодно. Поэтому все, что вам нужно, это использовать эту функцию, получить все данные и представить их вашему пользователю.

https://developer.android.com/reference/android/app/usage/UsageStatsManager#queryUsageStats(int,%20long,%20long)

В то время как для устройств Pre-lollipop вам может потребоваться запустить фоновую службу, чтобы отслеживать активность пользователя.

person Asim    schedule 24.09.2018