Android开发中短信触发的示例分析(android开发,移动开发)

时间:2024-05-03 03:23:37 作者 : 石家庄SEO 分类 : 移动开发
  • TAG :

Android 中BroadCast Receiver可以用来侦听广播事件。在使用Broadcast 之前,必须使用代码或是在AndroidManifest.xml进行注册。

下面的例子实现使用短信来触发AndroidGraphics2DTutorial中的示例。短信格式为:@demo:xxxx ,xxxx为 示例名称,比如, 启动Colors示例, 则向手机发送: @demo:Colors . 手机在收到短信后,先检测短信格式是否符合 @demo:xxxx, 若符合,这启动对应的示例。

在AndroidGraphics2DTutorial中添加一个自定义的Broadcast Receiver SmsMessageReceiver 用于监测接受到的短信:

publicclassSmsMessageReceiverextendsBroadcastReceiver{privatestaticfinalStringqueryString="@demo:";@OverridepublicvoidonReceive(Contextcontext,Intentintent){Bundleextras=intent.getExtras();if(extras==null)return;Object[]pdus=(Object[])extras.get("pdus");for(inti=0;i<pdus.length;i++){SmsMessagemessage=SmsMessage.createFromPdu((byte[])pdus[i]);StringfromAddress=message.getOriginatingAddress();StringfromDisplayName=fromAddress;Stringmsg=message.getMessageBody();if(msg.startsWith(queryString)){//Triggerthemainactivitytofireupadialog//thatshows/readsthereceivedmessagesIntentdi=newIntent();di.setClass(context,AndroidGraphics2DTutorial.class);di.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP);di.putExtra(AndroidGraphics2DTutorial.SMS_FROM_ADDRESS_EXTRA,fromAddress);di.putExtra(AndroidGraphics2DTutorial.SMS_FROM_DISPLAY_NAME_EXTRA,fromDisplayName);di.putExtra(AndroidGraphics2DTutorial.SMS_MESSAGE_EXTRA,msg);context.startActivity(di);}}}}

onReceive 会在Broadcast 事件发生是执行,这里检测短信内容,如果是以@demo:开头的,则启动AndroidGraphics2DTutorial Main Activity。

修改AndroidMainifest.xml

<receiverandroid:name=".SmsMessageReceiver"android:enabled="true"><intent-filter><actionandroid:name="android.provider.Telephony.SMS_RECEIVED"/></intent-filter></receiver>

同时添加permission ,和Java ME类似Android某些API需要指定对应的Permission才可以使用。

<uses-permissionandroid:name="android.permission.SEND_SMS"/><uses-permissionandroid:name="android.permission.RECEIVE_SMS"/>

修改AndroidGraphics2DTutorial.java 来处理SMS消息:

publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);Resourcesres=getResources();String[]activity_Names=res.getStringArray(R.array.activity_name);String[]activity_Infos=res.getStringArray(R.array.activity_info);for(inti=0;i<activity_Names.length;i++){ActivityInfoactivityInfo=newActivityInfo();activityInfo.activityName=activity_Names[i];activityInfo.activityInfo=activity_Infos[i];activityInfo.iconIndex=R.drawable.icon1+i;activityInfos.add(activityInfo);}aa=newActivityInfoAdapter(this,R.layout.activitylist,activityInfos);setListAdapter(aa);Bundlebundle=getIntent().getExtras();if(bundle!=null){mFromAddress=bundle.getString(SMS_FROM_ADDRESS_EXTRA);mMessage=bundle.getString(SMS_MESSAGE_EXTRA);intindex=mMessage.indexOf(queryString);if(index>=0){StringdemoName=mMessage.substring(index+queryString.length());Intentintent=newIntent();intent.setClassName(this,packgeName+".example."+demoName);startActivity(intent);}}}

下面来测试,如果使用设备,则给手机发送@demo:Colors .
如果使用模拟器,则可以启动两个模拟器:

Android开发中短信触发的示例分析

模拟器左上角数字5554,5556为模拟器的号码。发送@demo:Paths ,则自动触发Paths示例,如果AndroidGraphics2DTutorial没有运行,手机收到SMS短信后,会自动启动应用。

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Android开发中短信触发的示例分析的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Android开发中如何使用线程Bezier曲线下一篇:

3 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18