3

我有一个 RemoteViews 实例,作为可打包数据从另一个应用程序接收。我不能简单地更改服务结果(仍然必须提供向后兼容性)。接收到的 RemoteView 有一个简单的布局:一个 LinearLayout 容器,里面有一个 TextView 和一个 ImageView。图像视图带有一个位图图像集。到现在为止,远程视图是通过调用来膨胀的remoteView.apply(Context context, ViewGroup parent),然后生成的视图被添加到屏幕上的另一个布局中。

目前将支持库更新到最新版本后:在我的情况下,从 25.3.1 到 26.1.0,调用remoteView.apply(Context, ViewGroup)开始抛出异常:

android.widget.RemoteViews$ActionException: view: android.support.v7.widget.AppCompatImageView can't use method with RemoteViews: setImageBitmap(class android.graphics.Bitmap)

这似乎是由于缺少AppCompatImageViewRemotableViewMethod上的注释引起的。setImageBitmap()也许它在支持 26+ 时被删除或从未存在,因为 AppCompatImageView 不打算在 RemoteViews 中使用......似乎在支持库(23.1.0)的早期版本中,“setImageResource(int)”和“setBackgroundResource( int)”以同样的方式开始失败:https ://issuetracker.google.com/issues/37071559

我想了解的是:

  • 它是否按预期工作?我想是的,但是:
  • 如何解决这个问题?(可能我错过了一些东西......)或者:
  • RemoteViews.apply(Context, ViewGroup)当用于 RemoteViews 的膨胀时,有没有办法避免膨胀 AppCompatimageViews 而不是简单的 ImageView ?提供给该apply方法的上下文是“AppCompatActivity”。

我能够找到的唯一“解决方案”(一个丑陋的解决方法)是使用反射从 RemoteView 检索位图数据,然后在我自己的布局中使用该图像。(而不是膨胀 RemoteViews 并将所有内容添加到布局中)。

提前致谢

4

0 回答 0