AndroidManifest.xml
我比较喜欢用bugger驱动的方式去学习,一个比较有目的性,二个感觉比看书很容易理解和记住。
今天碰到个问题,想用BroadcastReceiver 收一条短信信息。
public void onReceive(Context context, Intent intent) {
Log.v("test", "i haved do");
// TODO Auto-generated method stub
if (intent.getAction().equals(strACT)) {
StringBuilder sb = new StringBuilder();
Bundle bundle = intent.getExtras();
SmsManager sms = SmsManager.getDefault();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] msg = new SmsMessage[pdus.length];
System.out.println(msg);
for (int i = 0; i < pdus.length; i++) {
msg[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
for (SmsMessage currMsg : msg) {
Log.d("test", currMsg.getDisplayMessageBody());
sb.append("From:");
sb.append(currMsg.getDisplayOriginatingAddress());
sb.append("\nMessage:");
sb.append(currMsg.getDisplayMessageBody());
}
}
中规中矩的写下了收短信的代码,结果test输不出来。
搞了好久,原来是因为忘记在AndroidManifest.xml中注册receive了。
顺便好好学习下这个文件。
AndroidManifest.xml 是一个包含了各种暴露的组件和对应的实现类,权限等等,还有一个是记录了启动位置,没有他程序根本就启动不起来,呵呵。
具体内容可以参考
http://www.cnblogs.com/salam/archive/2010/09/22/1833080.html
http://hi.baidu.com/linghtway/blog/item/83713cc1c2d053170ff477a7.html
在编译过程中,第一步资源打包的时候就被aapt工具给执行了。
参考内容http://www.cnblogs.com/devinzhang/archive/2011/12/20/2294686.html
这样图一看,app的编译执行过程就明白了,manifest在第一步,所以很重要哦,该注册的没注册就跑不起来了。