好的,因为我无法在对您的评论中发布此内容,因此将其发布在这里作为答案。
public class SendNotificationAsyncTask extends AsyncTask<String, Void, Bitmap> {
/*///////////////////////////////////////////////////////////////
// MEMBERS
*////////////////////////////////////////////////////////////////
private static final String TAG = Globals.SEARCH_STRING + SendNotificationAsyncTask.class.getSimpleName();
private Context mContext;
private String mMessage;
private String mImageUrl;
private String mIdOfDetailToShow;
/*///////////////////////////////////////////////////////////////
// CONSTRUCTOR
*////////////////////////////////////////////////////////////////
public SendNotificationAsyncTask(Context context, String imageUrl, String message, String idToShow) {
super();
mContext = context;
mMessage = message;
mImageUrl = imageUrl;
mIdOfDetailToShow = idToShow;
}
/*///////////////////////////////////////////////////////////////
// BASECLASS OVERRIDES
*////////////////////////////////////////////////////////////////
@Override
protected Bitmap doInBackground(String... params) {
InputStream in;
try {
URL url = new URL(mImageUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(10000);
connection.setReadTimeout(10000);
connection.setDoInput(true);
connection.setInstanceFollowRedirects(true);
connection.connect();
in = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(in);
return myBitmap;
} catch (MalformedURLException e) {
A35Log.e(TAG, e.getMessage());
} catch (IOException e) {
A35Log.e(TAG, e.getMessage());
}
return null;
}
@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);
try {
NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
Intent intent = new Intent(mContext, SplashScreenActivity.class);
intent.putExtra(Globals.INTENT_KEYS.KEY_FROM_BADGE_ACCESS, true);
intent.putExtra(Globals.INTENT_KEYS.KEY_ID_OF_DETAIL_TO_OPEN, mIdOfDetailToShow);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, PendingIntent.FLAG_ONE_SHOT);
Notification notification = new Notification.Builder(mContext)
.setContentTitle(mContext.getResources().getString(R.string.app_name))
.setContentText(mMessage)
.setSmallIcon(R.drawable.logo_main_white)
.setContentIntent(pendingIntent)
.setStyle(new Notification.BigPictureStyle().bigPicture(result))
.setLargeIcon(result).build();
// hide the notification after its selected
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(1, notification);
} catch (Exception e) {
A35Log.e(TAG, e.getMessage());
}
}
}
我基本上是下载图像,然后创建大图像通知。我在 25 或 26 中没有任何问题,并且已确认经过测试。