2015-03-12 3 views
0

Мне нужно приложение для мониторинга установленного приложения на устройстве Android, а также получить информацию о приложениях, запущенных на переднем плане. два возможных решения я могу думать о том, являются:Android Intent Filters

1.Defining в липкую службу и постоянно проверяя, какое приложение используется бы один вариант, но это будет потреблять много батареи.

2. Другой возможный метод, о котором я думал, может быть реализован приемником вещания . Мы можем установить фильтр-застройку для таких действий, как SET_ALARM и RECEIVE и т. Д. Android предоставил действия для каждого возможного события, такого как отправка сообщения или получение голосовой почты.

Так что мой вопрос делает любое действие существует для запуска приложения?

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

Может ли кто-нибудь помочь или предоставить альтернативное решение?

+0

Эй, ответив на что-то или допросив? Не поняли ... –

+0

Я представил решение, о котором я думал. –

+0

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

ответ

0

Да, я думаю, нет возможности зарегистрировать широковещательный приемник для обнаружения запуска приложения. Одним из пути может быть (по аналогии с вашим предложением):

// TO GET INSTALLED APPS 
Intent intent = new Intent(Intent.ACTION_MAIN, null); 
intent.addCategory(Intent.CATEGORY_LAUNCHER); 
List<ResolveInfo> packageList = getPackageManager().queryIntentActivities(intent, 0); 
for (ResolveInfo resolveInfo : packageList) { 
    Log.d("ResolveInfo", "Package: " + resolveInfo.activityInfo.packageName); 
} 

// TO GET INFO OF RUNNING PROCESSES 
ActivityManager activityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE); 
List<RunningAppProcessInfo> runningAppProcessInfos = activityManager.getRunningAppProcesses(); 
for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcessInfos) { 
    Log.d("runningAppProcessInfo", "Running process name: " + runningAppProcessInfo.processName); 
} 

и опрашивать статус приложений, которые вы заинтересованы в с Service.

+0

Благодарим вас за руководство. Я начну работать над этой линией. ! –