Android 将其他应用程序的可绘制图标设置为通知生成器
我正在处理应用程序,在该应用程序中,我将获得其他应用程序信息。以及通知生成器上显示的信息。 我得到另一个应用程序图标,并希望在通知中显示。但获取的信息包含可绘制的图像 那么,如何在通知上显示可绘制图像。 这是我的代码示例Android 将其他应用程序的可绘制图标设置为通知生成器,android,image,notifications,android-notification-bar,Android,Image,Notifications,Android Notification Bar,我正在处理应用程序,在该应用程序中,我将获得其他应用程序信息。以及通知生成器上显示的信息。 我得到另一个应用程序图标,并希望在通知中显示。但获取的信息包含可绘制的图像 那么,如何在通知上显示可绘制图像。 这是我的代码示例 String packageName=appSetting.getHeavyDrainingAppName(); ApplicationInfo app = getPackageManager().getApplicationInfo(packageName, Packa
String packageName=appSetting.getHeavyDrainingAppName();
ApplicationInfo app = getPackageManager().getApplicationInfo(packageName, PackageManager.GET_META_DATA);
int iconId = ......????
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setSmallIcon(iconId)
.setContentTitle(getResources().getString(R.string.heavy_drain_text))
.setContentText("Tap to stop")
.setOngoing(true);
关于这个问题,有几点: 第一: 您可以从可绘图(而不是资源id)设置LargeIcon,如下所示
Drawable icon = getActivity().getPackageManager().getApplicationIcon(packageName);
Bitmap bitmap = ((BitmapDrawable)icon).getBitmap();
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setLargeIcon(bitmap)
.setContentTitle("hahah")
.setContentText("Tap to stop")
.setOngoing(true);
第二:
如果需要在API中设置低于23的小图标,则需要设置资源id,如R.drawable.your_resource
。
NotificationCompat.Builder不允许您在setSmallIcon()中使用可绘制的s或位图
第三:
幸运的是,在23+版中,使用Notification.Builder,支持已扩展到Icon
键入setSmallIcon()
,如下所示:
Drawable icon = getActivity().getPackageManager().getApplicationIcon(packageName);
Bitmap bitmap = ((BitmapDrawable)icon).getBitmap();
Notification.Builder mBuilder =
new Notification.Builder(context)
.setSmallIcon(Icon.createWithBitmap(bitmap))
.setLargeIcon(bitmap)
.setContentTitle("hahah")
.setContentText("Tap to stop")
.setOngoing(true);
你试过哪一部分?因为我写过,在pré23版本中,你不能将setSmallIcon与可绘制或位图一起使用。我正在根据我的要求尝试第一部分。我得到的是可绘制的图像,而不是图像的id。所以我使用了第一部分。您正确地获得了可绘制图像,我的意思是,您在随机图像中尝试了此可绘制图像,以查看是否存在问题?我在服务中使用此逻辑