我如何在市场上实施扩展包?就像我希望用户能够购买更多图像一样,我如何做到这一点,并让主应用程序识别并加载这些图像?你能指点我的教程吗?我使用谷歌搜索但没有发现任何非常具体和初学者友好的东西。大多数是关于应用程序计费,但这不是我正在寻找的。
答案 0 :(得分: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);