How to start a notification in IntentService

11,691

Try adding an icon to your notification builder:

NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
                    .setContentTitle("GCM Notification")
                    .setStyle(new NotificationCompat.BigTextStyle()
                    .bigText(msg))
                    .setContentText(msg)
                    .setSmallIcon(R.drawable.notification_icon);
Share:
11,691
Theo Jansen
Author by

Theo Jansen

Updated on June 25, 2022

Comments

  • Theo Jansen
    Theo Jansen almost 2 years

    I'm try to send a notification when a user enters or exits a specific geofence. I already can log when a user enters or exits the geofence. But no notification is showed up when this happened. Is there anything i'm missing? I implemented a theme in my manifestfile.

    I also updated my manifest like :

     <activity
                android:name=".HomeActivity"
                android:screenOrientation="portrait"
                android:configChanges="keyboardHidden|orientation"
                android:label="@string/app_name"
                android:theme="@android:style/Theme.Holo.Light">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    

    Here is my GeofenceIntentService,

    public class GeofenceIntentService extends IntentService {
    
        private NotificationManager mNotificationManager;
        public static final int NOTIFICATION_ID = 1;
        public static final String TRANSITION_INTENT_SERVICE = "ReceiveTransitionsIntentService";
    
        public GeofenceIntentService() {
            super(TRANSITION_INTENT_SERVICE);
        }
    
        @Override
        protected void onHandleIntent(Intent intent) {
            if (LocationClient.hasError(intent)) {
                //todo error process
            } else {
                int transitionType = LocationClient.getGeofenceTransition(intent);
                if (transitionType == Geofence.GEOFENCE_TRANSITION_ENTER ||
                        transitionType == Geofence.GEOFENCE_TRANSITION_EXIT) {
                    List<Geofence> triggerList = LocationClient.getTriggeringGeofences(intent);
    
                    for (Geofence geofence : triggerList) {
                        String locationId = geofence.getRequestId();
                        int value = transitionType;
                        String geofenceStatus;
                        if(value == 1){
                            Log.i("**************************************", "Entered geofence");
                            sendNotification("entering");
    
    
                        }else if(value == 2){
                            Log.i("**************************************", "Exiting geofence");
                            sendNotification("exiting");
                        }
                    }
                }
            }
        }
    
        private void sendNotification(String msg) {
            mNotificationManager = (NotificationManager)
                    this.getSystemService(Context.NOTIFICATION_SERVICE);
    
            PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                    new Intent(this, HomeActivity.class), 0);
    
            NotificationCompat.Builder mBuilder =
                    new NotificationCompat.Builder(this)
                            .setContentTitle("GCM Notification")
                            .setStyle(new NotificationCompat.BigTextStyle()
                                    .bigText(msg))
                            .setContentText(msg);
            mBuilder.setContentIntent(contentIntent);
            mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
        }
    
    }
    

    Anyone have some ideas how to get this working? My main activity class is HomeActivity.