android 8.0 接收开机广播 (应用自启)

在清单文件中注册

  <receiver
            android:name=".BootReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

加上权限

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

然后需要动态注册下

 		 IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(Intent.ACTION_BOOT_COMPLETED);
        BootReceiver BootReceiver = new BootReceiver();
        this.registerReceiver(BootReceiver, intentFilter);
        

最后在广播接收这种如果需要跳转页面需要加上
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

@Override
    public void onReceive(Context context, Intent intent) {
        Log.i("BootReceiver", "onReceive: ");
        Intent intent1 = new Intent(context, MainActivity.class);
        intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent1);
    }

如果上面还是不可以接收到的话可能需要动态加上权限(之前做其他广播遇到的坑 这个我没试过我是直接加的)

    ActivityCompat.requestPermissions(this, new String[]{
                    Manifest.permission.RECEIVE_BOOT_COMPLETED,
            }, 1);

你可能感兴趣的:(广播)