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 inreceiver
Ich 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();
}
}
}