国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android API開(kāi)發(fā)之SMS短信服務(wù)處理和獲取聯(lián)系人的方法

2019-12-12 05:37:00
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Android API開(kāi)發(fā)之SMS短信服務(wù)處理和獲取聯(lián)系人的方法。分享給大家供大家參考,具體如下:

Android API支持開(kāi)發(fā)可以發(fā)送和接收SMS消息的應(yīng)用程序。目前我們開(kāi)發(fā)過(guò)程中使用的Android模擬器還不支持發(fā)送SMS,但它可以接收SMS。現(xiàn)在我們來(lái)探索一下Android對(duì)SMS的支持,我們將會(huì)構(gòu)建一個(gè)小小的應(yīng)用程序來(lái)監(jiān)聽(tīng)移動(dòng)設(shè)備(或模擬器)上接收到的SMS消息,并將它顯示出來(lái)。
我們來(lái)定義一個(gè)Intent接收器來(lái)處理SMS接收事件:

package com.wissen.sms.receiver;public class SMSReceiver extends BroadcastReceiver {  @Override  public void onReceive(Context context, Intent intent) {    // TODO  }}package com.wissen.sms.receiver;public class SMSReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO}}

我們需要對(duì)這個(gè)Intent接收器進(jìn)行配置以使它能獲取SMS接收事件, android.provider.Telephony.SMS_RECEIVED 這個(gè)事件狀態(tài)表示了SMS已被接收。我們可以在AndroidManifest.xml中進(jìn)行如下配置:

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

為了能讓我們的應(yīng)用能接收SMS,我們得先進(jìn)行權(quán)限的指定,可以在AndroidManifest.xml中如下配置:

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

現(xiàn)在,我們的Intent接收器就可以在Android設(shè)備接收到SMS的時(shí)候被調(diào)用了,余下的事情就是去獲取和顯示接收到的SMS消息文本了:

public void onReceive(Context context, Intent intent) {    Bundle bundle = intent.getExtras();    Object messages[] = (Object[]) bundle.get("pdus");    SmsMessage smsMessage[] = new SmsMessage[messages.length];    for (int n = 0; n < messages.length; n++) {        smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);    }   // show first message   Toast toast = Toast.makeText(context, "Received SMS: " + smsMessage[0].getMessageBody(),        Toast.LENGTH_LONG);   toast.show();}public void onReceive(Context context, Intent intent) {Bundle bundle = intent.getExtras();Object messages[] = (Object[]) bundle.get("pdus");SmsMessage smsMessage[] = new SmsMessage[messages.length];for (int n = 0; n < messages.length; n++) {smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);}// show first messageToast toast = Toast.makeText(context, "Received SMS: " + smsMessage[0].getMessageBody(),        Toast.LENGTH_LONG);toast.show();}

Android設(shè)備接收到的SMS是以pdu形式的(protocol description unit)。android.telephony.gsm.SmsMessage這個(gè)類可以儲(chǔ)存SMS的相關(guān)信息,我們也可以從接收到的pdu中創(chuàng)建新的SmsMessage實(shí)例,Toast界面組件可以以系統(tǒng)通知的形式來(lái)顯示接收到的SMS消息文本。

運(yùn)行程序:

現(xiàn)在讓我們來(lái)在模擬器中運(yùn)行這個(gè)應(yīng)用程序,以及發(fā)送SMS消息到這個(gè)模擬器上。我們可以在eclipse的Android插件所提供的DDMS視圖(Dalvik Debug Monitor Service)中發(fā)送SMS消息到模擬器上(在'Emulator Control'面板中;另外需要指定電話電話號(hào)碼,不過(guò)可以是任意的)

發(fā)出廣播Intent的方法:

public static final String MUSIC_ACTION="com.mythlink.MUSIC";Intent intent=new Intent();intent.setAction(MUSIC_ACTION);intent.putExtra("music_path", songPath);this.sendBroadcast(intent);public static final String MUSIC_ACTION="com.mythlink.MUSIC";Intent intent=new Intent();intent.setAction(MUSIC_ACTION);intent.putExtra("music_path", songPath);this.sendBroadcast(intent);

需要再寫一個(gè)廣播接收器:

public class MusicReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle bundle=intent.getExtras(); String music_path=bundle.getString("music_path"); Toast toast=Toast.makeText(context, "Playing music:"+music_path, Toast.LENGTH_LONG); toast.show(); }}public class MusicReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Bundle bundle=intent.getExtras();String music_path=bundle.getString("music_path");Toast toast=Toast.makeText(context, "Playing music:"+music_path, Toast.LENGTH_LONG);toast.show();}}

獲取聯(lián)系人信息:

public class ContactsList extends ListActivity { private ListAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Cursor c=this.getContentResolver().query(Contacts.People.CONTENT_URI, null, null, null, null); this.startManagingCursor(c); String[] columns=new String[]{Contacts.People.NAME}; int[] names=new int[]{R.id.song};//////////////// mAdapter = new SimpleCursorAdapter(this, R.layout.song_item, c, columns, names); this.setListAdapter(mAdapter); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); Intent i=new Intent(Intent.ACTION_CALL); Cursor c = (Cursor) mAdapter.getItem(position);   long phoneID = c.getLong(c.getColumnIndex(Contacts.People.PRIMARY_PHONE_ID));   i.setData(ContentUris.withAppendedId(Contacts.Phones.CONTENT_URI, phoneID));   this.startActivity(i); }}public class ContactsList extends ListActivity {private ListAdapter mAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Cursor c=this.getContentResolver().query(Contacts.People.CONTENT_URI, null, null, null, null);this.startManagingCursor(c);String[] columns=new String[]{Contacts.People.NAME};int[] names=new int[]{R.id.song};////////////////mAdapter = new SimpleCursorAdapter(this, R.layout.song_item, c, columns, names);this.setListAdapter(mAdapter);}@Overrideprotected void onListItemClick(ListView l, View v, int position, long id) {super.onListItemClick(l, v, position, id);Intent i=new Intent(Intent.ACTION_CALL);Cursor c = (Cursor) mAdapter.getItem(position);long phoneID = c.getLong(c.getColumnIndex(Contacts.People.PRIMARY_PHONE_ID));i.setData(ContentUris.withAppendedId(Contacts.Phones.CONTENT_URI, phoneID));this.startActivity(i);}}

在Androidmanifest.xml中加入:

<uses-permission android:name="android.permission.READ_CONTACTS"/><activity android:name=".ContactsList"     android:label="@string/app_name">  <intent-filter>    <action android:name="android.intent.action.MAIN" />    <category android:name="android.intent.category.LAUNCHER" />  </intent-filter></activity>

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android短信與電話操作技巧匯總》、《Android文件操作技巧匯總》、《Android操作SQLite數(shù)據(jù)庫(kù)技巧總結(jié)》、《Android操作json格式數(shù)據(jù)技巧總結(jié)》、《Android數(shù)據(jù)庫(kù)操作技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android編程開(kāi)發(fā)之SD卡操作方法匯總》、《Android開(kāi)發(fā)入門與進(jìn)階教程》、《Android資源操作技巧匯總》、《Android視圖View技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 保康县| 长垣县| 巴林左旗| 东乡族自治县| 巨鹿县| 新沂市| 阳春市| 桂平市| 蒙阴县| 南川市| 建德市| 濮阳县| 桃源县| 望城县| 南丰县| 东源县| 南皮县| 哈密市| 姚安县| 琼海市| 蚌埠市| 潞城市| 汉中市| 望江县| 遂平县| 太白县| 兰西县| 大悟县| 信阳市| 德庆县| 嘉鱼县| 安达市| 东辽县| 锡林浩特市| 大关县| 福清市| 灵丘县| 新乡县| 秭归县| 沂源县| 泸溪县|