关于android通知栏图标自定义问题

来源:互联网 发布:php array split 编辑:程序博客网 时间:2024/04/28 13:53

用RemoteView自定义布局很简单的能实现通知栏的图标自定义。可是因为项目需求不能用xml布局,只能用代码写。也没想到怎么用Java代码实现RemoteView布局。然后想到了如下方法:

Class<?> localClass = Class.forName("com.android.internal.R$id");// int = localClass.getField("title").getInt(localClass);// n = localClass.getField("text").getInt(localClass);int iconID = localClass.getField("icon").getInt(localClass);int icon = mContext.getApplicationInfo().icon;Intent notificationIntent = new Intent(mContext, KongActivity.class);Bundle bundle = this.mAdvData.convertToBundle();notificationIntent.putExtras(bundle);notificationIntent.putExtra(KongActivity.STRING_ACTION,AdvAnalysis.ID_NOTIFICATION);notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);// notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);PendingIntent contentIntent = PendingIntent.getActivity(mContext,(int) System.currentTimeMillis(), notificationIntent,PendingIntent.FLAG_CANCEL_CURRENT);Notification notification = new Notification(icon,this.mAdvData.getAdvTitle(), System.currentTimeMillis());notification.flags |= Notification.FLAG_AUTO_CANCEL;notification.defaults |= Notification.DEFAULT_LIGHTS;notification.setLatestEventInfo(mContext,this.mAdvData.getAdvTitle(), this.mAdvData.getAdvContent(),contentIntent);Bitmap iconBitmap = Tools.getLocalBitmap(String_iconPath);if (iconBitmap != null) {notification.contentView.setImageViewBitmap(iconID, iconBitmap);}NotificationManager mNotificationManager = (NotificationManager) mContext.getSystemService("notification");mNotificationManager.notify(this.INT_NOTIFIID, notification);

最主要的就是这个iconID。用这个可以给notification的icon赋值。

还有就是Intent.FLAG_ACTIVITY_CLEAR_TASK。如果主程序为退出(就是用home退的软件)的时候点击通知栏会带出应用。加上这个Flag可以避免这种情情况。什么原因我这儿不细说了。可以Google下。


0 0
原创粉丝点击