У меня Huawei P8 с Android 5.0, который я использую для тестирования приложения. Приложение должно работать в фоновом режиме, так как оно отслеживает регионы BLE.
Я обнаружил, что Huawei встроила «функцию» под названием «Защищенные приложения», доступ к которой можно получить в настройках телефона («Диспетчер батареи»> «Защищенные приложения»). Это позволяет выбранным приложениям продолжать работу после выключения экрана.
Разумно для Huawei, но, к сожалению, для меня, похоже, что это опция, то есть приложения по умолчанию отключены, и вы должны вводить их вручную. Это не демонстрация, поскольку я могу посоветовать пользователям в FAQ или распечатанных документацию об исправлении, но я недавно установил Tinder (в исследовательских целях!) и заметил, что он был автоматически добавлен в список защищенных.
Кто-нибудь знает, как я могу это сделать для своего приложения? Это настройка в манифесте? Это что-то, что Huawei включила для Tinder, потому что это популярное приложение?
ВСЕ СМАРТФОНЫ Huawei ПРИНУДИТЕЛЬНО ОТКЛЮЧИЛИ ОТ Google Сервисов! Kirin ЗАБЛОКИРОВАН НАВСЕГДА
Пока не будет способа узнать, защищено ли приложение или нет, это лучший вариант, но чтобы не показывать его каждый раз, у меня есть сообщение «не показывать снова» и сообщение «С вас может взиматься дополнительная плата, если вы не защищаете », а действия -« игнорировать, я
есть что-то подобное для ASUS Auto-start Manager?
не могли бы вы объяснить, откуда берется объект «sp»? как здесь используется? sp.edit().putBoolean(«protected»,true).commit(); так как я понимаю, вот где вы меняете значение на защищенное право?
В манифесте нет настройки, и Huawei включила Tinder, потому что это популярное приложение. Невозможно узнать, защищены ли приложения.
Во всяком случае я ifHuaweiAlert() в , onCreate() чтобы показать AlertDialog :
как вы нашли имя класса «com.huawei.systemmanager.optimize.process.ProtectActivity»? Я хотел бы реализовать что-то подобное для режима «Выносливость» на Sony, но не знаю название пакета «Выносливость» и название класса экрана «кроме приложений» в настройках выносливости.
Если имя пакета и имя класса известны, вы можете легко открыть экран с намерением. Код ниже. Намерение намерения = новое намерение (); intent.setComponent (новое имя компонента («com.huawei.systemmanager», «com.huawei.systemmanager.optimize.process.ProtectActivity»)); startActivity (намерение);
Дэвид, ваш лучший выбор — это logCat. Просто перейдите на страницу настроек и оставьте logCat открытым.
Могу ли я установить энергоемкость для своего приложения?
Правильное название пакета для Huawei P20: com.huawei.systemmanager.appcontrol.activity.StartupAppControlActivity
+1 для Пьера за его отличное решение, которое работает для нескольких производителей устройств (Huawei, asus, oppo . ).
Я хотел использовать его код в своем приложении для Android, написанном на Java. Я вдохновил свой код на ответы Пьера и Айуспактына .
import android.content.ComponentName; import android.content.Intent; import java.util.Arrays; import java.util.List; public class Constants //updated the POWERMANAGER_INTENTS 26/06/2019 static final ListIntent> POWERMANAGER_INTENTS = Arrays.asList( new Intent().setComponent(new ComponentName(«com.miui.securitycenter», «com.miui.permcenter.autostart.AutoStartManagementActivity»)), new Intent().
setComponent(new ComponentName(«com.letv.android.letvsafe», «com.letv.android.letvsafe.AutobootManageActivity»)), new Intent().setComponent(new ComponentName(«com.huawei.systemmanager», «com.huawei.systemmanager.optimize.process.ProtectActivity»)), new Intent().
Что, если нет сервисов Google? Какие приложения есть в Appgallery от Huawei
setComponent(new ComponentName(«com.huawei.systemmanager», Build.VERSION.SDK_INT >= Build.VERSION_CODES.P? «com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity»: «com.huawei.systemmanager.appcontrol.activity.StartupAppControlActivity»)), new Intent().setComponent(new ComponentName(«com.coloros.oppoguardelf», «com.coloros.powermanager.fuelgaue.PowerUsageModelActivity»)), new Intent().
setComponent(new ComponentName(«com.coloros.oppoguardelf», «com.coloros.powermanager.fuelgaue.PowerSaverModeActivity»)), new Intent().setComponent(new ComponentName(«com.coloros.oppoguardelf», «com.coloros.powermanager.fuelgaue.PowerConsumptionActivity»)), new Intent().
setComponent(new ComponentName(«com.coloros.safecenter», «com.coloros.safecenter.permission.startup.StartupAppListActivity»)), Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ? new Intent().setComponent(new ComponentName(«com.coloros.safecenter», «com.coloros.safecenter.startupapp.StartupAppListActivity»)).
setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).setData(Uri.parse(«package:»+ MyApplication.getContext().getPackageName())) : null, new Intent().
setComponent(new ComponentName(«com.oppo.safe», «com.oppo.safe.permission.startup.StartupAppListActivity»)), new Intent().setComponent(new ComponentName(«com.iqoo.secure», «com.iqoo.secure.ui.phoneoptimize.AddWhiteListActivity»)), new Intent().
setComponent(new ComponentName(«com.iqoo.secure», «com.iqoo.secure.ui.phoneoptimize.BgStartUpManager»)), new Intent().setComponent(new ComponentName(«com.vivo.permissionmanager», «com.vivo.permissionmanager.activity.BgStartUpManagerActivity»)), new Intent().
setComponent(new ComponentName(«com.asus.mobilemanager», «com.asus.mobilemanager.entry.FunctionActivity»)), new Intent().setComponent(new ComponentName(«com.asus.mobilemanager», «com.asus.mobilemanager.autostart.AutoStartActivity»)), new Intent().
setComponent(new ComponentName(«com.letv.android.letvsafe», «com.letv.android.letvsafe.AutobootManageActivity»)) .setData(android.net.Uri.parse(«mobilemanager://function/entry/AutoStart»)), new Intent().setComponent(new ComponentName(«com.meizu.safe», «com.meizu.safe.security.SHOW_APPSEC»)).addCategory(Intent.CATEGORY_DEFAULT).putExtra(«packageName», BuildConfig.APPLICATION_ID) ); >
Добавьте следующие разрешения в свой Android.Manifest
android_name=»android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS»/> android_name=»oppo.permission.OPPO_COMPONENT_SAFE»/> android_name=»com.huawei.permission.external_app_settings.USE_COMPONENT»/>
- У меня все еще возникают проблемы с устройствами OPPO
Я надеюсь, что это поможет кому-то.
Источник: qastack.ru
Блог
Главная — Вопросы по программированию — Какова последняя функция автоматического запуска для системных настроек Huawei?
Какова последняя функция автоматического запуска для системных настроек Huawei?
- Post author: admin
- Запись опубликована: 16 января, 2022
- Post category: Вопросы по программированию
#android #android-intent #huawei-mobile-services #power-management #powermanager
Вопрос:
Ранее намерение с помощью одного из следующих компонентов привело меня к системным настройкам Huawei, чтобы изменить поведение автоматического запуска приложения.
ComponentName( «com.huawei.systemmanager», «com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity» ), ComponentName( «com.huawei.systemmanager», «com.huawei.systemmanager.appcontrol.activity.StartupAppControlActivity» )
java.lang.SecurityException: Permission Denial: starting Intent < flg=0x10000000 cmp=com.huawei.systemmanager/.startupmgr.ui.StartupNormalAppListActivity >from ProcessRecord (pid=19272, uid=10733) requires com.huawei.permission.external_app_settings.USE_COMPONENT at android.os.Parcel.createException(Parcel.java:2071) at android.os.Parcel.readException(Parcel.java:2039) at android.os.Parcel.readException(Parcel.java:1987) at android.app.IActivityTaskManager$Stub$Proxy.startActivity(IActivityTaskManager.java:3888) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1738) at androidx.test.runner.MonitoringInstrumentation.execStartActivity(MonitoringInstrumentation.java:545) at android.app.ContextImpl.startActivity(ContextImpl.java:1049) at android.app.ContextImpl.startActivity(ContextImpl.java:1005) at java.lang.reflect.Method.invoke(Native Method) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at androidx.test.internal.runner.junit4.statement.RunBefores.evaluate(RunBefores.java:80) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runners.Suite.runChild(Suite.java:128) at org.junit.runners.Suite.runChild(Suite.java:27) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at org.junit.runner.JUnitCore.run(JUnitCore.java:115) at androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:56) at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:395) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2258) Caused by: android.os.RemoteException: Remote stack trace: at com.android.server.wm.ActivityStackSupervisor.checkStartAnyActivityPermission(ActivityStackSupervisor.java:1194) at com.android.server.wm.ActivityStarter.startActivity(ActivityStarter.java:904) at com.android.server.wm.ActivityStarter.startActivity(ActivityStarter.java:652) at com.android.server.wm.HwActivityStarter.startActivity(HwActivityStarter.java:292) at com.android.server.wm.ActivityStarter.startActivityMayWait(ActivityStarter.java:1647)
Разрешение, указанное в Stracktrace, объявлено в моем файле манифеста.
Это определенно работало раньше, и я, кажется, помню, что для моего Huawei P30 Pro было обновление для системы безопасности.
Какова сейчас правильная процедура? Почему он жалуется на отсутствие разрешения, хотя оно заявлено?
Источник: programbox.ru
com.huawei.systemmanager/com.huawei.systemmanager.optimize.process.ProtectActivity>; Вы объявили эту активность в своем AndroidManifest.xml?
Я получаю эту ошибку на своем huawei nexus 6p, помещая приложение в список защищенных приложений.
«UncaughtException: android.content.ActivityNotFoundException: Unable to find explicit activity class ; have you declared this activity in your AndroidManifest.xml?»
И я использую этот код, чтобы поместить приложение в список защищенных приложений
Проблема здесь в том, что это не моя собственная деятельность, которую я могу объявить в манифесте. Мне все еще нужно объявлять это в манифесте? если я должен, то как я могу это сделать?
РЕШЕНО причина заключалась в том, что huawei nexus 6p имеет чистый андроид и, следовательно, такой активности нет. но там падал код, потому что Build.MANUFACTURER возвращает «huawei». однако Build.BRAND возвращает «google», поэтому добавлена дополнительная проверка, поскольку
if («huawei».equalsIgnoreCase(Build.MANUFACTURER) !»google».equalsIgnoreCase(Build.BRAND) !settingsManager.getKeyStateProtectedApp()
Источник: question-it.com