Android 没有通知 R.java
Android Notification Without R.java
我需要在 Android 中显示本地通知。但是 Notification builder 对象应该需要任何图标才能在状态栏中显示它。它像setSmallIcon(int)
一样具有一定的强制性功能。它从 R.java
文件中获取整数参数。但是我需要在不使用 R.java
文件的情况下提供直接图像 URL。
代码:
NotificationCompat.Builder builder = new Builder(getContext());
Notification notification = builder.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(title)
.setContentText(text)
.build();
没有R.drawable.ic_launcher。我怎样才能做到这一点?
Refer Following Code
private void sendNotification(Bundle extras) {
Intent myIntent = null;
Bundle bundle = extras;
Set<String> set = bundle.keySet();
for (String s : set) {
Log.d("bundle", s);
}
String title = bundle.getString("title");
String message = bundle.getString("detail_text");
String imageUrl = bundle.getString("image");
String url = bundle.getString("url");
Log.d("url", title + " : " + imageUrl + " : " + url + " : " + bundle.getString("from") + " : " + bundle.getString("type"));
mNotificationManager = (NotificationManager)
this.getSystemService(Context.NOTIFICATION_SERVICE);
Intent notificationIntent;
if (url != null) {
notificationIntent = new Intent(this, SplashScreenActivity.class);
notificationIntent.putExtra("url", url);
notificationIntent.putExtra("title", title);
notificationIntent.setAction("FROM_NOTIFICATION");
} else {
notificationIntent = new Intent(this, SplashScreenActivity.class);
notificationIntent.setAction("FROM_NONE_NOTIFICATION");
}
LogUtils.logD(title + " : " + url);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
mBuilder.setSmallIcon(R.drawable.small_notification);
mBuilder.setLargeIcon(BitmapFactory.decodeResource(getBitmapFromURL("YOUR URL"));
/* if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
// mBuilder.setColor(this.getColor(R.color.black));
}*/
final int version = Build.VERSION.SDK_INT;
if (version >= 23) {
mBuilder.setColor(ContextCompat.getColor(this, R.color.black));
} else {
mBuilder.setColor(this.getResources().getColor(R.color.black));
}
mBuilder.setTicker("your title");
Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
mBuilder.setSound(uri);
mBuilder.setPriority(Notification.PRIORITY_MAX);
// mBuilder.setV
mBuilder.setContentTitle(title);
mBuilder.setContentText(message);
NotificationCompat.BigPictureStyle s = new NotificationCompat.BigPictureStyle();
if (imageUrl != null) {
s.bigPicture(getBitmapFromURL(imageUrl));
s.setSummaryText(message);
mBuilder.setStyle(s);
} else {
mBuilder.setContentText(message);
}
mBuilder.setAutoCancel(true);
mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
}
public 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;
}
}
小图标是强制性的我尝试删除该图标但我的应用程序崩溃了**
**参考线
mBuilder.setLargeIcon(BitmapFactory.decodeResource(getBitmapFromURL("YOUR URL"));
首先,您应该下载图像:
https://github.com/koush/ion
然后:
Icon ic = Icon.createWithContentUri("uri of your downloaded image");
builder.setSmallIcon(ic);
我需要在 Android 中显示本地通知。但是 Notification builder 对象应该需要任何图标才能在状态栏中显示它。它像setSmallIcon(int)
一样具有一定的强制性功能。它从 R.java
文件中获取整数参数。但是我需要在不使用 R.java
文件的情况下提供直接图像 URL。
代码:
NotificationCompat.Builder builder = new Builder(getContext());
Notification notification = builder.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(title)
.setContentText(text)
.build();
没有R.drawable.ic_launcher。我怎样才能做到这一点?
Refer Following Code
private void sendNotification(Bundle extras) {
Intent myIntent = null;
Bundle bundle = extras;
Set<String> set = bundle.keySet();
for (String s : set) {
Log.d("bundle", s);
}
String title = bundle.getString("title");
String message = bundle.getString("detail_text");
String imageUrl = bundle.getString("image");
String url = bundle.getString("url");
Log.d("url", title + " : " + imageUrl + " : " + url + " : " + bundle.getString("from") + " : " + bundle.getString("type"));
mNotificationManager = (NotificationManager)
this.getSystemService(Context.NOTIFICATION_SERVICE);
Intent notificationIntent;
if (url != null) {
notificationIntent = new Intent(this, SplashScreenActivity.class);
notificationIntent.putExtra("url", url);
notificationIntent.putExtra("title", title);
notificationIntent.setAction("FROM_NOTIFICATION");
} else {
notificationIntent = new Intent(this, SplashScreenActivity.class);
notificationIntent.setAction("FROM_NONE_NOTIFICATION");
}
LogUtils.logD(title + " : " + url);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
mBuilder.setSmallIcon(R.drawable.small_notification);
mBuilder.setLargeIcon(BitmapFactory.decodeResource(getBitmapFromURL("YOUR URL"));
/* if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
// mBuilder.setColor(this.getColor(R.color.black));
}*/
final int version = Build.VERSION.SDK_INT;
if (version >= 23) {
mBuilder.setColor(ContextCompat.getColor(this, R.color.black));
} else {
mBuilder.setColor(this.getResources().getColor(R.color.black));
}
mBuilder.setTicker("your title");
Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
mBuilder.setSound(uri);
mBuilder.setPriority(Notification.PRIORITY_MAX);
// mBuilder.setV
mBuilder.setContentTitle(title);
mBuilder.setContentText(message);
NotificationCompat.BigPictureStyle s = new NotificationCompat.BigPictureStyle();
if (imageUrl != null) {
s.bigPicture(getBitmapFromURL(imageUrl));
s.setSummaryText(message);
mBuilder.setStyle(s);
} else {
mBuilder.setContentText(message);
}
mBuilder.setAutoCancel(true);
mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
}
public 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;
}
}
小图标是强制性的我尝试删除该图标但我的应用程序崩溃了** **参考线
mBuilder.setLargeIcon(BitmapFactory.decodeResource(getBitmapFromURL("YOUR URL"));
首先,您应该下载图像: https://github.com/koush/ion
然后:
Icon ic = Icon.createWithContentUri("uri of your downloaded image");
builder.setSmallIcon(ic);