我构建了一个使用FCM(Firebase云消息传递)的应用程序,但我看到如果Android节能处于活动状态,当我的应用程序处于后台时,我无法收到通知。 如果智能手机的品牌或Android版本发生变化,则会在Android菜单中以不同的方式调用节能设置。
在华硕智能手机中,启用/禁用接收通知的选项位于名为"自动启动管理器"的菜单中。我在下面的截图中报道了:
如果我的应用关闭此选项,我将无法接收通知。 为什么像WathsApp这样的其他应用程序默认启用此选项?我是否必须在Android代码中设置内容?
我还想向用户发出信号,如果他希望应用程序正常工作,他必须激活此选项,但我不知道检查此选项当前是否有效的方法。 一些解决方案?
如果必须使用此代码设置选项,我还尝试在菜单页面中重定向用户:
Intent[] powerManagerIntents = {
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.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")),
getPackageManager().getLaunchIntentForPackage("com.asus.mobilemanager"),
new Intent().setComponent(new ComponentName("com.samsung.android.lool", "com.samsung.android.sm.ui.battery.BatteryActivity"))
};
boolean found = false;
for (Intent intent : powerManagerIntents) {
if (getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY) != null) {
found = true;
startActivity(intent);
}
}
if(found == false) {
Toast toastError = Toast.makeText(getApplicationContext(), R.string.dialog_energy_saving_error, Toast.LENGTH_LONG);
toastError.show();
Intent batterySaverIntent=new Intent(Settings.ACTION_BATTERY_SAVER_SETTINGS);
startActivity(batterySaverIntent);
}
问题在于你怎么看,只支持少数设备,而且打开的菜单页面并不总是正确的。
有人可以帮帮我吗?我必须做什么才能正确接收FCM通知?