小编hec*_*rct的帖子

使用registerReceiver的C2DM接收器的动态寄存器

我可以使用<receiver>我的清单中的成功注册我的Android应用程序与C2DM .但是,如果我<receiver>从清单中删除并使用上下文的registerReceiver方法注册我的接收器,则会收到SERVICE_NOT_AVAILABLE错误响应.我已经在模拟器和真实设备中重现了这种行为.

是否可以动态注册C2DM接收器?

这是我删除的清单的片段:

<receiver android:name=".service.C2DM.C2DMReceiver" android:permission="com.google.android.c2dm.permission.SEND">
  <intent-filter>
      <action android:name="com.google.android.c2dm.intent.RECEIVE" />
      <category android:name="mytestapp" />
  </intent-filter>
  <intent-filter>
      <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
      <category android:name="mytestapp" />
  </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

以下是代码:

public class C2DMReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String registration = intent.getStringExtra("registration_id");
        if (intent.getStringExtra("error") != null) {
            //TODO: Registration failed, should try again later.
            Log.e("MyTestAppC2DM", "C2DM Error = " + intent.getStringExtra("error"));
        } else if (intent.getStringExtra("unregistered") != null) {
            Log.d("MyTestAppC2DM", "C2DM Unregistered");
        } else …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver android-c2dm

5
推荐指数
1
解决办法
1280
查看次数

标签 统计

android ×1

android-c2dm ×1

broadcastreceiver ×1