Android: приложение Killing (все) переднего плана работает

1

Я ищу способ убить приложение Dalvik для Android (активно работает) из ядра linux (используя его идентификатор процесса)?

Как я могу это достичь? есть идеи? Ядро видит pid запущенного приложения?

Как, например, диспетчер процессов/диспетчер задач в Android?

Любые вести?

Отредактировано:

Проблема, которую я ищу, - это способ убить приложение, которое "ведет себя иначе, чем предполагалось".

Это "различное поведение" всегда фиксируется. Подумайте, как отправить сообщение на конкретный порт.

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

  • 1
    Я обнаружил, что можно использовать android.os.Process.killProcess (). Однако задача на использование должна иметь специальные разрешения. У кого есть это специальное разрешение? Как мне этого добиться?
  • 0
    Вы не можете получить такое разрешение на устройстве без рута, если у вас нет сертификата платформы поставщика для подписи вашего кода.
Показать ещё 6 комментариев
Теги:
linux-kernel

1 ответ

3

Это вызовет все запущенные процессы и убьет их с указанным pid:

ArrayList<Integer> pids = new ArrayList<Integer>();
ActivityManager  manager = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> listOfProcesses = manager.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo process : listOfProcesses)
{
    if (pids.contains(process.pid))
    {
        // Ends the app
        manager.restartPackage(process.processName);
    }
}

Для этого вам понадобятся следующие разрешения:

<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.RESTART_PACKAGES"/>
  • 0
    @ Араш.А: Круто. Оно работает. Но как я могу убить только приложение переднего плана. Как я буду определять (из-за пределов приложения) тот, который активен? На данный момент этот кусок кода является частью кода моего приложения. Но теперь я хочу убить pid моего приложения (который находится на переднем плане) снаружи ... скажем, этот кусок должен быть добавлен в диспетчер задач или что-то в этом роде. Где / какой код диспетчера задач в Android?
  • 0
    Если вы хотите завершить только свое приложение, вы можете поместить оператор if в цикл for, который определяет, совпадает ли process.processName с именем процесса вашего приложения. Если вы знаете pid своего приложения, вы можете сравнить его с process.pid, чтобы убедиться, что он совпадает. После того, как вы определили, какой запущенный процесс является вашим, вы вызываете manager.restartPackage (process.processName), чтобы завершить приложение.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню