Android發送短信以及郵件的方式總結(尚不完整,稍後更新)

發送短信:


想要發送和接收短信,首先要在AndroidManifest.xml裏面配置以下權限:

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

方法一:調用系統短信界面發送短信


1.不指定收件人,但是指定短信內容。

要想調用系統發送短信界面後附加短信內容,只需在Intent中附帶相關的參數就可以了。


        Uri smsToUri = Uri.parse("smsto:");

        Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri);

        //smsBody :短信內容
        intent.putExtra("sms_body", smsBody);

        startActivity(intent);




2.指定收件人,但不指定短信內容。

        //phone :收件人
        Uri smsToUri = Uri.parse("smsto:"+phone);

        Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri);

        startActivity(intent);



或者:

    Intent sendIntent = new Intent(Intent.ACTION_SENDTO);  

    sendIntent.setData(Uri.parse("smsto:" + number)); 

    startActivity(sendIntent)

3.同時指定收件人和短信內容。

//number :收件人
Uri smsToUri = Uri.parse("smsto:" + number);  
Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri);  
  
//smsBody :短信內容
intent.putExtra("sms_body", smsBody);  
  
startActivity(intent); 

或者

Intent sendIntent = new Intent(Intent.ACTION_SENDTO);  

sendIntent.setData(Uri.parse("smsto:" + number));  

sendIntent.putExtra("sms_body", body);  

startActivity(sendIntent);

方法二:不調用系統短信界面直接發短信。

SmsManager smsMgr = SmsManager.getDefault();

smsMgr.sendTextMessage(address, null, message, null, null);

其中參數說明:

sendTextMessage (String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)

      destinationAddress      發送短信的地址(也就是號碼)
      scAddress               短信服務中心,如果爲null,就是用當前默認的短信服務中心
      text                    短信內容
      sentIntent              如果不爲null,當短信發送成功或者失敗時,這個PendingIntent會被廣播出去
                              成功的結果代碼是Activity.RESULT_OK,
                              或者下面這些錯誤之一  :RESULT_ERROR_GENERIC_FAILURE,RESULT_ERROR_RADIO_OFF,RESULT_ERROR_NULL_PDU等 
                                   通俗點說: 發送 -->中國移動 --> 中國移動發送失敗 --> 返回發送成功或失敗信號
                                   --> 後續處理   即,這個意圖包裝了短信發送狀態的信息                           
      deliveryIntent          如果不爲null,當這個短信發送到接收者那裏,這個PendtingIntent會被廣播    
                              狀態報告生成的pdu(指對等層次之間傳遞的數據單位)會拓展到數據("pdu")
                                   通俗點就是:發送 -->中國電信 --> 中國電信發送成功 --> 返回對方是否收到這個信息 --> 後續處理  
                                   即:這個意圖包裝了短信是否被對方收到的狀態信息(供應商已經發送成功,但是對方沒有收到)。


發送郵件:

1.
Uri uri = Uri.parse("mailto:[email protected]");   
Intent it = new Intent(Intent.ACTION_SENDTO, uri);   
startActivity(it);  

2.
Intent it = new Intent(Intent.ACTION_SEND);   
it.putExtra(Intent.EXTRA_EMAIL, "[email protected]");   
it.putExtra(Intent.EXTRA_TEXT, "The email body text");   
it.setType("text/plain");   
startActivity(Intent.createChooser(it, "Choose Email Client"));

3.
Intent it=new Intent(Intent.ACTION_SEND);       
String[] tos={"[email protected]"};       
String[] ccs={"[email protected]"};       
it.putExtra(Intent.EXTRA_EMAIL, tos);       
it.putExtra(Intent.EXTRA_CC, ccs);       
it.putExtra(Intent.EXTRA_TEXT, "The email body text");       
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");       
it.setType("message/rfc822");       
startActivity(Intent.createChooser(it, "Choose Email Client"));  








































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章