java - 安卓应用扩展包

标签 java android eclipse

我将如何在市场上实现扩展包?就像如果我希望用户能够购买更多图片,我该怎么做并让主应用程序识别并加载这些图片?有什么教程可以指点我吗?我使用谷歌搜索但没有找到任何非常具体和初学者友好的内容。大多数都是关于应用内计费的,但这不是我要找的。

最佳答案

您可以使用 PackageManager寻找您的扩展包。识别扩展包的确切方式取决于您将如何使用它们。

例如,如果您的扩展包在某种程度上是可运行的——即它们都有一个主要 Activity ——那么您可能会有一个自定义的 Intent 操作,并且您将使用 PackageManager.queryIntentActivities() 为您提供可以处理该操作的已安装 Activity 列表。

如果这些扩展包只提供资源而不提供代码,您可以选择拥有一个您可以按 Intent 识别的“虚拟”组件,如上文所述 - 即使您无意运行它 - 或者您可以寻找另一种方法。例如,如果除了您之外没有人制作这些扩展包,您可以简单地通过包名称来识别它们。

PackageManager pm = getPackageManager();
List<PackageInfo> packages = pm.getInstalledPackages();
for(PackageInfo package : packages) {
    if(package.packageName.startWith("com.myapp.extension.") {
        // found an extension package!
        handleExtensionPackage(package);
    }
}

如果您需要从扩展包中加载资源,则需要为该包创建上下文,查找资源标识符,然后加载资源。

Context extensionContext = createPackageContext(package.packageName, 0);
Resources extensionResources = extensionContext.getResources();
int r_drawable_pic = extensionResources.getIdentifier("drawable/pic", null, package.packageName);
Drawable remotePic = extensionResources.getDrawable(r_drawable_pic);

关于java - 安卓应用扩展包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17800999/

相关文章:

java - onLocationChanged() 中的 map.moveCamera

java - 如何在横向模式下检测方向

java - 为什么这里不允许转换为 "GenericType<?>"?

python - 使用 PyDev 运行单元测试

android - 如何使通知恢复而不是重新创建 Activity ?

android - 在 Eclipse 中更新现有的 Android 应用程序?

java - 如何循环和编辑流值(字符串)

java - 在 Hibernate 中重新附加分离对象的正确方法是什么?

java - 尝试从 JTable 中删除行时收到大量错误消息

android - 在 UIAutomator 测试中引用资源标识符的最佳方式是什么?