Lade Bild von URL in Benachrichtigungs-Android

In meiner Android-Anwendung möchte ich Benachrichtigungssymbole dynamisch festlegen, die von der URL geladen werden. Dafür habe ich verwendetsetLargeIcon Eigentum von NotificationBuilder inreceiverIch habe viele Links gefunden und verschiedene Lösungen ausprobiert, aber keine gewünschte Ausgabe erhalten. Obwohl ich dieses Bild von der URL heruntergeladen und diese Bitmap in der Benachrichtigung festgelegt habe, wird es nicht angezeigt. Stattdessen wird das Symbol angezeigtsetSmallIcon Bild als großes Symbol. Ich weiß nicht, wo ich falsch liege. Hier poste ich meinen Code. Bitte helfen Sie mir, dieses Problem zu lösen. Danke.

Code:

@SuppressLint("NewApi")
public class C2DMMessageReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if ("com.google.android.c2dm.intent.RECEIVE".equals(action)) {
            Log.e("C2DM", "received message");
            final String fullName = intent.getStringExtra("message");
            final String payload1 = intent.getStringExtra("message1");
            final String payload2 = intent.getStringExtra("message2");
            final String userImage = intent.getStringExtra("userImage");

            Log.e("userImage Url :", userImage); //it shows correct url

            new sendNotification(context)
                    .execute(fullName, payload1, userImage);
        }
    }

private class sendNotification extends AsyncTask<String, Void, Bitmap> {

        Context ctx;
        String message;

        public sendNotification(Context context) {
            super();
            this.ctx = context;
        }

        @Override
        protected Bitmap doInBackground(String... params) {

            InputStream in;
            message = params[0] + params[1];
            try {

                in = new URL(params[2]).openStream();
                Bitmap bmp = BitmapFactory.decodeStream(in);
                return bmp;

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Bitmap result) {

            super.onPostExecute(result);
            try {
                NotificationManager notificationManager = (NotificationManager) ctx
                        .getSystemService(Context.NOTIFICATION_SERVICE);

                Intent intent = new Intent(ctx, NotificationsActivity.class);
                intent.putExtra("isFromBadge", false);


                Notification notification = new Notification.Builder(ctx)
                        .setContentTitle(
                                ctx.getResources().getString(R.string.app_name))
                        .setContentText(message)
                        .setSmallIcon(R.drawable.ic_launcher)
                        .setLargeIcon(result).build();

                // hide the notification after its selected
                notification.flags |= Notification.FLAG_AUTO_CANCEL;

                notificationManager.notify(1, notification);

 ,           } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

Antworten auf die Frage(4)

Ihre Antwort auf die Frage