новый NotificationCompat.Builder (Context) - как установитьLargeIcon () из URL - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь .setLargeIcon(getBitmapFromUrl(url), и он не устанавливается.

    public void showSmallNotification(String title, String message, String url, Intent intent) {
    Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    PendingIntent resultPendingIntent =
            PendingIntent.getActivity(mCtx,ID_SMALL_NOTIFICATION,intent,
                    PendingIntent.FLAG_UPDATE_CURRENT
            );
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mCtx);

    Notification notification = mBuilder.setSmallIcon(R.drawable.ic_logo_small).setTicker(title).setWhen(0)
            .setAutoCancel(true)
            .setContentIntent(resultPendingIntent)
            .setContentTitle(title)
            .setSmallIcon(R.drawable.ic_logo_small)
            .setLargeIcon(getBitmapFromURL(url))
            .setContentText(message)
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            .setSound(defaultSoundUri)
            .build();

    notification.flags |= Notification.FLAG_AUTO_CANCEL;

    NotificationManager notificationManager = (NotificationManager) mCtx.getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(ID_SMALL_NOTIFICATION, notification);
}

здесь я конвертирую изображение из URL в растровое изображение

//The method will return Bitmap from an image URL
private Bitmap getBitmapFromURL(String strURL) {
    try {
        URL url = new URL(strURL);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        Bitmap myBitmap = BitmapFactory.decodeStream(input);
        return myBitmap;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }

В основном, если бы я мог скользитьизображение.Фантастика.В любом случае, небольшая помощь, так что мой уведомитель будет простым и крутым, как твиттер и инстаграм.Спасибо ..

UPDATED: .setLargeIcon(BitmapFactory.decodeResource(mCtx.getResources(), R.drawable.ic_logo_small)) works but url doesn't.

но изображение, которое я хочу установить, онлайн (mysql)

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

если вы используете Glide, вы можете скачать вот так

GlideApp.with(this).asBitmap().skipMemoryCache(true).load(url).into(150, 150).get()

и вы должны установить уведомление после загрузки изображения,

0 голосов
/ 21 марта 2019

Вы должны загрузить изображение перед вызовом setLargeIcon

Вы можете загрузить изображение, используя AsyncTask:

public class DownloadImageAndShowNotification extends AsyncTask<String, Void, Bitmap> {

    private Context mContext;
    private String mUrl;

    DownloadImageAndShowNotification(Context context, String url) {
        super();
        this.mContext = context;
        this.mUrl = url;
    }

    @Override
    protected Bitmap doInBackground(String... params) {
        InputStream in;
        try {
            URL url = new URL(mUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            in = connection.getInputStream();
            return BitmapFactory.decodeStream(in);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Bitmap result) {
        super.onPostExecute(result);
        // Build your notification with the bitmap
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...