如何从另一个应用程序的通知中获取图像?

Lor*_*pid 5 notifications android

我正在创建一个通知管理应用程序,我想获取其他应用程序显示的通知内容。目前我使用这样的代码:

statusBarNotification.getNotification().extras.getString(Notification.EXTRA_TITLE);
Run Code Online (Sandbox Code Playgroud)

和这个 :

statusBarNotification.getNotification().extras.getString(Notification.EXTRA_TEXT);
Run Code Online (Sandbox Code Playgroud)

阅读通知的标题和文本。但是几个小时后,我找不到获取通知文本附带的图像的方法。例如,Whatsapp 通知中显示的个人资料图片。我知道这不是小图标或大图标,我检查了几次。

因此,如果有人可以以任何方式提供帮助,将不胜感激

Ber*_*tel 5

我假设您NotificationListenerService用来收听来自其他应用程序的通知。

在您的NotificationService课程中,在 extra 中提取图标资源 IDNotification.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
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 有效。多谢。罪魁祸首是android studio中的“Instant Run”。我必须卸载我的应用程序并重新安装才能看到新结果。我按照你说的那样使用“extras.get(...)” (2认同)