BroadCast onReceiver()未调用棉花糖及SDK之上的

时间:2019-03-05 07:25:05

标签: android service android-broadcastreceiver

我想从广播接收器启动服务,但是棉花糖和SDK之上的版本将不会回调。 BOOT_COMPLETED 可以在应用程序的前台和后台正常运行,但是 CONNECTIVITY_CHANGE 在后台不能运行。

我的要求是,当应用程序具有应用前景和背景时,我想获得回调。

我的清单

 <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();
    }
}

请给我解决方法。

提前谢谢...

0 个答案:

没有答案