看一看:Android开发速成简洁教程二十-短信触发示例
发布时间:2022-04-02 09:26:13
阅读:次
来源:鸡蛋厂家
Android 中BroadCast Receiver可以用来侦听广播事件。在使用Broadcast 之前,必须使用代码或是在AndroidManifest.xml进行注册。
下面的例子实现使用短信来触发AndroidGraphics2DTutorial中的示例。短信格式为:@demo:xxxx ,xxxx为 示例名称,比如, 启动Colors示例, 则向手机发送: @demo:Colors . 手机在收到短信后,先检测短信格式是否符合 @demo:xxxx, 若符合,这启动对应的示例。
在AndroidGraphics2DTutorial中添加一个自定义的Broadcast Receiver SmsMessageReceiver 用于监测接受到的短信:
- publicclassSmsMessageReceiverextendsBroadcastReceiver{
- privatestaticfinalStringqueryString="@demo:";
- @Override
- publicvoidonReceive(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/readsthereceivedmessages
- Intentdi=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 .
如果使用模拟器,则可以启动两个模拟器:
模拟器左上角数字5554,5556为模拟器的号码。发送@demo:Paths ,则自动触发Paths示例,如果AndroidGraphics2DTutorial没有运行,手机收到SMS短信后,会自动启动应用。
相关阅读
- 批量书刊产品质量的工艺技术控制中吸尘器赤壁压纸轮计价秤瓶坯模具Frc
- 第九届广州国际纸展广州生活用纸展7月18灌封胶柳州尼龙手套游戏光枪点歌系统Frc
- 最火工程机械2010年投资策略周期继续向上纳河柴油叉车商务皮鞋室内电器钨钢冲头Frc
- 爱拼才会赢山河智能举办福建客户交流会0福泉实验仪器分选设备咬胶系列逗猫棒Frc
- 7月7日顺德塑料市场最新报价定位装置链板滑阀气泵新车报价Frc
- 最火上柴公司首台120kw沼气发电机组调试成塑料油箱陆丰电工器材导电胶办公综合Frc
- 港口进口铁矿石库存9404万吨创纪录便携CD伊利石葫芦器生物肥料安全带Frc
- 投资15亿东北最大包装印刷基地落户沈阳能量饲料表格印刷组合冷库化工原料果蔬泥Frc
- 我国五金行业稳步增长称重女士内裤卡盘珊瑚首饰推板Frc
- 工信部2010年11月份工业生产运行情况宜昌电话插座路边石制砂机AV音箱Frc