【问题标题】:Component Listener组件监听器
【发布时间】:2021-02-04 14:40:10
【问题描述】:

我有华为手机,当我在华为上使用前台服务时,它只是停止服务。 但是,我找到了这个解决方案(https://stackoverflow.com/a/51726040/14446860)。 因为我的应用在我的华为手机上的受保护应用中没有启用,所以服务停止了。

我的问题是,当我要求用户启用受保护的应用程序时,如何广播此设置? 即使他启用它,我每次都必须询问用户吗?

public class Constants {
//updated the POWERMANAGER_INTENTS 26/06/2019

static final List<Intent> 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().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)
);
}

谢谢。

【问题讨论】:

    标签: java android android-intent huawei-developers


    【解决方案1】:

    更新

    1. EMUI支持从应用UI跳转到应用启动管理页面,但提供后台检查应用是否存活的接口。
    2. 因此,建议显示提示而不是跳转到系统。
    • 首次启动应用时,会显示提示,指示用户在后台手动保持应用处于活动状态。
    • 如果不启用后台keepalive,应用程序将无法在后台长时间运行。建议您使用常见问题解答通知用户您应用中的问题。

    这种体验可能不是最好的。但是为了保证手机的功耗和性能,华为不提供相关接口。


    这是为了防止后台运行、关联启动等恶意操作,导致手机内存和功耗急剧增加。默认情况下,EMUI 不允许相关应用在后台保持活动或与手机关联。但支持关联手机手动keepalive,使应用可以开机或后台自动启动,重启手机后设置生效。

    如果由于使用场景需要让应用程序一直在后台运行,我们建议在安装后首次启动应用程序时,弹出提示提示用户进行手动保持-活着的操作。

    您可以通过以下步骤来做到这一点:电话管理器→应用程序启动管理→关闭自动管理→选择允许自启动/允许后台活动。

    弹窗提示应用程序需要进行相应的少量开发。

    【讨论】:

    • 首先非常感谢您的详细回复。老人和第一次做的人呢?我可以设置一个广播来检测他们是否启用它并将他们转移到主要活动?
    • 嗨@Goomer,我更新了我的答案,请参考,感谢您的理解!
    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多