Русские Блоги
Настройка запуска Android — установите свой собственный apk в качестве элемента запуска (домой)
Настройка запуска Android — установите свой собственный apk в качестве элемента запуска (домой)
Каталог статей
- Настройка запуска Android — установите свой собственный apk в качестве элемента запуска (домой)
- 1. Description
- 2. Analysis
- 3. solution
- 4. summary
1. Description
- download mmi version ->should go into the mmitest interface
- mmitest, apk для тестирования аппаратного обеспечения устройства, в основном проверяет качество аппаратного обеспечения устройства.
- Версия mmi по сравнению с обычной версией (версия cu), версия mmi должна запускать аппаратный тест apk mmitest сразу после включения загрузки, а версия mmi в основном используется для проверки оборудования устройства после компиляции. По сравнению с версией cu, за исключением необходимых служб и некоторых модулей , Некоторые ненужные сервисные модули устанавливать не нужно.
- В реализации предыдущей версии mmi, mmitest apk получит загрузочную трансляцию после завершения загрузки android.intent.action.BOOT_COMPLETED Осознать самозапускающуюся логику.
- Но на самом деле последовательность запуска заключается в том, чтобы запустить mmitest apk после запуска интерфейса запуска, и между ними будет промежуток времени.
Expect:
Тестирующая программа Mytest для Google classroom
- Если это версия mmi, запустите mmitest apk как пусковую установку
- Если это обычная версия (версия cu), оставьте ее как есть (по умолчанию laucher apk используется в качестве элемента запуска, а mmitest apk используется как сторонний apk и скрывает журнал)
2. Analysis
Процесс запуска лаунчера примерно следующий:
Created with Raphaël 2.2.0
startHomeActivityLocked(int userId, String reason):ActivityManagerService.java
resolveActivityInfo(Intent intent, int flags, int userId):ActivityManagerService.java
chooseBestActivity(intent, resolvedType, flags, query, userId):PackageManagerService.java
Запись для запуска действия — это метод startHomeActivityLocked, но выбор между многими действиями выполняется в методе chooseBestActivity. Этот метод:
- Сначала судите, если есть только один apk запуска, просто верните его в метод startHomeActivityLocked и дайте ему запуститься.
- Если есть несколько пусковых установок apk, получите пусковую установку по умолчанию, установленную пользователем в настройках, путь к файлу предпочтений — /data/system/users/0/package-restrictions.xml , Можно посмотреть после рута.
- Если пользователь не установил предпочтительное действие, запустите ResolverActivity, который позволит пользователю установить предпочтения.
Возвращаясь к этому вопросу, есть четыре основных способа настроить mmitest apk на laucher:
- Удаляем лаунчер apk системы
Просто добавьте тег на главный экран в androidManifest.xml в mmitest apk Позже apk будет запускаться как лаунчер при запуске. Однако, поскольку программа запуска по умолчанию в системе также имеет эти две метки, после включения устройства система спросит у пользователя, какой apk использовать в качестве средства запуска. Конкретная логика следующая.
private ResolveInfo chooseBestActivity(Intent intent, String resolvedType, int flags, List query, int userId) < if (query != null) < final int N = query.size(); if (N == 1) < return query.get (0); / * Если в List есть только один, его не нужно выбирать * / > else if (N > 1) < final boolean debug = ((intent.getFlags() // If there is more than one activity with the same priority, // then let the user decide between them. ResolveInfo r0 = query.get(0); ResolveInfo r1 = query.get(1); if (DEBUG_INTENT_MATCHING || debug) < Slog.v(TAG, r0.activityInfo.name + «=» + r0.priority + » vs » + r1.activityInfo.name + «=» + r1.priority); >// If the first activity has a higher priority, or a different // default, then it is always desirable to pick it. if (r0.priority != r1.priority || r0.preferredOrder != r1.preferredOrder || r0.isDefault != r1.isDefault) < return query.get(0); >// If we have saved a preference for a preferred activity for // this Intent, use that. ResolveInfo ri = findPreferredActivity (intent, resolvedType, / * здесь, чтобы запросить настройки пользователя, если в случае нескольких программ запуска, пользователь ранее выбрал apk в качестве средства запуска по умолчанию, тогда apk будет возвращен напрямую * / flags, query, r0.priority, true, false, debug, userId); if (ri != null) < return ri; >// If we have an ephemeral app, use it for (int i = 0; i < N; i++) < ri = query.get(i); if (ri.activityInfo.applicationInfo.isInstantApp()) < final String packageName = ri.activityInfo.packageName; final PackageSetting ps = mSettings.mPackages.get(packageName); final long packedStatus = getDomainVerificationStatusLPr(ps, userId); final int status = (int)(packedStatus >> 32); if (status != INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK) < return ri; >> > ri = new ResolveInfo(mResolveInfo); ri.activityInfo = new ActivityInfo(ri.activityInfo); ri.activityInfo.labelRes = ResolverActivity.getLabelRes(intent.getAction()); // If all of the options come from the same package, show the application’s // label and icon instead of the generic resolver’s. // Some calls like Intent.resolveActivityInfo query the ResolveInfo from here // and then throw away the ResolveInfo itself, meaning that the caller loses // the resolvePackageName. Therefore the activityInfo.labelRes above provides // a fallback for this case; we only set the target package’s resources on // the ResolveInfo, not the ActivityInfo. final String intentPackage = intent.getPackage(); if (!TextUtils.isEmpty(intentPackage) allHavePackage(query, intentPackage)) < final ApplicationInfo appi = query.get(0).activityInfo.applicationInfo; ri.resolvePackageName = intentPackage; if (userNeedsBadging(userId)) < ri.noResourceId = true; >else < ri.icon = appi.icon; >ri.iconResourceId = appi.icon; ri.labelRes = appi.labelRes; > ri.activityInfo.applicationInfo = new ApplicationInfo( ri.activityInfo.applicationInfo); if (userId != 0) < ri.activityInfo.applicationInfo.uid = UserHandle.getUid(userId, UserHandle.getAppId(ri.activityInfo.applicationInfo.uid)); >// Make sure that the resolver is displayable in car mode if (ri.activityInfo.metaData == null) ri.activityInfo.metaData = new Bundle(); ri.activityInfo.metaData.putBoolean(Intent.METADATA_DOCK_HOME, true); return ri; / * Если предыдущая логика не определяет подходящее действие, оно вернется к com.android.internal.app.ResolverActivity, который отобразит интерфейс настройки предпочтений и предоставит пользователю выбор * / > > return null; >
Поскольку mmitest apk должен быть установлен в качестве средства запуска по умолчанию, я не хочу, чтобы это поле выбора появлялось после загрузки. Самый простой способ — удалить apk lancher из системы, чтобы только у mmitest apk была метка после загрузки системы , По умолчанию запускается как ланчер без всплывающих окон.
Однако этот подход по-прежнему не решает текущую проблему. Если это обычная версия (версия cu), вероятно, после компиляции нет средства запуска. Если это обычная версия (версия cu), Сохраняйте тот же спрос. Конечно, вы можете сделать вывод в файле mkaefile, то есть, если текущая компиляция является версией cu, в компиляцию будет добавлен laucher apk по умолчанию, иначе laucher apk не будет участвовать в компиляции.
Несмотря на то, что эта модификация может сохранить версию cu с установленным по умолчанию apk для запуска, она все равно возвращается к исходному вопросу. После запуска система спросит пользователя, какой apk он ожидает в качестве средства запуска.
- Изменить приоритет фильтра намерений
Справочный блогПлатформа Android использует настраиваемое действие для замены интерфейса Launcher по умолчанию.Как описано, когда AMS запускает программу запуска, она будет запрашивать у PMS компоненты с тегом CATEGORY с помощью метода resolveActivityInfo. Когда несколько компонентов удовлетворяют условиям, они будут выбраны в соответствии со значением приоритета, и будет выбран тот, который имеет наибольшее значение приоритета. , Когда есть несколько компонентов с одинаковым приоритетом, пользователю будет предложено сделать выбор.
Итак, при изменении тега androidManifest.xml в apk-файле mmitest измените метод adjustPriority файла PackageManagerService.java. Если обнаружено, что имя пакета ApplicationInfo — mmitest, а текущая версия — версия mmi, установите его вручную. Приоритет фильтра намерений основной экранной активности mmitest — большее значение, в противном случае он устанавливается на меньшее значение.Этот метод не валидирован
-
*
- The priority for non privileged applications is capped to ‘0’ *
- The priority for protected actions on privileged applications is capped to ‘0’ *
- The priority for unbundled updates to privileged applications is capped to the * priority defined on the system partition *
- Изменить настройки
Когда в системе есть несколько файлов apks с тегами В это время система будет активно спрашивать пользователя, какой apk выбрать в качестве средства запуска, то есть устанавливать предпочтения пользователя.
Если это версия mmi, измените здесь логику, удалите логику всплывающего окна и позвольте системе выбрать назначенный apk в качестве средства запуска по умолчанию, тогда требования этого вопроса могут быть выполнены. Конкретную логику анализа предпочтений можно отнести кAndroid устанавливает одно из нескольких похожих приложений по умолчанию, Чтобы решить эту проблему, вы можете установить указанное действие в настройках предпочтений, когда метод chooseBestActivity выполняет наилучшее сопоставление действий. Интерфейс реализации кода для этой операции addPreferredActivity(IntentFilter filter, int match,ComponentName[] set, ComponentName activity, int userId) - Измените системную метку запуска лаучера по умолчанию
СсылкаПусть ваш собственный Android Launcher станет первым лаунчером в системе и единственным лаунчеромНа практике создайте опцию частного фильтра, и пусть она будет опцией фильтра системного ланчера. Затем добавьте частную метку на главный экран в androidManifest.xml в mmitest apk. Этот метод изменяет начальную метку средства запуска из уровня фреймворка, а исходный Он не будет использоваться в качестве метки запуска системы.Этот подход не является большой модификацией системы, но этот подход также не применим к этой проблеме.
3. solution
Конкретные модификации заключаются в следующем:
- Изменить файл services/core/java/com/android/server/pm/PackageManagerService.java
private void setTargetActivityAsPreferredActivity (Intent intent, List query, int userId) bestMatch) bestMatch = r.match; if («/ * имя целевого пакета * /». equals (r.activityInfo.packageName)) < componentName=set[i]; >> IntentFilter filter = new IntentFilter(); if (intent.getAction() != null) < filter.addAction(intent.getAction()); >Set categories = intent.getCategories(); if (categories != null) < for (String cat : categories) < filter.addCategory(cat); >> filter.addCategory(Intent.CATEGORY_DEFAULT); if(null!=componentName) < addPreferredActivity(filter, bestMatch,set,componentName,userId); >> > private ResolveInfo chooseBestActivity(Intent intent, String resolvedType,int flags, List query, int userId) < if (query != null) < final int N = query.size(); if (N == 1) < return query.get(0); >else if (N > 1) < setTargetActivityAsPreferredActivity (intent, query, userId); / * Здесь вызываем только что добавленный метод * / final boolean debug = ((intent.getFlags() // If there is more than one activity with the same priority, // then let the user decide between them. / * Здесь опущено * / >
- Изменить целевой apk
Поскольку я хочу, чтобы версия cu сохраняла apk пусковой установки в качестве системной пусковой установки, а версия mmi использует mmitest apk в качестве пусковой установки, она не может быть включена в версию cu из mmitest apk , Всем необходимо подготовить разные AndroidManifest.xml для двух версий, конкретная конфигурация может быть следующей в make-файле сценария компиляции:
ifeq ($ (/ * ID версии * /), true) $ else $ endif .PHONY: $(LOCAL_PATH)/AndroidManifest.xml $(LOCAL_PATH)/AndroidManifest.xml: LOCAL_MANIFEST_FILE := ./AndroidManifest.xml
Затем подготовьте 2 копии AndroidManifest.xml, а именно AndroidManifest_mmi.xml и ./AndroidManifest_cu.xml. И ./AndroidManifest_cu.xml — это исходный файл AndroidManifest.xml apk, а ./AndroidManifest_mmi.xml добавляет следующий оператор на основе исходного AndroidManifest.xml:
4. summary
Эта проблема в основном требует понимания процесса запуска лаучера, а затем выяснения того, как система достигает целевой активности. Когда есть несколько одинаковых тегов, как система выбирает лучшее действие? Если вы знаете их, вы можете сознательно заменить его и позволить системе начать нужное действие.
Источник: russianblogs.com
MiMediaEditor на Xiaomi Mi 9: что это за приложение на Андроид?
Многие владельцы современных гаджетов Xiaomi Mi 9 знают, что входит в число приложений, установленных компанией по умолчанию. К примеру, одной из таких утилит является MiMediaEditor, созданная специально для телефонов с операционной системой Андроид. Но не все владеют информацией и не знают про нее, для чего разработчики компании разработали данную утилиту. Давайте рассмотрим, что это такое и для чего она предназначена.
В этой статье:
- Краткая характеристика приложения
- Заключение
Краткая характеристика приложения
Под MiMediaEditor на Xiaomi Mi 9 следует рассматривать специальную утилиту, которая создана специально для просмотра видео. Ее основное предназначение заключается в том, чтобы пользователь смог снимать видео на мобильное устройство, которое в дальнейшем будет анализироваться данной программой. На основе полученного анализа она проводит анализ предпочтения владельца мобильного устройства для дальнейшего обновления перечня.
Таким образом, функциональные особенности этого приложения предназначены для просмотра видео. Китайские разработчики стремятся улучшить свой продукт всевозможными характеристиками и функциями, чтобы не было много ненужных приложений и рекламы, а только больше полезных программ, которые не влияют на память устройства и не воздействуют на заряд батареи. Однако многие из них могут существенно повлиять на дополнительную нагрузку мобильного устройства, а также установлены приложения, которые функционируют в Китае, но бесполезны в России.
На наш взгляд, данную программу можно считать полезной, если знать, как можно автоматически настроить режим, который будет уменьшать заряд батареи для просмотра видео. Основное преимущество заключается в том, чтобы не воздействовать на энергию гаджета Xiaomi Mi 9, благодаря чему рассмотренная утилита может быть полезной и востребованной на Андроиде, а пользование гаджетом будет доставлять удовольствие пользователю.
Заключение
Таким образом, MiMediaEditor на Xiaomi Mi 9 –это специальная программа, разработанная китайской компанией для просмотра видео. Многие пользователи спрашивают – можно ли ее удалить, если она не нужна на Андроиде. Она установлена в телефоне по умолчанию, поэтому выключить ее не получится. Все это может привести к серьезным техническим ошибкам и плохой работоспособности мобильного устройства. Поэтому лучше ее не трогать, поскольку все это чревато неблагоприятными последствиями.
Источник: consultpotra.ru
Удаляем вирус Monkey test и Time Service
Не так давно для операционной системы Android был создан вирус, целью которого является кража персональной информации и показ назойливой рекламы — Monkey test и Time Service. В данной статье будет приведен пример как избавиться от него.
Как понять заражен ли ваш Android?
Все очень просто, если на вашем экране смартфона или планшета постоянно маячит обильное количество рекламы, даже там где ее быть не должно, а также имеются определенные замедление в работе устройства, а в меню приложений вы обнаружили две программки Monkey test и Time Service, то к большому сожалению ваш Android заражен и нужно срочно заняться его лечением!
Откуда произошло заражение Android?
Если у вас ранее была включена возможность установки приложений из «неизвестных источников» и вы скачали и установили какую либо игру или программу из сомнительного файлообменника, то возможно именно от туда и произошло заражение вирусом ОС Android.
WiFi Enhancer
TimeService
Indian Sexy Stories 2
Assistive Touch
Accurate Compass
All-star Fruit Slash
Happy Fishing
MonkeyTest
PinkyGirls
XVideo Codec Pack
Amazon/应用中心
Hubii News
itouch
Light Browser
XVideo
Memory Booster
WordLock
Fast Booster
Talking Tom 3
Photo Clean
Super Mario
SmartFolder
Simple Flashlight
Daily Racing
SettingService
boom pig
WhatsWifi
Hot Video
Lemon Browser
Multifunction Flashlight
小白点/Assistive Touch
Hot Girls
Sex Cademy
iVideo
Fruit Slots
Wifi Speeder
WiFi FTP
Ice Browser
PronClub
Что предстоит сделать чтобы удалить вирус?
Для того чтобы удалить malware вирус Monkey test и Time Service вам придется проделать следующие операции: установить Root права на Android смартфон или планшет, после чего установить специальную утилиту busybox расширяющая возможности операционной системы, после чего удалить файлы вируса через специальный скрипт который содержит программа ADB RUN.
Необходимое для удаления Monkey test и Time Service
1. Необходимо получить Root права на ваш Android смартфон или планшет.
- Что такое Root?
- Как получить Root на Android смартфон или планшет?
2. После получения Root прав необходимо установить утилиту busybox, для этого вам необходимо скачать приложение с официального магазина Google Play — программу BusyBox.
После установки BusyBox, запустить программу и нажать кнопку Install, для того чтобы установить встроить необходимые файлы в систему.
3. Далее включите «Отладку по USB» на Android.
4. Установите на компьютер драйвер Android вашего производителя смартфона или планшета.
5. Скачайте и установите программу ADB RUN (версия не ниже 3.81.70 ) которая в дальнейшем позволит удалить вирус.
6. Подключите ваш зараженный Android смартфон или планшет к компьютер
7. Запустите программу ADB RUN
8 Перейдите в следующее меню Manual Command and Unlock Bootloader -> Remove Virus Monkey test https://androidp1.ru/udalyaem-virus-monkey-test-i-time-service/» target=»_blank»]androidp1.ru[/mask_link]
MBN Test: что это за программа на Android и нужна ли она?
Приложение под названием MBN Test вы можете встретить на некоторых смартфонах Android, включая Xiaomi и OnePlus. Пользователи нередко спрашивают, что это за приложение и для чего оно нужно? А некоторые вовсе хотят его заморозить или даже удалить. Можно ли это делать?
Приложение MBN Test отвечает за конфигурацию и настройку сетей 4G, которые поддерживаются смартфоном. Поэтому если вы решили заморозить приложение или тем более удалить, что можно сделать с помощью прав суперпользователя, настоятельно рекомендуем отказаться от этой затеи, поскольку это может привести к проблемам в работе вашего устройства, а именно в работе связи 4G.
Пара скриншотов. Это раздел с приложениями:
А это страница самого приложения:
Еще раз повторимся: не удаляйте и не замораживайте приложение MBN Test! Останавливать его тоже не стоит.
Источник: softlakecity.ru