2015-02-24 4 views
3

Я пытаюсь отправить уведомление, когда пользователь входит или выходит из определенной геозоны. Я уже могу войти, когда пользователь входит или выходит из геофорума. Но уведомление об этом не появилось. Есть что-то, что я не хватает? Я реализовал тему в своем манифесте.Как начать уведомление в IntentService

Я также обновил свой манифест, как:

<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> 

Вот мой 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()); 
    } 

} 

Кто-нибудь есть идеи, как получить эту работу? Мой основной класс активности - HomeActivity.

+0

возможно дубликат [Как показать уведомление в строке состояния] (http://stackoverflow.com/questions/13901657/how-to-show -notification-in-status-bar) –

ответ

8

Попробуйте добавить иконку для вашего уведомления застройщика:

NotificationCompat.Builder mBuilder = 
      new NotificationCompat.Builder(this) 
        .setContentTitle("GCM Notification") 
        .setStyle(new NotificationCompat.BigTextStyle() 
        .bigText(msg)) 
        .setContentText(msg) 
        .setSmallIcon(R.drawable.notification_icon); 
+1

Это должно быть правильно. Afaik, уведомления не отображаются без значка. –