registerReceiver不起作用(registerReceiver Does not work)

编程入门 行业动态 更新时间:2024-10-28 02:21:45
registerReceiver不起作用(registerReceiver Does not work)

我正在尝试处理我的主类中的推送通知(我还有GCMBroadcastReceiver - 用于我没有运行主类时发出的所有通知)

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

我的代码:

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)中正常工作

I'm trying to deal with push notifications in my main class (and i also have GCMBroadcastReceiver - for all the notifications that comes when i'm not running the main class)

but the registerReceiver Does not work (GCMBroadcasrReceiver works fine)

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

Manifest:

<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>

*Works fine only in my 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); }

而BroadcastReceiver应该是

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

我想知道为什么它在没有sendBroadcast的4.1.2中有效...

Well, found the solution:

in my GCMIntentService.java i need to set sendBroadcast like so:

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

and the BroadcastReceiver should be

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

I wonder why it works in 4.1.2 without the sendBroadcast...

更多推荐

本文发布于:2023-07-07 09:04:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1061396.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:不起作用   registerReceiver   work

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!