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

用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下。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值