3

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

4

1 回答 1

2

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

例如,如果你的扩展包可以以某种方式运行——即它们都有一个主要的活动——那么你可能会有一个自定义的意图操作,你会使用PackageManager.queryIntentActivities()给你一个可以处理的已安装活动列表行动。

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

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);
于 2013-07-23T05:14:46.010 回答