Tôi gặp sự cố này khi tạo và gửi thông báo chính xác. Tôi đọc thông số kỹ thuật thiết kế thông báo Lollipop 5.0 update
mới tại đây: https://material.google.com/style/icons.html và https://material.google.com/patterns/notifications.html và tôi nhận thấy rằng Biểu tượng cần phải là white
để hiển thị chính xác. Điều đó là tốt và tôi hoàn toàn hiểu điều đó, nhưng tôi muốn thông báo của tôi để hiển thị một hình ảnh, mà rõ ràng là không thể có màu trắng. Tuy nhiên, điều thực sự gây nhầm lẫn cho tôi là thực tế là khi tôi cố gắng hiển thị thông báo trên điện thoại của mình, mọi thứ đều hoạt động tốt. Nó trông giống như sau:Hình ảnh Facebook dưới dạng Thông báo Biểu tượng Lớn xuất hiện dưới dạng màu trắng trên các điện thoại khác nhau?
Tuy nhiên, trên điện thoại của bạn tôi, nó trông giống như một hình vuông màu trắng, một cái gì đó như thế này:
Đó là kỳ quặc vì cả hai chúng tôi có cùng một phiên bản Android, phiên bản 6.0.1. Dưới đây là đoạn code tôi sử dụng để gửi các thông báo:
private class NotificationPicture extends AsyncTask<String, Void, Bitmap> {
Context context;
String userId;
String postId;
String name;
String notificationBody;
String from;
public NotificationPicture(Context context) {
super();
this.context = context;
}
@Override
protected Bitmap doInBackground(String... params) {
userId = params[0];
postId = params[1];
name = params[2];
notificationBody = params[3];
from = params[4];
try {
URL url = new URL("https://graph.facebook.com/" + userId + "/picture?type=large");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream in = connection.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(in);
Bitmap output;
Rect srcRect;
if (bitmap.getWidth() > bitmap.getHeight()) {
output = Bitmap.createBitmap(bitmap.getHeight(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
srcRect = new Rect((bitmap.getWidth()-bitmap.getHeight())/2, 0, bitmap.getWidth()+(bitmap.getWidth()-bitmap.getHeight())/2, bitmap.getHeight());
} else {
output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getWidth(), Bitmap.Config.ARGB_8888);
srcRect = new Rect(0, (bitmap.getHeight()-bitmap.getWidth())/2, bitmap.getWidth(), bitmap.getHeight()+(bitmap.getHeight()-bitmap.getWidth())/2);
}
Canvas canvas = new Canvas(output);
final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
float r;
if (bitmap.getWidth() > bitmap.getHeight()) {
r = bitmap.getHeight()/2;
} else {
r = bitmap.getWidth()/2;
}
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawCircle(r, r, r, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, srcRect, rect, paint);
return output;
} catch (IOException e) {
FirebaseCrash.report(e);
return null;
}
}
@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);
try {
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context)
.setContentTitle(getString(R.string.app_name))
.setContentText(notificationBody)
.setTicker(from + " has responded!")
.setAutoCancel(true)
.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
.setStyle(new NotificationCompat.BigTextStyle().bigText(notificationBody))
.setSmallIcon(R.drawable.ic_tabs_notification_2)
.setLargeIcon(result);
Intent resultIntent = new Intent(context, CommentsActivity.class);
setupPostDetails(notificationBuilder, resultIntent, postId, userId, name, context);
} catch (Exception e) {
e.printStackTrace();
}
}
}
cấu hình build.gradle:
compileSdkVersion 23
buildToolsVersion "23.0.1"
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
defaultConfig {
applicationId 'com.schan.tabs'
multiDexEnabled true
minSdkVersion 19
targetSdkVersion 23
versionCode 16
versionName "1.16"
signingConfig signingConfigs.Tabs
}
Nếu ai có bất kỳ ý tưởng tại sao điều này xảy ra, một số cái nhìn sâu sắc sẽ được nhiều đánh giá cao. Tôi có một Samsung SM-G900V (Samsung S5) và bạn của tôi có một điện thoại One plus One nếu có.
https://medium.com/exploring-android/android-n-introducing-upgraded-notifications-d4dd98a7ca92#.3xrmucoq2 –