这里总结一篇关于开机自启被拦截的问题,之前写了两篇关于开机自启的文章,大家可以去参考一下。
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.解决方法
这里以测试机 ==》红米手机
举例:手动开启后台弹出权限