I am using syntax notification in my application. I receive a notification using GcmBroadcastReceiver. But I see a lot of notifications receiving my application. I decided to update the notification in the status bar to use a custom receiver. Upon receiving a notification through the GcmBroadcastReceiver, my custom broadcast receiver called. Thus, in my status bar there are both gcm and user notifications. I want only user notification. How to solve this problem?
Manifest code:
<receiver android:name="com.parse.ParseBroadcastReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.USER_PRESENT" /> </intent-filter> </receiver> <receiver android:name="com.parse.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" /> <category android:name="com.packagename" /> </intent-filter> </receiver> <receiver android:name="com.parse.ParsePushBroadcastReceiver" android:exported="false" > <intent-filter> <action android:name="com.parse.push.intent.RECEIVE" /> <action android:name="com.parse.push.intent.DELETE" /> <action android:name="com.parse.push.intent.OPEN" /> </intent-filter> </receiver> <receiver android:name="com.packagename.IncomingReceiver" android:enabled="true" android:exported="false" > <intent-filter> <action android:name="com.packagename.UPDATE_STATUS" /> </intent-filter> </receiver>
Application Class :
Parse.initialize(this, "app id", "client id");
Incomingreceiver Class:
public class IncomingReceiver extends BroadcastReceiver { private static final int NOTIFICATION_ID = 1; public static int numMessages = 0; @Override public void onReceive(Context context, Intent intent) { try { String action = intent.getAction(); JSONObject json = new JSONObject(intent.getExtras().getString("com.parse.Data")); if (action.equalsIgnoreCase("com.packagename.UPDATE_STATUS")) { String title = "appname"; if (json.has("header")) title = json.getString("header"); generateNotification(context, title, json,contenttext); } } catch (JSONException e) { Log.d("jsonexc", "JSONException: " + e.getMessage()); } } private void generateNotification(Context context, String title, JSONObject json, String contenttext) { Intent intent = new Intent(context, NewActivity.class); PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, 0); NotificationManager mNotifM = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context).setSmallIcon(R.drawable.app_icon).setContentTitle(title).setContentText("contenttext").setNumber(++numMessages); mBuilder.setContentIntent(contentIntent); mNotifM.notify(NOTIFICATION_ID, mBuilder.build()); } }
source share