2

This is my class where am getting Notification from server->

 public class GCMListener_Service extends GcmListenerService {
    @Override
    public void onMessageReceived(String from, Bundle data) {
    Intent notificationReceived = new Intent("com.example.mypackage”);
    notificationReceived.putExtra(“key", fromWhere);
    sendBroadcast(notificationReceived);
    }
    }

this i have declared in AndroidManifiestfile:

<service
    android:name="com.example.pushnotification.GCMListener_Service"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
    </intent-filter>
</service>

here i am trying to get Notification :

public class PushMessageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    Timber.d("Received push notification”);
}
}

here is my receiver in AndroidManifiest file->

<receiver
    android:name=".notification.PushMessageReceiver"
    android:exported="false">
    <intent-filter>
        <action android:name="com.example.mobile.pushnotification.notificationReceived" />
    </intent-filter>
</receiver>

using given code below android 8 (oreo ) it working fine i am getting and receive notification message in PushMessageReceiver class in onReceive method but in android i am unable to get notification unable to send broadcast can any one please suggest me how to send broad cast in Android O .

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
Anil Thakur
  • 123
  • 1
  • 11

1 Answers1

1

In your Application class register and unRegister class like this:

    public class YourProjectApplication extends MultiDexApplication {
   private static YourProjectApplication sInstance;



    public static YourProjectApplication getInstance() {
            return sInstance;

        }

     @Override
    public void onCreate() {
        super.onCreate();
        sInstance = this;
        }

         public void registerInternetConnectivityBroadCast(){
                IntentFilter intentFilter = new IntentFilter();
                intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
                registerReceiver(appInternetStatus, intentFilter);

        }

        public void unSetConnectivityListener(AppInternetStatus.InternetConnectivityReceiverListener listener) {
            try {
                unregisterReceiver(appInternetStatus);
            }catch (Exception e){
              e.printStackTrace();
            }

            try {
                AppInternetStatus.internetConnectivityReceiverListener = listener;
            }catch (Exception e){
               e.printStackTrace();
            }
        }

And then in your mainActivity class (which can also be your base class) call your broadcast receiver like this:

 getInstance().registerBroadCast();
 getInstance().setConnectivityListener(this);

And in order to unregister your notification. In your onPause() method of your main activity class :

@Override
protected void onPause() {
    super.onPause(); 
    getInstance().unSetConnectivityListener(null);
}
Umair
  • 6,366
  • 15
  • 42
  • 50