Фильтры намерений Android

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

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

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

Итак, мой вопрос: существуют ли какие-либо действия для запуска приложения?

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

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


person Akriti Upreti    schedule 12.03.2015    source источник
comment
Эй, ты что-то отвечаешь или спрашиваешь? Не очистил...   -  person Rohit Goswami    schedule 12.03.2015
comment
Я предложил решение, о котором думал.   -  person Akriti Upreti    schedule 12.03.2015
comment
Да, вы можете отслеживать установленное приложение, как вы можете получить подробную информацию обо всех установленных приложениях ... об использовании их оперативной памяти, дате установки, дате последнего обновления, и вы также можете открыть это приложение из своего приложения, вы также можете убить их фоновый процесс и многое другое. больше .... Но если вы хотите активировать какой-либо сигнал тревоги, когда одно из установленных приложений открывается, то в этом случае вы не можете этого сделать ... потому что другие установленные приложения не используют свои фильтры намерений ....   -  person Rohit Goswami    schedule 12.03.2015


Ответы (1)


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

// 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.

person Swapnil Bhoite    schedule 12.03.2015
comment
Спасибо за руководство. Я начну работать над этой линией. ! - person Akriti Upreti; 14.03.2015