2011-03-12 49 views
5

我正在开发一个使用多个第三方应用程序的Android应用程序,这些应用程序由意图调用,例如,第三方日历,网络视频等。因此,为了正确启动这些意图,需要安装这些应用程序。在我的应用程序中包含这些应用程序以便它们自动安装时是否可行? 这似乎是一个相当糟糕的方式让用户手动安装这些应用程序...在一个应用中捆绑多个应用程序

有什么建议吗?

感谢 彼得

回答

7

是否possbile包括那些的APK我的应用程序,使它们自动安装好时,我的应用程序是安装?

这可能不是一个好主意。

对于初学者来说,这可能是版权侵犯,除非你有这些开发者的明确许可。

然后,这些开发者是否确实暴露了一个API,他们期望您使用这种方式,以及该API对他们是唯一的还是属于通用系统的一部分(例如,ACTION_SEND)。用户应该能够安装他们想要的任何应用程序,以满足通用的Intent请求(例如,ACTION_SEND),并且不会被迫使用您指定的某个应用程序。而且,您不应该将应用程序集成到不公开已记录且受支持的API或以其他方式表明他们对此类集成感兴趣的应用程序。

然后,如果这些应用程序最初并未通过某些标准分发服务(例如Android Market)安装,那么这些应用程序是否可以稍后更新。

然后,所有这些APK文件都会让您自己的APK文件变大,占用设备上更多的空间。

如果你可以通过所有这一切,它应该是可能的。将APK打包为资产,首先将它们复制到外部存储,然后通过startActivity()使用正确的MIME类型在其上启动ACTION_VIEWIntent

但是,这可能不是一个好主意。

这似乎是一个相当糟糕的方式让用户手动安装这些应用程序...

理想情况下,你的应用程序不应该依赖于这些其他应用程序,所以它没有多大关系是否用户拥有或不拥有。您可以通过PackageManagerqueryIntentActivities()检测它们是否在那里,然后使用它来确定是否要禁用应用程序的某些部分,或者指导用户安装额外的应用程序等。

+0

下面是一个体面的用例:让我们来说说我的应用取决于ZXing条码扫描器(http://code.google.com/p/zxing/)。他们似乎鼓励其他应用程序通过Intents(http://code.google.com/p/zxing/wiki/ScanningViaIntent)依赖他们的应用程序。将扫描仪与我的应用程序捆绑在一起会很好,特别是如果我怀疑用户第一次使用它时可能没有网络连接。尽管你描述的困难,你认为这将有资格捆绑吗? – 2011-03-16 15:27:44

+0

@Jan Zankowski:恕我直言,这是为什么*不*要捆绑的一个很好的例子。ZXing希望通过APK集成Barcode Scanner的原因恰恰就是他们可以更新应用程序。这就是为什么他们要为集成JAR提供自动检测逻辑和市场支持。如果您对用户自己安装条码扫描器不以为意,那么至少将ZXing直接集成到您自己的代码中,因为它是开源的,所以您不会浪费额外的空间。不过,最终,条码扫描仪是否可以按照您的要求发货对于ZXing来说是一个问题。 – CommonsWare 2011-03-16 16:59:46

+0

我有类似的情况。我想避免在C#中编写太多的共享代码,所以我正考虑在C#中完成一些代码,其余部分在JAVA中,并使用意图一起讨论。因此将两个apk文件合并成一个文件是有意义的。 – slott 2012-06-22 05:28:13

相关问题