是否可以在其他应用程序中为RemoteViews充气?

时间:2017-02-14 20:14:01

标签: android android-view remoteview android-remoteview android-messaging

我正在开发两个Android应用程序,一个是baseApp,另一个是pluginApp。目的是在安装相应的插件时扩展baseApp的功能。 pluginApp将包含XML布局文件,其中包含我需要在baseApp中显示的“new_layouts”。有没有办法通过Inter Process Communication或类似的方式将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 个答案:

答案 0 :(得分:0)

  
      
  1. 是否可以将一个应用中的视图用于其他应用?
  2.   

不直接。

  
      
  1. 可以将RemoteView用于此目的吗?
  2.   

  

如果是,那么如何?

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

  
      
  1. 为什么我收到错误
  2.   

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

  

这表明了什么?

这表明您有三种选择:

  1. 限制使用RemoteViews

  2. 支持的小部件
  3. 请勿尝试在应用之间共享用户界面

  4. 实施您自己的RemoteViews - 类似系统

  5. 最后,RemoteViews只是一个数据结构,它描述了如何构建用户界面以及如何发送非常粗粒度的事件(例如,点击,通过PendingIntent)。除了时间和专业知识之外,没有什么能阻止您创建自己的Parcelable数据结构,该结构描述了如何构建比RemoteViews支持的更丰富的UI。