在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ Broadcast Receiver 短信觸發(fā)示例
Dialog 顯示圖像
線程 Bezier 曲線
創(chuàng)建應(yīng)用程序框架
引路蜂二維圖形庫簡介及顏色示例
Android 應(yīng)用基本概念
Intents 和 Intent Filters
安裝開發(fā)環(huán)境
Option Menu 畫筆示例
自定義對話框 Transform
數(shù)據(jù)綁定 Data Binding
概述
Broadcast Receiver 短信觸發(fā)示例
發(fā)布應(yīng)用
自定義 Adapter 顯示列表
RadioButton 多邊形及路徑繪制
訪問 Internet 繪製在線地圖
第一個應(yīng)用 Hello World
Activities
Button 畫刷示例
使用資源 Resources
Context Menu 繪制幾何圖形
用戶界面設(shè)計
引路蜂二維圖形繪制實例功能定義

Broadcast Receiver 短信觸發(fā)示例

Android 中 BroadCast Receiver 可以用來偵聽廣播事件。在使用 Broadcast 之前,必須使用代碼或是在 AndroidManifest.xml 進行注冊。

下面的例子實現(xiàn)使用短信來觸發(fā) AndroidGraphics2DTutorial 中的示例。短信格式為:@demo:xxxx ,xxxx為 示例名稱,比如, 啟動 Colors 示例, 則向手機發(fā)送: @demo:Colors . 手機在收到短信后,先檢測短信格式是否符合 @demo:xxxx, 若符合,這啟動對應(yīng)的示例。

在 AndroidGraphics2DTutorial 中添加一個自定義的 Broadcast Receiver SmsMessageReceiver 用于監(jiān)測接受到的短信:

public class SmsMessageReceiver extends BroadcastReceiver {

   private static final String queryString="@demo:";
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle extras = intent.getExtras();
        if (extras == null)
            return;

        Object[] pdus = (Object[]) extras.get("pdus");

        for (int i = 0; i < pdus.length; i++) {
            SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus[i]);
            String fromAddress = message.getOriginatingAddress();
            String fromDisplayName = fromAddress;
            String msg=message.getMessageBody();
            if(msg.startsWith(queryString)){
               // Trigger the main activity to fire up a dialog 
          //that shows/reads the received messages
                Intent di = new Intent();
                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 事件發(fā)生是執(zhí)行,這里檢測短信內(nèi)容,如果是以@demo:開頭的,則啟動AndroidGraphics2DTutorial Main Activity。

修改 AndroidMainifest.xml

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

同時添加 permission ,和 Java ME 類似 Android 某些 API 需要指定對應(yīng)的 Permission 才可以使用。

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

修改 AndroidGraphics2DTutorial.java 來處理 SMS 消息:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Resources res = getResources();
        String[] activity_Names = res.getStringArray(R.array.activity_name);
        String[] activity_Infos = res.getStringArray(R.array.activity_info);
        for(int i=0;i<activity_Names.length;i++){
            ActivityInfo activityInfo=new ActivityInfo();
            activityInfo.activityName=activity_Names[i];
            activityInfo.activityInfo=activity_Infos[i];
            activityInfo.iconIndex=R.drawable.icon1+i;
            activityInfos.add(activityInfo);
        }

        aa=new ActivityInfoAdapter(this,R.layout.activitylist,activityInfos);
        setListAdapter(aa);
        Bundle bundle=getIntent().getExtras();
        if(bundle!=null){
             mFromAddress = bundle.getString(SMS_FROM_ADDRESS_EXTRA);
             mMessage = bundle.getString(SMS_MESSAGE_EXTRA);
             int index=mMessage.indexOf(queryString);
             if(index>=0){
                 String demoName=mMessage.substring(index+queryString.length());
                 Intent intent = new Intent();
                 intent.setClassName(this, packgeName+".example." +demoName);
                 startActivity(intent);

             }

        }
    }

下面來測試,如果使用設(shè)備,則給手機發(fā)送@demo:Colors . 如果使用模擬器,則可以啟動兩個模擬器:

http://wiki.jikexueyuan.com/project/android-development-tutorial/images/31.png" alt="" />

模擬器左上角數(shù)字5554,5556為模擬器的號碼。發(fā)送@demo:Paths ,則自動觸發(fā) Paths 示例,如果AndroidGraphics2DTutorial 沒有運行,手機收到 SMS 短信后,會自動啟動應(yīng)用。