Я пытаюсь создать службу, которая проверяет текущее приложение переднего плана, и выполнить задачу (сменить губернатора).У меня есть основное действие, и я хочу управлять включением / выключением сервиса с его помощью.
Класс обслуживания:
@Override
protected void onHandleIntent(Intent intent) {
Log.i(TAG, "Service started");
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
ActivityManager.RunningTaskInfo foregroundTaskInfo = am.getRunningTasks(1).get(0);
// to get the current foreground app
String foregroundTaskPackageName = foregroundTaskInfo.topActivity.getPackageName();
PackageManager pm = this.getPackageManager();
try{
PackageInfo foregroundAppPackageInfo = pm.getPackageInfo(foregroundTaskPackageName, 0);
String foregroundTaskAppName = foregroundAppPackageInfo.applicationInfo.loadLabel(pm).toString();
Log.i(TAG,foregroundTaskAppName);
}catch (Exception e) {
}
}
В настоящее время он возвращает только приложение основного действия, икогда я нажимаю домой и открываю другое приложение, ничего не возвращается.Я не уверен, какой тип услуги будет более подходящим для такой задачи?Должен ли сервис быть в каком-то цикле?Я также пытался поиграть с использованием обычных сервисов и вызывать поток, но я думаю, что на самом деле я создаю больше потоков каждый раз, когда нажимаю «вкл», чтобы запустить свой сервис в своей основной деятельности.
Main:
@Override
public void onClick(View v) {
// default method for handling onClick Events..
// doesn't include show notification button --> done by OnClick of the button
Intent serviceIntent = new Intent(this,GS_Service.class);
switch (v.getId()) {
case R.id.onService:
startService(serviceIntent);
break;
case R.id.offService:
stopService(serviceIntent);
break;