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

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

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

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

 
 
 
 
  1. public class SmsMessageReceiver extends BroadcastReceiver {       
  2.        private static final String queryString="@demo:"; 
  3.         @Override 
  4.         public void onReceive(Context context, Intent intent) { 
  5.             Bundle extras = intent.getExtras(); 
  6.             if (extras == null) 
  7.                 return;   
  8.             Object[] pdus = (Object[]) extras.get("pdus");    
  9.             for (int i = 0; i < pdus.length; i++) { 
  10.                 SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus[i]); 
  11.                 String fromAddress = message.getOriginatingAddress(); 
  12.                 String fromDisplayName = fromAddress; 
  13.                 String msg=message.getMessageBody(); 
  14.                 if(msg.startsWith(queryString)){ 
  15.                    // Trigger the main activity to fire up a dialog 
  16.               //that shows/reads the received messages 
  17.                     Intent di = new Intent(); 
  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.  
  2.                  
  3.                      
  4.                  
  5.       

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

 
 
 
 
  1.  
  2.  

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

 
 
 
 
  1. public void onCreate(Bundle savedInstanceState) { 
  2.         super.onCreate(savedInstanceState); 
  3.         Resources res = getResources(); 
  4.         String[] activity_Names = res.getStringArray(R.array.activity_name); 
  5.         String[] activity_Infos = res.getStringArray(R.array.activity_info); 
  6.         for(int i=0;i
  7.             ActivityInfo activityInfo=new ActivityInfo(); 
  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=new ActivityInfoAdapter(this,R.layout.activitylist,activityInfos); 
  14.         setListAdapter(aa); 
  15.         Bundle bundle=getIntent().getExtras(); 
  16.         if(bundle!=null){ 
  17.                   mFromAddress = bundle.getString(SMS_FROM_ADDRESS_EXTRA); 
  18.              mMessage = bundle.getString(SMS_MESSAGE_EXTRA); 
  19.              int index=mMessage.indexOf(queryString); 
  20.              if(index>=0){ 
  21.                  String demoName=mMessage.substring(index+queryString.length()); 
  22.                  Intent intent = new Intent(); 
  23.                  intent.setClassName(this, packgeName+".example." +demoName); 
  24.                  startActivity(intent);                   
  25.              }                 
  26.         } 
  27.     } 

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

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

本文题目:Android开发速成简洁教程二十:短信触发示例
转载注明:http://www.shufengxianlan.com/qtweb/news32/435582.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联