【发布时间】:2016-05-27 01:24:49
【问题描述】:
是否有关于如何开发具有“附加组件”的应用程序的大纲或入门指南?
例如,如何开发某种框架来为应用添加“主题”?
有 2 个主题的基本应用程序。用户应该能够为某个主题下载另一个应用程序。
原来的应用程序和新下载的应用程序是如何联系在一起的?
您将如何开发原始应用程序以从仅第二个主题的应用程序中获取主题信息和图形资源?
我的理解是应用程序是完全独立的,所以这就是为什么我不清楚如何实现这一点。
【问题讨论】:
标签: android
是否有关于如何开发具有“附加组件”的应用程序的大纲或入门指南?
例如,如何开发某种框架来为应用添加“主题”?
有 2 个主题的基本应用程序。用户应该能够为某个主题下载另一个应用程序。
原来的应用程序和新下载的应用程序是如何联系在一起的?
您将如何开发原始应用程序以从仅第二个主题的应用程序中获取主题信息和图形资源?
我的理解是应用程序是完全独立的,所以这就是为什么我不清楚如何实现这一点。
【问题讨论】:
标签: android
原来的应用程序和新下载的应用程序是如何联系在一起的?
对于一个主题,谁说他们必须一起讨论?
您将如何开发原始应用以从仅第二个主题的应用中获取主题信息和图形资源?
第 1 步:为您的包选择一个命名约定。例如,如果您的基础应用程序是 com.abc.app,那么您的主题可能是 com.abc.app.theme.*。
第 2 步:当用户选择主题时,请使用 PackageManager 和 getInstalledApplications() 通过检查主题包名称来查找主题。
第 3 步:当需要使用主题时,请在 PackageManager 上致电 getResourcesForApplication() 以获取主题应用程序的 Resources,这样您就可以开始使用了。
我确信有一些策略(例如,主题主要是一个传送带,将其内容部署在外部存储上的目录中,您的主应用程序从中读取信息),但这是我要开始的一个,因为它应该需要最少的用户干预。
【讨论】:
我认为在这种情况下,最简洁的设计是在 Market 中拥有一个应用程序,并在您自己的服务器上提供可用的主题。然后用户只需从 Market 下载应用程序一次,然后应用您服务器上可用的主题。
但是,如果您希望将它们作为单独的市场条目,您可以在清单上设置 android:sharedUserId 标志,使它们都在相同的用户 ID 下运行,这将允许您共享文件(位图等) 它们之间。请记住,它们都必须使用相同的证书进行签名。
用户可能会感到困惑的是,他们可以在下载主应用程序之前下载插件......在这种情况下,您必须显示一条错误消息,要求他们下载主应用程序。
【讨论】:
sharedUserId 存在风险,因为它的任何更改都意味着您的应用无法再读取自己的文件。
sharedUserId 是否也可以用于制作一个“完整”版本的应用程序,该应用程序只是作为主应用程序的键,以启用功能?