Android force stop package

ActivityManager.forceStopPackage () из диспетчера задач

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

Я понимаю, что API ActivityManager.forceStopPackage() является внутренним и может быть вызван только из системного процесса. Тем не менее, меня озадачивает, что встроенное приложение диспетчера задач (с именем пакета com.motorola.PerformanceManager ) на моем телефоне Motorola Motorola может напрямую вызвать его без системного процесса. Есть две вещи, которые я проверил.

Во-первых, это несистемный процесс из команды ps :

Во-вторых, он действительно вызывает API ActivityManager.forceStopPackage() из своего файла odex (декомпилируется в smali, затем в dex, а затем в java). Из кода smali уже ясно, что он вызывает этот API.

Я также проверил его файл AndroidManifest.xml который для меня ничего особенного (форум ошибочно распознает содержимое как URL-адреса и мешает мне публиковать их).

Файл манифеста включает в себя разрешение android.permission.FORCE_STOP_PACKAGES которое должно быть системным. Не-системное приложение все равно получит ошибку отказа в разрешении даже с этим разрешением. Я попытался использовать отражение, чтобы получить доступ к этому API с разрешением android.permission.FORCE_STOP_PACKAGES но все же получить ошибку времени выполнения.

Теперь, как встроенное приложение Task Manager может вызвать внутренний API без системного процесса. Одна из возможностей заключается в том, что приложение подписывается с одним и тем же закрытым ключом платформы. Однако я не уверен, как я могу это проверить. Кроме того, он все еще должен быть системным процессом с дополнительными описаниями в файле манифеста.

Надеюсь, кто-то может ответить на мой вопрос. Благодарю.

Разрешение «android.permission.FORCE_STOP_PACKAGES» защищено сигнатурой платформы.

Если у вас есть исходный код Android, то проверьте декларацию разрешения:

Вы можете видеть, что его уровень защиты является сигнатурой, а затем проверить документацию SDK для объяснения:

«Подпись … Разрешение, которое система предоставляет только в том случае, если запрашивающее приложение подписано с тем же сертификатом, что и приложение, объявившее разрешение. Если сертификаты совпадают, система автоматически предоставляет разрешение без уведомления пользователя или запроса Явное одобрение «

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

Источник

Что означает кнопка «Force stop»?

Когда я иду в, Settings > Applications > Manage Applications > Downloaded я вижу список приложений. Если я выбираю несколько приложений, я вижу активную кнопку «Force stop», но в некоторых приложениях эта кнопка недоступна.

Что это означает? Что произойдет, если я нажму эту кнопку?

Эта кнопка не может означать, что приложение запущено, поскольку приложения с этой кнопкой не указаны в Running разделе.

Могу ли я перечислить только приложения с Force stop активной кнопкой и удалить их?

Версия Android: 3.2

Как сказано в моем комментарии к ответу paco, информация, которую он предоставил, в основном верна: большинство приложений не завершают работу полностью, если вы их оставляете, и ни одно приложение не должно закрываться, если вы покидаете его с помощью кнопки «Домой». Кроме того, в некоторых приложениях работают фоновые службы, которые пользователь не может закрыть.

Теперь в некоторых ситуациях вам нужно остановить приложение (включая его фоновые службы) — например, если вы хотите удалить это приложение (или, в случае системного приложения, его обновления). Вы заметите это, когда кнопка «Force Stop» активна, кнопка «Удалить» (или «Удалить») будет выделена серым цветом, но последняя активируется, когда вы остановили приложение с помощью «Force Stop». (Если обе кнопки выделены серым цветом, вы можете сказать, что это системное приложение, которое вы не можете удалить).

Читайте также:  Delete android apps from computer

Кстати: если кнопка «Force Stop» выделена серым цветом (как вы пометили ее «затемненной»), это означает, что приложение в данный момент не запущено и не запущено ни одной службы (в данный момент).

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

В первой if строке проверяется, является ли какой-либо компонент пакета администратором устройства (т. Е. Проверяется ли он в списке администраторов устройства на странице « Безопасность» приложения « Настройки» ). Если это так, кнопка отключена ( неактивна ), поэтому вы не можете остановить администраторов устройства.

Затем else if проверяет, остановлен ли пакет . Здесь остановлено не просто означает «не работает». Насколько я могу судить, пакет находится в состоянии останова, если вы никогда не запускали из него какой-либо компонент (например, запускаете его из меню), или если вы нажали кнопку принудительной остановки (этот или в диалоговое окно «перестал работать») и больше не запускать какие-либо его компоненты. Если пакет не был остановлен, кнопка включена .

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

Резюме

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

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

Android поддерживает 4 типа приложений в своей памяти. Я не помню, чтобы все, кроме работающего и кэшированного фона, — это два из них . (доступ к кэшированному фону можно получить, нажав кнопку аппаратного меню на вкладке « Запуск » и выбрав всплывающую опцию)

Таким образом, хотя это не может быть видно в запущенных процессах, оно не совсем мертвое.

В основном это должно быть в кэшированных фоновых процессах.

Кроме того, о менеджерах задач. Не рекомендуется использовать их, так как Android жестко запрограммирован для эффективного управления приложениями. Фактически, приложение-убийцы приложений скорее разряжают батарею, так как после того, как программа-убийца убивает приложения, согласно алгоритму Android, они будут запущены. снова! (и приложения занимают больше памяти при запуске, чем в идеальном состоянии), таким образом, это становится циклом и разряжает батарею.

поэтому кнопка принудительного закрытия активна в основном на запущенных и кэшированных процессах и может существовать в очень немногих приложениях, которые находятся в двух других типах процессов!

в других приложениях его серый!

Эта кнопка активна для приложений, которые работают или работают с момента последнего запуска вашего устройства.

Android не убивает приложения полностью, когда вы выходите из него, эта кнопка полностью закрывает приложение и удаляет его из стека (запущенные приложения), также эта кнопка освобождает память, используемую приложением.

Читайте также:  Смена обоев экрана блокировки android

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

В Play Store есть бесплатные приложения-убийцы для автоматического управления памятью вашего устройства.

Источник

Android force stop package

Сообщение отредактировал sasha9182 — 04.02.21, 23:20

Ну же,мне нужна ваша помощь.Я опустил руки и смирился с тем что наши телефоны плохо дружат с градиентами.Ещё service.jar нужно разбирать,и редактировать там classes.dex,чего я не умею.

Сообщение отредактировал Димар — 01.02.16, 10:36

Насчет services.jar и classes.dex посмотри как я делал
а насчет градиента сам ничего толкового не добился.

Сообщение отредактировал sk0t — 20.08.14, 17:56

sk0t,
спасибо,нашел уже,и мне кажется что там не все.хочу заменить цвет текста на кнопке,и он видимо хранится в фреймворке,в файле btn_default.xml.но он не хочет открываться,или я не правильно его вытащил.просто как из архива.
фреймворк не хочет распаковываться.

Сообщение отредактировал 12enie — 28.10.10, 22:35

Сообщение отредактировал sk0t — 29.10.10, 00:12

Извини что не по теме не много, я редактирую LauncherProPlus, всё бы ничего вот только пересобранный файл launcher.xml в папке /res/layout-port/ не даёт лаунчеру запустится вылетая в ФК, может у тебя есть решение проблемы? Был бы очень благодарен!

Сообщение отредактировал Димар — 15.01.16, 20:25

Простые вопросы:
apk подписан?
что менялось в файле?
пересобран означает — разобран с помощью apk-tool, отредактирован, и собран с помощью apk-tool?

ещё по умолчанию собранный файл находится в папка куда распаковывался apk/dist и называется out.apk

Сообщение отредактировал sk0t — 29.10.10, 16:50

java -jar apktool.jar d -s file.apk foldername

tools.zip ( 1.13 КБ )
в архиве три файла
apktool-d.cmd — переносишь на него apk-файл содержащий классы(classes.dex): разбирает его в папку с тем же именем (phone.apk -> phone)
apktool-d-s.cmd — переносишь на него apk-файл не содержащий классы: разбирает его в папку с тем же именем (framework-res.apk -> framework-res)
apktool-b.cmd — переносишь на него папку с отредактированными файлами: собирает её в apk с именем out.apk (framework-res -> framework-res/dist/out.apk)
соответственно apktool.jar должен быть в той же папке.

2 Rang3r
скинь исходный apk и тот который ФК вызывает

PS 2 12enie
открываешь файл framework-res\res\values\styles.xml
ищешь там примерно такое (btn_default)

а здесь уже задается сам цвет
Первые два знака — прозрачность, остальные шесть — цвет в RGB
#ff000000 — ff — непрозрачный, 000000 — черный
можно изменить в любом из файлов

Сообщение отредактировал sk0t — 29.10.10, 20:35

sk0t, скинул в ЛС. Ответить можно и здесь, может кому-нибудь ещё тоже пригодится ответ :happy:

Сообщение отредактировал Rang3r — 29.10.10, 20:59

Источник

Русские Блоги

Использование команды Am

I. Обзор

Как разработчик, я считаю, что команда adb не будет незнакомой. Затем после подключения мобильного телефона к adb многие операции можно выполнять с помощью команды am:

(1) Позвоните по телефону 10086

(2) Откройте сайт www.gityuan.com

(3) ПускActivity: Стартовый пакет называется com.yuanhh.app , Основным видом деятельности является .MainActivity , И дополнительные данные заканчиваются на «website«Это ключ, а« yuanh.com »- это значение. Хотя выполнить эту функцию с помощью кода Java несложно, по крайней мере, требуется среда Android. С adb вам нужно только ввести следующие команды в окне adb:

Команда am также может запускать Service, Broadcast, kill process, monitor и др. Эти функции очень удобны для отладки программы.Далее я расскажу о все более и более подробных функциях am.

Два, команда Am

команда особенности Реализация
am start [options ] > Начать деятельность startActivityAsUser
am startservice > Начать службу startService
am stopservice > Остановить службу stopService
am broadcast > Отправить трансляцию broadcastIntent
am kill

>

Убить указанный фоновый процесс killBackgroundProcesses
am kill-all Убить все фоновые процессы killAllBackgroundProcesses
am force-stop

>

Убить процесс forceStopPackage
am hang Система зависла hang
am restart перезагружать restart
am bug-report Создать отчет об ошибке requestBugReport
am dumpheap

> >

Вывести информацию о куче pid процесса в файл dumpheap
am send-trim-memory

> >

Затяните память процесса setProcessMemoryTrimLevel
am monitor монитор MyActivityController.run

Фактическая реализация команды am находится в Am.java, и она почти всегда вызывается в конце ActivityManagerService Соответствующий метод для завершения, am monitor Кроме. Например, команды, представленные в предыдущем обзоре am start -a android.intent.action.VIEW -d http://gityuan.com , Starting Acitivty, наконец, вызывает метод startActivityAsUser () класса ActivityManagerService для завершения. Другой пример am kill-all Command, окончательная работа по реализации завершается методом killBackgroundProcesses () ActivityManagerService.

Далее поговорим о [options ]с > Смысл параметра и как правильно получить значение.

Три, варианты

3.1 Начало занятия

В основном для запуска команды Activity am start [options] Используйте параметр options, а затем укажите параметр [options] команды Activity:

  • -D: разрешить функцию отладки
  • -W: дождаться запуска приложения
  • -R >: Повторить действие COUNT раз
  • -S: перед запуском действия вызовите метод forceStopPackage (), чтобы принудительно остановить приложение.
  • —Opengl-trace: запустить, чтобы получить трассировку функции OpenGL
  • –user > | Текущий: укажите пользователя для запуска приложения, по умолчанию — текущий пользователь.
  • –start-profiler >: Запустить профилировщик и отправить результат в >;
  • -P >: Аналогично —start-profiler, разница в том, что когда приложение переходит в состояние ожидания, профилирование останавливается.
  • —Sampling INTERVAL: установить временной интервал выборки профилировщика, единицы мс;

Принцип реализации запуска Activity: если есть параметр -W, вызовите метод startActivityAndWait () для запуска, в противном случае startActivityAsUser ().

3.2 Затянуть память

Например: для процесса с pid = 12345 введите команду уплотнения памяти с level = RUNNING_LOW

Тогда диапазон значений уровня: HIDDEN, RUNNING_MODERATE, BACKGROUND, RUNNING_LOW, MODERATE, RUNNING_CRITICAL, COMPLETE.

3.3 Другое

Для подкоманды am можно установить дополнительные параметры startservice, stopservice, broadcast, kill, profile start, profile stop, dumpheap. —user . Большинство мобильных телефонов, представленных в настоящее время на рынке, работают в однопользовательском режиме, поэтому вы можете игнорировать этот параметр и использовать по умолчанию текущего пользователя.

Например: start услуга пользователя.

Четыре, намерение

Существует множество параметров и флагов Intent.Для удобства эта статья разделена на 3 типа параметров: часто используемые параметры, дополнительные параметры и параметры флагов.

4.1 Общие параметры

: Задайте имя пакета и реализуйте принцип Intent.setPackage ();

  • -f : Добавить флаги, принцип реализации Intent.setFlags (int), следующий параметр должен быть типа int;
  • am start -a android.intent.action.VIEW

    am start -n com.yuanhh.app/.MainActivity

    am start -d content://contacts/people/1

    am start -t image/png

    am start -c android.intent.category.APP_CONTACTS

    4.2 Дополнительные параметры

    (1). Основные типы

    параметр -e/-es -esn -ez -ei -el -ef -eu -ecn
    Типы String (String)null boolean int long float uri component

    Например, параметр es является аббревиатурой Extra String. Примеры:

    Вот -es website gityuan.com , Эквивалент Intent.putExtra («веб-сайт», «gityuan.com»);

    параметр -esa -eia -ela -efa
    Тип массива String[] int[] long[] float[]

    Например, параметр eia является аббревиатурой от Extra int array, а несколько значений значений разделяются запятыми. Примеры:

    Вот -ela weekday 1,2,3,4,5 , Эквивалентно Intent.putExtra («будний день», новый int [] <1,2,3,4,5>);

    (3). Тип ArrayList

    параметр -esal -eial -elal -efal
    Тип списка String int long float

    Например, параметр efal является аббревиатурой от Extra float Array List, а несколько значений значений разделяются запятыми. Примеры:

    Вот -efal nums 1.2,2.2 , Эквивалентно созданию сначала переменной ArrayList, а затем помещению второго параметра через putExtra.

    Источник

    Читайте также:  Блокировка экрана двумя касаниями андроид самсунг
    Оцените статью