android實現傳送簡訊並儲存到資料庫,同時可以獲得發送報告和接收報告

來源:互聯網
上載者:User
        SmsManager smsMagager = SmsManager.getDefault();        // create the sentIntent parameter           Intent sentIntent = new Intent(SENT_SMS_ACTION);          PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, sentIntent,                  0);          // create the deilverIntent parameter           Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION);          PendingIntent deliverPI = PendingIntent.getBroadcast(this, 0,                  deliverIntent, 0);                  String tel = editTel.getText().toString();        String msg = editMsg.getText().toString();        smsMagager.sendTextMessage( tel , null , msg , sentPI , deliverPI );

先上代碼,上述功能實現了Android傳送簡訊到指定號碼的功能(sentPI為了獲得發送報告的,DeliverPI為了獲得對方接受到之後返回的報告的),區別就是:發送報告,只是簡訊發送出去,對面是否接受不關心;接收報告:就是發送方的簡訊發送到對方手機上之後,對方手機會返回給電訊廠商一個訊號,告知電訊廠商收到簡訊,電訊廠商再把這個訊號發給發送方,發送方得到這個訊號之後,

同時需要給這個應用許可權

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

若想把剛剛發送的簡訊插入到資料庫中,需要增加以下內容

    ContentValues values = new ContentValues();             //發送時間             values.put("date", System.currentTimeMillis());              //閱讀狀態                        values.put("read", 0);                        //1為收 2為發                      values.put("type", 2);                      //送達號碼                       values.put("address",tel);                        //送達內容                     values.put("body", msg);                        //插入簡訊庫                 getContentResolver().insert(Uri.parse("content://sms/sent"), values);

同時需要增加以下許可權

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

開始我擔心,只插入到一個表裡會不會有問題,後來參看了TelephonyProvider發現我的想法是多餘的,因為TelephonyProvider會把資料插入到每個表中。

註冊兩個廣播~得到發送報告和接收報告~

@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();registerReceiver(sendMessage, new IntentFilter(SENT_SMS_ACTION));registerReceiver(receiver, new IntentFilter(DELIVERED_SMS_ACTION));}

一個是傳送簡訊的,一個是接受簡訊的,

BroadcastReceiver sendMessage = new BroadcastReceiver() {@Overridepublic void onReceive(Context c, Intent intent) {// TODO Auto-generated method stub//判斷簡訊是否發送成功   switch (getResultCode()) {  case Activity.RESULT_OK:  Toast.makeText(c, "簡訊發送成功", Toast.LENGTH_SHORT).show();  break;  default:  Toast.makeText(c, "發送失敗", Toast.LENGTH_LONG).show();  break;  }  }};BroadcastReceiver receiver = new BroadcastReceiver() {  @Override  public void onReceive(Context context, Intent intent) {  //表示對方成功收到簡訊   Toast.makeText(context, "對方接收成功",Toast.LENGTH_LONG).show();  }  };  


android 的簡訊發送可以在模擬器中進行類比出來。

如現在啟動一模擬器id 號為5554,

啟動終端
telnet localhost 5554
輸入help 可以看到很多用於模擬器中的功能命令
gsm call 134343434 // 便是呼叫當前模擬器命令
sms send 15555218135 Hello,this is a Message // 是向當前的模擬器傳送簡訊息

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.