Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将其他应用程序的可绘制图标设置为通知生成器_Android_Image_Notifications_Android Notification Bar - Fatal编程技术网

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。所以我使用了第一部分。您正确地获得了可绘制图像,我的意思是,您在随机图像中尝试了此可绘制图像,以查看是否存在问题?我在服务中使用此逻辑