鸡蛋厂家
免费服务热线

Free service

hotline

010-00000000
鸡蛋厂家
热门搜索:
成功案例
当前位置:首页 > 成功案例

看一看:Android开发速成简洁教程二十-短信触发示例

发布时间:2022-04-02 09:26:13 阅读: 来源:鸡蛋厂家
Android开发速成简洁教程二十:短信触发示例 作者:佚名 2013-12-27 14:34:46 移动开发 Android Android 中BroadCast Receiver可以用来侦听广播事件。在使用Broadcast 之前,必须使用代码或是在AndroidManifest.xml进行注册。

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

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

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

  1. publicclassSmsMessageReceiverextendsBroadcastReceiver{
  2. privatestaticfinalStringqueryString="@demo:";
  3. @Override
  4. publicvoidonReceive(Contextcontext,Intentintent){
  5. Bundleextras=intent.getExtras();
  6. if(extras==null)
  7. return;
  8. Object[]pdus=(Object[])extras.get("pdus");
  9. for(inti=0;i<pdus.length;i++){
  10. SmsMessagemessage=SmsMessage.createFromPdu((byte[])pdus[i]);
  11. StringfromAddress=message.getOriginatingAddress();
  12. StringfromDisplayName=fromAddress;
  13. Stringmsg=message.getMessageBody();
  14. if(msg.startsWith(queryString)){
  15. //Triggerthemainactivitytofireupadialog
  16. //thatshows/readsthereceivedmessages
  17. Intentdi=newIntent();
  18. di.setClass(context,AndroidGraphics2DTutorial.class);
  19. di.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
  20. |Intent.FLAG_ACTIVITY_SINGLE_TOP);
  21. di.putExtra(AndroidGraphics2DTutorial.SMS_FROM_ADDRESS_EXTRA,
  22. fromAddress);
  23. di.putExtra(AndroidGraphics2DTutorial.SMS_FROM_DISPLAY_NAME_EXTRA,
  24. fromDisplayName);di.putExtra(AndroidGraphics2DTutorial.SMS_MESSAGE_EXTRA,msg);
  25. context.startActivity(di);
  26. }
  27. }
  28. }
  29. }

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

修改AndroidMainifest.xml

  1. <receiverandroid:name=".SmsMessageReceiver"android:enabled="true">
  2. <intent-filter>
  3. <actionandroid:name="android楼顶违建如何不被拆除.provider.Telephony.SMS_RECEIVED"/>
  4. </intent-filter>
  5. </receiver>

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

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

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

  1. publicvoidonCreate(BundlesavedInstanceState){
  2. super.onCreate(savedInstanceState);
  3. Resourcesres=getResources();
  4. String[]activity_Names=res.getStringArray(R.array.activity_name);
  5. String[]activity_Infos=res.getStringArray(R.array.activity_info);
  6. for(inti=0;i<activity_Names.length;i++){
  7. ActivityInfoactivityInfo=newActivityInfo();
  8. activityInfo.activityName=activity_Names[i];
  9. activityInfo.activityInfo=activity_Infos[i];
  10. activityInfo.iconIndex=R.drawable.icon1+i;
  11. activityInfos强拆别人房屋判多少年.add(activityInfo);
  12. }
  13. aa=newActivityInfoAdapter(this,R.layout.activitylist,activityInfos);
  14. setListAdapter(aa);
  15. Bundlebundle=getIntent().getExtras();
  16. if(bundle!=null){
  17. mFromAddress=bundle.getString(SMS_FROM_ADDRESS_EXTRA);
  18. mMessage=bundle.getString(SMS_MESSAGE_EXTRA);
  19. intindex=mMessage.indexOf(queryString);
  20. if(index>=0){
  21. StringdemoName=mMessage.substring(index+queryString集体建设用地被征收怎么补偿.length());
  22. Intentintent=newIntent();
  23. intent.setClassName(this,packgeName+".example."+demoName);
  24. startActivity(intent);
  25. }
  26. }
  27. }

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

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