zxing安卓项目学习1——AndroidManifest文件
来源:互联网 发布:珠宝首饰设计软件 国际 编辑:程序博客网 时间:2024/05/21 01:44
初学安卓,想了解一个完整的APP是怎么做出来。发现谷歌zxing中有一个安卓的开源项目,我打算学习这个项目,学习这个项目中所涉及的一系列知识。
我下载的是zxing2.1的源码,导入eclipse后能在我的手机上运行。
看安卓项目当然先看AndroidManifest
AndroidManifest中首先声明了一些必须的权限
1 <uses-permission/> //权限标签
---------------------------------------------------------------------------------------------
权限标签下面是:
2 <uses-feature/>
我理解的是:APP市场能够通过此标签过滤要显示给用户的应用程序,因此用户只能看到和下载那些跟他们的设备兼容的应用程序。通过功能的兼容性来过滤应用程序是这个方法之一。
(参考:(http://blog.csdn.net/think_soft/article/details/7596796))
我做了个测试:因为我的手机没有闪光灯,所以我将文件中:
<uses-featureandroid:name="android.hardware.camera.flash"android:required="false"/>
android:required 改为 true。
(true表示:在设备上不存在指定的功能时,则该应用不能够正常运行。)
但是我依然可以在手机上运行,也就是说,程序不管这个标签的声明情况。也就是说这个标签只是用来被应用市场对APP进行过滤时所用到。
------------------------------------------------------------------------------------------------------------------------------------
3<intent-filter>
关于这个标签需要了解两个信息
(1) 显示intent 与隐式 intent 可以参考:http://tompig.iteye.com/blog/1096603
(2) intent 和 intent-filter之间的关系 ,可以参考http://www.blogjava.net/TiGERTiAN/archive/2010/02/03/311827.html
对于intent-filter我看了好久都没明白讲的是啥,后来写了个例子就明白了。
新建安卓工程并将AndroidManife.xml文件中的<application>改为
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.tian.intentfilter.IntentFilterActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.tian.androidsqlite.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.Tian" /> <category android:name="android.intent.category.Tian" /> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> <activity android:name="com.tian.intentfilter.IntentActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.Tian" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application>
首先启动的Activity是 IntentFilterActivity 其中的 onCreateOptionsMenu 方法为
public boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);Intent in = new Intent();in.setAction("android.intent.action.Tian");in.addCategory("android.intent.category.Tian");this.startActivity(in);return true;}
注意这两句话in.setAction("android.intent.action.Tian");in.addCategory("android.intent.category.Tian");很明显了,我们这个intent没有明确指明需要和哪一个Activity交互,所以这是个隐式的intent,这三句话的意思是:当一个<activity>中的<intent-filter>中定义了
<action android:name="android.intent.action.Tian" />
<category android:name="android.intent.category.Tian" />
<category android:name="android.intent.category.DEFAULT"/> //注意这里,似乎这条语句必须要加,否则程序跑不起来。
的时候。这个intent会被此Activity得到,如果有两个或者两个以上的Activity中都定义了这个<intent-filter>则这两个Activity都会得到这个intent,此时系统会跳出一个列表框,让你选择使用哪一个程序来运行,比如在zxing安卓项目中使用分享功能时,就会跳出来一个列表框,上面有微信啊,短信啊,QQ啊等让你选择,这个功能就是intent-filter实现的。
再来看 MainActivity中的 onCreat方法
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.i("TRecorder","Action:"+getIntent().getAction());Iterator<String> is = getIntent().getCategories().iterator();while (is.hasNext()) {Log.i("TRecorder","Category:"+is.next());}Log.i("TRecorder","I2收到");}
因为此Activity可以响应刚才那个inte所以在这里我们可以打印出相应的消息。
再看IntentActivity 我们没有定义
<category android:name="android.intent.category.Tian" />
所以IntentActivity是无法响应刚才那个intent的。
总结一下:intent-filter 总是先匹配action 然后再 匹配 category ,如果有两个以上的Activity能够响应这个intent,则系统会让你选择使用哪一个Activity来响应这个intent。如果一个intent没有一个Activity能够响应此intent则程序会出错。
Androidmanife文件中不认识的标签大致就是这么几个,下一步开始阅读的是首先启动的Activity——CaptureActivity
- zxing安卓项目学习1——AndroidManifest文件
- zxing安卓项目学习1——CaptureActivity之onCreate——BeepManager
- zxing安卓项目学习1——CaptureActivity之onCreate——BeepManager
- 安卓笔记—AndroidManifest.xml文件详解
- AndroidManifest.xml 安卓清单文件
- 【Android】安卓学习笔记之在AndroidManifest 文件中注册Activity
- 安卓开发——AndroidManifest.xml配置详解一
- android学习——AndroidManifest.xml清单文件的重要性
- ZXing笔记(1)—Hello ZXing
- AndroidManifest文件详细学习
- 安卓高级5 zXing
- 安卓Zxing生成二维码
- 项目总结——zxing扫描
- 安卓开发——AndroidManifest.xml标签作用详解二
- Android项目目录结构介绍(续)——AndroidManifest.xml文件介绍
- 安卓学习记录——(1.安卓项目的目录结构)
- 安卓(android)建立项目时失败。出现AndroidManifest.xml file missing几种解决方法?
- Android学习笔记之AndroidManifest.xml文件解析 1
- struts2 s:display嵌套标签s:if的替代方法
- 定制iOS 7中的导航栏和状态栏
- Java基础笔记四集合和IO流
- Windows socket之IO完成端口(IOCP)模型开发(原作者:csdn——ithzhang)
- 仿造眼图生成原理写的小例子
- zxing安卓项目学习1——AndroidManifest文件
- .NET Chart(3)---与图表交互(鼠标移动线段高亮)
- ubuntu12.04打开终端方法
- Eclipse maven构建springmvc项目
- php连接不同数据库的方法分享
- Android中利用GridView实现水平和垂直均有滚动条的表格效果
- Android Switch控件(在android2.2 api8及以上使用)
- 6800和8080系统的差别
- secureCRT中让vim高亮显示