
这里总结一篇关于开机自启被拦截的问题,之前写了两篇关于开机自启的文章,大家可以去参考一下。
Android App开机自启动
Android 开机启动延迟问题
AutoStartBroadReceiver具体代码:
public class AutoStartBroadReceiver extends BroadcastReceiver {
private static final String ACTION = "android.intent.action.BOOT_COMPLETED";
@Override
public void onReceive(Context context, Intent intent) {
Log.e("接收广播", "onReceive: ");
Log.e("接收广播", "onReceive: " + intent.getAction());
//开机启动
if (ACTION.equals(intent.getAction())) {
Log.e("接收广播", "onReceive: 启动了。。。");
Intent mainIntent = new Intent(context, UserLoginActivity.class);
Log.e("接收广播", "onReceive: 启动了1111111");
/**
* Intent.FLAG_ACTIVITY_NEW_TASK
* Intent.FLAG_ACTIVITY_CLEAR_TOP
*/
mainIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(mainIntent);
Log.e("接收广播", "onReceive: 启动了2222222");
// context.startService(mainIntent);
}
}
}

1.原因剖析
D/com.android.server.am.ExtraActivityManagerService: MIUILOG- Permission Denied Activity :
Intent { flg=0x10000000 cmp=com.xxxx.xxxxx/.mvp.view.Activity.UserLoginActivity }
pkg : com.xxxx.xxxxx uid : 10151 tuid : 10039
在看图上拦截信息log日志前,已经授权了开机自启,当接收到广播后,在准备跳转到UserLoginActivity的时候,被拦截了。我这边应用的是小米 MIUI手机,版本是红米手机 Redmi 6A MIUI 10,MIUI 10不允许服务启动,此问题的原因是app没有后台弹出界面的权限,系统给拦截了
目前在app端没有方案可以解决此问题,因为从系统端拦截掉了。
2.解决方法
这里以测试机 ==》红米手机举例:手动开启后台弹出权限




本文探讨了Android应用在MIUI系统中开机自启动被拦截的现象,分析了原因在于缺少后台弹出界面的权限。在MIUI10中,系统会阻止未授权的应用服务启动。目前在应用层面无法直接解决此问题,解决方案是用户需手动开启应用的后台弹出权限。针对红米手机Redmi6A MIUI10,提供了手动设置的步骤。

980

被折叠的 条评论
为什么被折叠?



