注册接收器不起作用

2024-01-29

我正在尝试处理我的主类中的推送通知(并且我也有 GCMBroadcastReceiver - 对于我不运行主类时出现的所有通知)

但 registerReceiver 不起作用 (GCMBroadcasrReceiver 工作正常)

my code:

public class Main extends Activity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        registerReceiver(mHandleMessageReceiver, new IntentFilter("com.google.android.c2dm.intent.RECEIVE"));
    }

    private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d("BroadcastReceiver","Working");
        }
    };

}

显现:

<receiver android:name="com.google.android.gcm.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" >
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
    </intent-filter>
</receiver>

*仅在我的 4.1.2 (S3) 中工作正常


嗯,找到了解决办法:

在我的 GCMIntentService.java 中,我需要像这样设置 sendBroadcast :

@Override
protected void onMessage(Context context, Intent intent) {

        Intent i = new Intent("com.my.app.DISPLAY_PUSH");

        i.putExtra("msg", intent.getExtras().getString("msg"));
        context.sendBroadcast(i);
    }

并且广播接收器应该是

protected void onCreate(Bundle savedInstanceState) {
    registerReceiver(mHandleMessageReceiver, new IntentFilter("com.my.app.DISPLAY_PUSH"));
    }
.
.
.

private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("BroadcastReceiver","Working with msg:" + intent.getExtras().getString("msg")  );
        }
};

我想知道为什么它在 4.1.2 中没有 sendBroadcast 也能工作...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

注册接收器不起作用 的相关文章

随机推荐