LocalBroadcastManager
отправлять широковещательные передачи содержимого для локальных объектов в рамках вашего процесса, загрузочный приемник будет работать над отправкой глобальных трансляций.
Поэтому мы должны зарегистрировать трансляцию в AndroidManifest.xml и при получении обратного вызова для вашего приемникаВы можете проверить логику и выполнить действие против нее.
Пример:
switch4.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SharedPref.write(Constants.LAUNCH_AT_START, isChecked);
Log.i("LockState", "launch app at start: " + isChecked);
}
});
И создать приемник вещания в отдельном классе и зарегистрироваться в AndroidManifest.xml.
AndroidManifest.xml:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application>
<receiver
android:name=".MyBootReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
MyBootReceiver.java:
public class MyBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Check your prefernce) {
Intent activityIntent = new Intent(context, MainActivity.class);
activityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(activityIntent);
}
}
}