2015-09-21 3 views
0

Я оглядывался, пытаясь выяснить способ узнать, сколько времени я трачу на Whatsapp. Я нашел несколько приложений на Playstore:Андроид для отслеживания использования приложений

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

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

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

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

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

+0

Пожалуйста, не добавляйте комментарии для голосования на сообщения. Идеально, если люди объясняют свои downvotes, но они не обязаны, и подавляющее большинство читателей, которые не голосуют, не заинтересованы в этом обсуждении. Вместо этого добавьте комментарий, если вы хотите ':-)'. – halfer

+0

Утверждение о том, что использование приложений для мониторинга использования пользователями других приложений может быть нарушением конфиденциальности, не столь надуманно. Разумеется, это нормально, если вы явно хотите, чтобы приложение вело себя так, но большинство людей не знают, какие разрешения имеют каждое приложение, или же приложения используют разрешения, которые они имеют в соответствии с рекомендациями, которые Google изложил. – halfer

ответ

2

Да, 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

How to use UsageStatsManager?

+2

Это только для устройств '> = lollipop'. Как насчет пре-** lollipop ** устройств? –

0

В Lollipop есть новый API, называемый Usage Stats API, который позволяет приложению отслеживать именно ту информацию, которую вы ищете.

Уловка заключается в том, что для его использования требуется разрешение, которое может быть предоставлено только в результате действия системы, а не в манифесте. В документах указано, что системная активность может отсутствовать на всех устройствах. Samsung и LG относятся к числу производителей, которые, как известно, удалили активность из своих сборок, поэтому только системные приложения когда-либо смогут использовать API статистики использования на своих устройствах.

 Смежные вопросы

  • Нет связанных вопросов^_^