BroadCast onReceiver (), не вызывающий зефир и выше SDK - PullRequest
0 голосов
/ 05 марта 2019

Я хочу запустить службы из Broadcast Receiver, но Marshmallow и более поздние версии SDK не будут вызывать обратный вызов. BOOT_COMPLETED работает нормально с передним планом и фоном приложения, но CONNECTIVITY_CHANGE не работает с фоном.

Мне нужно получить обратный вызов, когда приложение с передним планом приложения &background.

Мой манифест :

 <receiver
        android:name=".receivers.MessageBroadCastReceiver"
        android:enabled="true"
        android:exported="false">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>

Мой Приемник :

public class MessageBroadCastReceiver extends BroadcastReceiver {
private static final String TAG = "MessageBroadCastReceive";
private Context ctx;

@Override
public void onReceive(Context context, Intent intent) {
    Log.d(TAG, "AppBroad " + intent.getAction());
    this.ctx = context;
    if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
            RestartMessageService();

    } else if (intent.getAction().equals("android.net.conn.CONNECTIVITY_CHANGE")) {
            RestartMessageService();

    }
}
}

устал регистрироватьШироковещательные действия в моей основной деятельности работают нормально на переднем плане, как только я закрою свое приложение, оно не будет вызывать (Зефир и выше SDK).

Зарегистрированный код:

    private void RegisterReceivers() {
    try {
        MessageBroadCastReceiver broadCastReceiver = new MessageBroadCastReceiver();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        getBaseContext().registerReceiver(broadCastReceiver, intentFilter);
        PrefManager.getInstance(this).setBroadcastReg(true);
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    }
}

Пожалуйста, дайте мне решение.

Заранее спасибо ...

...