2016-10-30 7 views
2

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

statusBarNotification.getNotification().extras.getString(Notification.EXTRA_TITLE); 

и это:

statusBarNotification.getNotification().extras.getString(Notification.EXTRA_TEXT); 

прочитать заголовок и текст уведомлений. но через несколько часов я не смог найти способ получить изображение, которое сопровождается текстом уведомления. например изображение профиля, которое показано в уведомлении Whatsapp. Я знаю, что это не маленькие или большие значки, я несколько раз проверял.

Так что, если кто-то может помочь в любом случае, она была бы оценена

ответ

1

Я предполагаю, что вы используете NotificationListenerService слушать уведомления от другого приложения.

В вас NotificationService класс, извлечь значок ressource id в дополнительных Notification.EXTRA_SMALL_ICON и получить доступ к другим ресурсам приложения, чтобы получить Drawable.

Notification.EXTRA_PICTURE содержит большое изображение, переданное в уведомлении:

public class NotificationService extends NotificationListenerService { 

    Context context; 

    @Override 

    public void onCreate() { 
     super.onCreate(); 
     context = getApplicationContext(); 

    } 

    @Override 
    public void onNotificationPosted(StatusBarNotification statusBarNotification) { 

     // a notification is posted 

     String pack = statusBarNotification.getPackageName(); 

     Bundle extras = statusBarNotification.getNotification().extras; 

     int iconId = extras.getInt(Notification.EXTRA_SMALL_ICON); 

     try { 
      PackageManager manager = getPackageManager(); 
      Resources resources = manager.getResourcesForApplication(pack); 

      Drawable icon = resources.getDrawable(iconId); 

     } catch (PackageManager.NameNotFoundException e) { 
      e.printStackTrace(); 
     } 

     if (extras.containsKey(Notification.EXTRA_PICTURE)) { 
      // this bitmap contain the picture attachment 
      Bitmap bmp = (Bitmap) extras.get(Notification.EXTRA_PICTURE); 
     } 

    } 

    @Override 

    public void onNotificationRemoved(StatusBarNotification statusBarNotification) { 
     //call when notification is removed 
    } 
} 
+0

Я уже испытанный большой и очень большой значок. Я также попробовал Extra_Picture, о которой вы говорили, и не получилось. Наверное, я не использовал его должным образом. Но так как это из другого приложения, как мне его решить? Я попробовал getPackageContext, чтобы получить их значок, и для этого extra_picture я не уверен, как его использовать. –

+0

Как я уже говорил в своем посте, я пробовал значки, и это не мое намерение. –

+0

Я тестировал приложение андроида для видеовстречи, «Notification.EXTRA_PICTURE» содержит элемент изображения. Я обновляю свой пост с помощью «Notification.EXTRA_PICTURE». Вы сказали, что у вас не получилось с «EXTRA_PICTURE», можете ли вы быть более конкретным? Попробуйте установить imageView с растровым изображением: 'iconView.setImageBitmap (bmp)' –