在Android项目中,我创建了一个基于Java的Drawable
(更具体地说,是LevelListDrawable
)。这样我就可以从值动态创建图标。
我有一个涵盖所有数字的级别,并包含Drawable
。然后在Drawable
中我绘制一个数字,然后由onLevelChange
设置并重新绘制。
我想将LevelListDrawable
用作通知的图标。
我制作了一个名为notif_icon.xml
的XML文件,我相信它应该像Drawable一样工作。
<?xml version="1.0" encoding="utf-8"?>
<my.app.package.MyDrawable />
然后我尝试在我的代码中使用它:
mNotif = new Notification.Builder(this)
.setContentTitle("Title")
.setContentText("Message")
.setOngoing(true)
.setSmallIcon(R.drawable.notif_icon, random)
.build();
// And show it later...
NotificationManager man = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
man.notify(1, mNotif);
但我明白了:
android.app.RemoteServiceException:从包my.app.package发布的错误通知:无法创建图标:StatusBarIcon(pkg = my.app.packageuser = 0 id = 0x7f020001 level = 0 visible = true num = 0)
可能有什么不对?
答案 0 :(得分:1)
可能有什么不对?
其他进程无法访问您应用的自定义视图,绘图或其他自定义类。因此,呈现通知的操作系统进程无法访问my.app.package.MyDrawable
。这假设您的XML语法是正确的,我不知道您可以通过这种方式从任意类创建XML drawable(虽然我不能排除它,因为我还没有研究过这一点)。
欢迎您使用<level-list>
可绘制资源和RemoteViews
,但不能使用在内存中构建的LevelListDrawable
,也不能使用LevelListDrawable
的自定义子类