0
回答
android应用之间依赖的解决办法
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

android提供了一种机制,可以通过Intent复用多个应用的界面。比如可以在自己的应用中调用条形码识别程序zxing,然后返回条形码的结果。

不过呢,这需要系统必须事先在手机上安装zxing的条码扫描工具。否则,会报告ActivityNotFoundException

对于zxing来讲,提供了一个集成API,使用者可以通过这个集成API调用ZXING的条码Activity。如果开发使用zxing的应用程序,并且分发给消费者使用。不能确定用户是否已经安装zxing。那么应该:

  • 如果用户已经安装zxing,则使用zxing的activity;
  • 如果用户没有安装zxing,提示用户安装,并引导用户通过android market下载安装。

zxing已经考虑的这个需求,在代码库中提供了这方面的支持。见:

http://code.google.com/p/zxing/wiki/ScanningViaIntent

的IntentIntegrator部分。

可以将:

http://code.google.com/p/zxing/source/browse/trunk/android-integration/src/com/google/zxing/integration/android

目录下的两个类,复制到自己项目中即可。

可参见我写的简单示例:

http://easymorse.googlecode.com/svn/tags/android.zxing.install-0.1/

那么,当未安装zxing情况下,点击如下按钮:

image

将弹出提示框:

image

点击yes,会引导进入android market下载安装zxing条码工具。

image

其实看看源代码,可以发现,zxing的集成API,无非是在启动zxing activity的时候,捕获了ActivityNotFoundException,然后通过intent调用android market应用安装。

应该说,还有一种办法来集成zxing,那就是把zxing作为类库加入到自己应用程序的APK中,在:

http://code.google.com/p/zxing/wiki/InterestingLinks

的projects and products using zxing的android部分,可以看到既有通过intent调用的(见 via intent),也有embedded,即将zxing库嵌入到应用中的。

后者的缺点有两个:

  1. 如果zxing版本更新,需要重新打自己应用的包,更新zxing的类库包;
  2. 旧版本的zxing包嵌入在应用中,可能不支持比较新的设备。

因此,我们在开发中选择比较轻量级的做法,通过intent的方式使用zxing。

这种方式我们也会用于其他类似场合,在需要别的应用程序activity的时候。

文章转自: http://marshal.easymorse.com/archives/2783

举报
华宰
发帖于6年前 0回/923阅
顶部