簡體   English   中英

組件監聽器

[英]Component Listener

我有華為手機,當我在華為上使用前台服務時,它只是停止服務。 但是,我找到了這個解決方案( 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)
);
}

謝謝你。

更新

  1. EMUI支持從應用UI跳轉到應用啟動管理頁面,但提供后台查看應用是否存活的接口。
  2. 因此,建議顯示提示而不是跳轉到系統。
  • 首次啟動應用程序時,會顯示提示,指示用戶在后台手動保持應用程序處於活動狀態。
  • 如果不開啟后台keepalive,應用程序將無法在后台長時間運行。 建議您使用常見問題解答通知用戶您的應用程序中的問題。

這種體驗可能不是最好的。 但是為了保證手機的功耗和性能,華為不提供相關接口。


這是為了防止后台運行、關聯啟動等惡意操作,導致手機memory和功耗急劇增加。 默認情況下,EMUI 不允許相關應用在后台保持活動或與手機關聯。 但是,它支持在關聯的手機中手動保持連接,這樣應用程序可以在后台開機或自動啟動,並且設置在手機重啟后生效。

如果由於使用場景需要讓應用程序一直在后台運行,我們建議在安裝后首次啟動應用程序時,彈出提示提示用戶進行手動保活操作。

您可以通過以下步驟執行此操作:電話管理器 → 應用程序啟動管理 → 關閉自動管理 → Select 允許自行啟動/允許后台活動。

彈出窗口表明應用程序需要相應地進行少量開發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM