android - 如何启动所有安卓厂商的电源管理器以启用后台和推送通知?

标签 android push-notification power-management

由于定制的 Android 调整,一些 Android 设备是由制造商完成的,在电源管理方面存在一些政治问题,这会破坏推送通知等某些功能。

  • 华为 - 仅限 Pre-EMUI 5.0/Android 7 - 转到设置 > “ protected 应用”,检查您的应用。
  • 索尼 - 点击电池图标。转到电源管理 > STAMINA 模式 > 处于待机状态的应用 > 添加您的应用。
  • 华硕 - 在自动启动管理器中检查您的应用。
  • 小米 - 安全(应用)> 权限 > 自动启动 - 启用您的应用
  • *新小米 - 设置 > 开发者选项。禁用“内存优化”。要启用开发人员选项,请转到设置 > 关于。轻按 MIUI 8 次。
  • Oppo - 转到设置>“安全设置”>“数据保存”并启用您的应用。
  • 三星 - 禁用电池使用优化

我想收集 Intent 推出各自的工具,但我发现只有华为和小米。

Intent INTENT_HUAWEI = new Intent().setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity"));
Intent INTENT_XIAOMI = new Intent().setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));

if (getPackageManager().resolveActivity(INTENT_HUAWEI, PackageManager.MATCH_DEFAULT_ONLY) != null)
    startActivity(INTENT_HUAWEI);
else if (getPackageManager().resolveActivity(INTENT_XIAOMI, PackageManager.MATCH_DEFAULT_ONLY) != null)
    startActivity(INTENT_XIAOMI);

我需要所有其他制作人的帮助,thz

最佳答案

我从各种帖子中收集了一些 Intent :

    private static final Intent[] POWERMANAGER_INTENTS = {
            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.startupmgr.ui.StartupNormalAppListActivity")),
            new Intent().setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity")),
            new Intent().setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.appcontrol.activity.StartupAppControlActivity")),
            new Intent().setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity")),
            new Intent().setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.startupapp.StartupAppListActivity")),
            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.samsung.android.lool", "com.samsung.android.sm.battery.ui.BatteryActivity")),
            new Intent().setComponent(new ComponentName("com.samsung.android.lool", "com.samsung.android.sm.ui.battery.BatteryActivity")),
            new Intent().setComponent(new ComponentName("com.htc.pitroad", "com.htc.pitroad.landingpage.activity.LandingPageActivity")),
            new Intent().setComponent(new ComponentName("com.asus.mobilemanager", "com.asus.mobilemanager.MainActivity")),
            new Intent().setComponent(new ComponentName("com.transsion.phonemanager", "com.itel.autobootmanager.activity.AutoBootMgrActivity"))
    }; 

            for (Intent intent : POWERMANAGER_INTENTS)
                if (getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY) != null) {
                    // show dialog to ask user action
                    break;
                }

用户同意后

for (Intent intent : POWERMANAGER_INTENTS)
  if (getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY) != null) {
  startActivity(intent);
  break;
}

seams 新版本需要此权限

<uses-permission android:name="oppo.permission.OPPO_COMPONENT_SAFE"/>
<uses-permission android:name="com.huawei.permission.external_app_settings.USE_COMPONENT"/>

我想收集所有打开电源管理器的 Intent ,如果有人发现错误或想要改进某些东西,请在此处评论

关于android - 如何启动所有安卓厂商的电源管理器以启用后台和推送通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48166206/

相关文章:

android - 如何将标志添加到通知(状态栏通知)?

android - 查找 git commit 产生的一些代码

javascript - 使用 PFQuery 检索数组中包含特定项目的 PFInstallation 对象?

ruby-on-rails - Ruby、SSLSockets 和 Apple 的增强型 APN 消息格式

c# - 在没有 WMI 的情况下获取电池信息

ios - iOS-如何检测iDevice广告是否已接通电源

java - Android USB 主机无法读取和写入 Cp2102SerialDriver 数据

android - Android View Model 和 Singleton 类之间到底有什么区别

ios - iOS 设备不显示推送通知

Android 应用程序编程和能源效率