RegisterReceiver Doesn't work

I'm trying to get my head around push notifications in my main class (and I also have a GCMBroadcastReceiver - for all notifications that pop up when I don't run the main class)

but registerReceiver doesn't work (GCMBroadcasrReceiver works great)

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>

      

* Only works fine in my 4.1.2 (S3)

+3


source to share


2 answers


Ok, found a solution:

in my GCMIntentService.java I need to set sendBroadcast like this:

@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 sendBroadcast ...

+4


source


if you call sendBroadcast like this

Intent  intent = new Intent(context, mBroadcastReceiver.getClass());
intent.setAction(ACTION_ON_CLICK);
context.sendBroadcast(intent);

// or

Intent  intent = new Intent(context, MyBroadcastReceiver.class);
intent.setAction(ACTION_ON_CLICK);
context.sendBroadcast(intent);

      



change it to this:

Intent  intent = new Intent(ACTION_ON_CLICK);
context.sendBroadcast(intent);

      

0


source







All Articles