2012-02-28 3 views
0

Мое приложение запускает службу, которая собирает фиды. Когда он находит эти каналы, он создает нотации (безуспешно). Я использую вызов метода, как это:Уведомление Намерения, не работающие для Android-приложения

doNotification(date,"New Article",title,link,content,description,false); 

для статей и это:

doNotification(date,"New Video",title,link,"","",true); 

для видео. Метод таков:

public void doNotification(Date date,String title,String subtext,String url,String body,String dateString,boolean video){ 
     long time = date.getTime(); 
     if(time > feedGetter.lastFeed){ 
      //New feed, do notification 
      NotificationManager mNotificationManager = (NotificationManager) feedGetter.service.getSystemService(Context.NOTIFICATION_SERVICE); 
      int icon = R.drawable.notification_icon; 
      Notification notification = new Notification(icon, title + ": " + subtext, time); 
      Intent notificationIntent = new Intent(feedGetter.service, NotificationActivity.class); 
      notificationIntent.putExtra("url",url); 
      notificationIntent.putExtra("video",video); 
      if(!video){ 
       notificationIntent.putExtra("body",body); 
       notificationIntent.putExtra("date",dateString); 
       notificationIntent.putExtra("title",subtext); 
      } 
      notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      PendingIntent contentIntent = PendingIntent.getActivity(feedGetter.service, 0, notificationIntent, PendingIntent.FLAG_ONE_SHOT); 
      notification.setLatestEventInfo(feedGetter.service.getApplicationContext(), title, subtext, contentIntent); 
      mNotificationManager.cancel(video? 1 : 0); 
      mNotificationManager.notify(video? 1 : 0, notification); 
      //Update new time if necessary. 
      if(time > feedGetter.newTime){ 
       feedGetter.newTime = time; //New time will be the time for this feed as it is the latest so far 
      } 
     } 
    } 

Как вы видите, я добавляю некоторые данные в намерение, чтобы я мог корректно обрабатывать уведомления. Уведомления присваиваются идентификатору для видео или идентификатору для статей и должны заменять предыдущие уведомления. Вот NotificationActivity, который обрабатывает уведомление:

public class NotificationActivity extends Activity{ 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Debug.out("Notification Activity"); 
     NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     if(getIntent().getBooleanExtra("video", true)){ 
      //Handle video notification 
      Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getIntent().getStringExtra("url"))); 
      startActivity(browserIntent); 
      mNotificationManager.cancel(1); 
     }else{ 
      //Start application UI and move to article 
      Intent intent = new Intent(this,TheLibertyPortalActivity.class); 
      intent.setAction(Intent.ACTION_MAIN); 
      intent.addCategory(Intent.CATEGORY_LAUNCHER); 
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      intent.putExtra("url", getIntent().getStringExtra("url")); 
      intent.putExtra("body", getIntent().getStringExtra("body")); 
      intent.putExtra("date", getIntent().getStringExtra("date")); 
      intent.putExtra("title", getIntent().getStringExtra("title")); 
      startActivity(intent); 
      mNotificationManager.cancel(0); 
     } 
     finish(); 
    } 
} 

Так что, как предполагается активировать URL для видео и перезапустить приложение для статей с некоторыми данными для обработки статей, поэтому статья отображаются пользователю.

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

Благодарим за помощь. Я ориентирую API API API уровня 14 с минимальной версией SDK уровня 8, пытаясь использовать планшет Android 2.2.1.

ответ

2

Проблема с ожидающим намерением. Хотя документы говорят, что requestCode не используется, это так. Вы должны передать уникальное целое число для каждого PendingIntent. Это сработало!

Смежные вопросы