Anil Thakur
Anil Thakur

Reputation: 123

How to send BroadCast in Oreo?

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 .

Upvotes: 2

Views: 908

Answers (1)

Umair
Umair

Reputation: 6426

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

Upvotes: 1

Related Questions