android应用之间依赖的解决办法
android提供了一种机制,可以通过Intent复用多个应用的界面。比如可以在自己的应用中调用条形码识别程序zxing,然后返回条形码的结果。比如识别图书ISBN号并输出查询结果的示例这样。
不过呢,这需要系统必须事先在手机上安装zxing的条码扫描工具。否则,会报告ActivityNotFoundException。
对于zxing来讲,提供了一个集成API,使用者可以通过这个集成API调用ZXING的条码Activity。如果开发使用zxing的应用程序,并且分发给消费者使用。不能确定用户是否已经安装zxing。那么应该:
- 如果用户已经安装zxing,则使用zxing的activity;
- 如果用户没有安装zxing,提示用户安装,并引导用户通过android market下载安装。
zxing已经考虑的这个需求,在代码库中提供了这方面的支持。见:
的IntentIntegrator部分。
可以将:
目录下的两个类,复制到自己项目中即可。
可参见我写的简单示例:
http://easymorse.googlecode.com/svn/tags/android.zxing.install-0.1/
那么,当未安装zxing情况下,点击如下按钮:
将弹出提示框:
点击yes,会引导进入android market下载安装zxing条码工具。
其实看看源代码,可以发现,zxing的集成API,无非是在启动zxing activity的时候,捕获了ActivityNotFoundException,然后通过intent调用android market应用安装。
应该说,还有一种办法来集成zxing,那就是把zxing作为类库加入到自己应用程序的APK中,在:
的projects and products using zxing的android部分,可以看到既有通过intent调用的(见 via intent),也有embedded,即将zxing库嵌入到应用中的。
后者的缺点有两个:
- 如果zxing版本更新,需要重新打自己应用的包,更新zxing的类库包;
- 旧版本的zxing包嵌入在应用中,可能不支持比较新的设备。
因此,我们在开发中选择比较轻量级的做法,通过intent的方式使用zxing。
这种方式我们也会用于其他类似场合,在需要别的应用程序activity的时候。
2 Comments to “android应用之间依赖的解决办法”
这篇文章上的评论的 RSS feed TrackBack URI
By shawn, 2011年03月25日 @ 17:08
您好~我在学习您关于zxing应用时,在此处出现了错误
Intent intent = new Intent(“com.google.zxing.client.android.SCAN”);
intent.putExtra(“SCAN_MODE”, “QR_CODE_MODE”);
已在真机上装入barcode scanner的APK。不知如何解决。谢谢
By shawn, 2011年03月25日 @ 17:10
您好~我在学习您关于zxing应用时,在此处出现了错误
Intent intent = new Intent(“com.google.zxing.client.android.SCAN”);
intent.putExtra(“SCAN_MODE”, “QR_CODE_MODE”);
已在真机上装入barcode scanner的APK。不知如何解决。谢谢~~~