是否可以在其他应用程序中 Inflate RemoteViews?

Is it possible to Inflate RemoteViews in other application?

我正在开发两个 android 应用程序,一个是 baseApp,另一个用作 pluginApp。目的是在安装相应插件时扩展 baseApp 的功能。 pluginApp 将包含 XML 布局文件,其中将包含我需要在 baseApp 中显示的 'new_layouts'。有没有办法通过进程间通信或类似的方式将 new_layout 从 pluginApp 传递给 baseApp?

我尝试了以下方法但没有成功 我将 pluginApp 中的布局文件包装为 'RemoteViews' 对象并将其传递给 baseApp,但是当我将其扩展到 baseApp 时出现错误提示

android.view.InflateException: Binary XML file line #9: Class not allowed to be inflated android.widget.EditText

注意:'new_layout' 在其他元素中包含一个 EditText,其中 EditText 是第一个子元素。

我以前从未使用过 RemoteViews,也不明白它们的用途。

请指导我 1.是否可以将一个应用程序的视图用于另一个应用程序? 2. RemoteViews 可以用于此目的吗?如果是那么如何? 3. 为什么我会收到错误消息?这意味着什么?

  1. whether Using view from one app into other app is possible?

不直接。

  1. Can RemoteViews be used for this purpose?

是的。

If yes then how?

大概是使用您已有的代码。 This pair of sample projects 演示过程。

  1. Why am I getting the error

因为 EditText 不是 the few widgets supported by RemoteViews 之一。

what does that indicate?

表示你有3个选择:

  1. 限制自己使用 RemoteViews

  2. 支持的小部件
  3. 不要尝试在应用程序之间共享 UI

  4. 实现您自己的 RemoteViews 类系统

最后,RemoteViews 只是一种数据结构,描述如何构建 UI 以及如何发回非常 coarse-grained 的事件(例如,点击,通过PendingIntent)。除了时间和专业知识,没有什么可以阻止您创建自己的 Parcelable 数据结构来描述如何构建比 RemoteViews 更丰富的 UI 支持。