最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android開發(fā)中實(shí)現(xiàn)發(fā)送短信的小程序示例

 更新時(shí)間:2016年04月12日 15:19:35   作者:chenzheng_java  
這篇文章主要介紹了Android開發(fā)中實(shí)現(xiàn)發(fā)送短信的小程序示例,文中還附帶了一個(gè)監(jiān)聽廣播接收者的升級版短信發(fā)送例子,需要的朋友可以參考下

2016412151249217.gif (248×371)

上圖為代碼結(jié)構(gòu)圖。

現(xiàn)在我們看下具體的代碼。

Send.java

package cn.com.sms.send; 
 
import java.util.ArrayList; 
import java.util.Iterator; 
 
import android.app.Activity; 
import android.app.PendingIntent; 
import android.content.Intent; 
import android.os.Bundle; 
import android.telephony.SmsManager; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 
 
public class Send extends Activity { 
  private String message; 
  private String number ; 
  private EditText editText; 
  private EditText editText2; 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
     editText = (EditText) this.findViewById(R.id.number); 
     editText2 = (EditText)this.findViewById(R.id.message); 
     
    Button button = (Button)this.findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 
       
      public void onClick(View v) { 
         number = editText.getText().toString(); 
         message = editText2.getText().toString(); 
         // 在LogCat中可以查看到number和message的相關(guān)信息 
         Log.i("number", number); 
         Log.i("message", message); 
         /*獲取系統(tǒng)默認(rèn)的信息管理器,一定要注意的是SmsManager是android.telephony.SmsManager;這和 
         *我們使用的版本有關(guān),在 Android 2.0 以前 應(yīng)該使用 android.telephony.gsm.SmsManager 
         *Android 2.0 之后的版本應(yīng)該用 android.telephony.SmsManager。 
         */ 
        SmsManager smsManager = SmsManager.getDefault(); 
        /*PendingIntent.getBroadcast返回一個(gè)用于廣播的PendingIntent對象,類似于調(diào)用Content.sendBroadcast(); 
         */ 
        PendingIntent paIntent = PendingIntent.getBroadcast(Send.this, 0, new Intent("SMS_SENT"), 0); 
        PendingIntent deliveryIntent = PendingIntent.getBroadcast(Send.this, 0, new Intent("SMS_DELIVERED"), 0); 
        // smsManager.divideMessage有些時(shí)候短信如果超過了字?jǐn)?shù),我們就需要這個(gè)方法來幫我們拆分短信內(nèi)容。 
        ArrayList<String> smses = smsManager.divideMessage(message); 
        Iterator<String> iterator = smses.iterator(); 
        while(iterator.hasNext()){ 
          String temp = iterator.next(); 
          //發(fā)送短信 
          smsManager.sendTextMessage(number, null, temp, paIntent, deliveryIntent); 
        } 
        // 彈出一個(gè)浮動框顯示提示內(nèi)容,Toast.LENGTH_LONG代表浮動框顯示時(shí)間的長短 
        Toast.makeText(Send.this, "短信發(fā)送完成", Toast.LENGTH_LONG).show(); 
 
         
      } 
    }); 
     
  } 
} 

 

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:orientation="vertical" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  > 
<TextView  
  android:layout_width="fill_parent"  
  android:layout_height="wrap_content"  
  android:text="歡迎使用短信發(fā)送器,請輸入電話號碼" 
  /> 
 <EditText 
  android:id="@+id/number" 
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
  android:hint="這里輸入電話號碼" 
 /> 
 <TextView 
 android:layout_width="fill_parent"  
  android:layout_height="wrap_content"  
  android:text="歡迎使用短信發(fā)送器,請輸入短信內(nèi)容" 
 /> 
 <EditText 
  android:id="@+id/message" 
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
  android:minLines="3" 
  android:hint="這里輸入短信內(nèi)容" 
 /> 
 <Button 
  android:id="@+id/button" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content" 
  android:text="send" 
 /> 
</LinearLayout> 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
   package="cn.com.sms.send" 
   android:versionCode="1" 
   android:versionName="1.0"> 
  <uses-sdk android:minSdkVersion="8" /> 
  <uses-permission android:name="android.permission.SEND_SMS"></uses-permission> 
 
  <application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".Send" 
         android:label="@string/app_name"> 
      <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 
        <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
    </activity> 
 
  </application> 
</manifest> 

最終效果圖為:

2016412151344499.gif (369×405)

和打電話小程序一樣,這里也需要開啟兩個(gè)AVD才能進(jìn)行功能測試。


碎碎念:

發(fā)短信應(yīng)用的主要的類就是SmsManager。 在 Android 2.0 以前 應(yīng)該使用 android.telephony.gsm.SmsManager

之后應(yīng)該用 android.telephony.SmsManager;

SmsManager smsManager = SmsManager.getDefault();

意思為獲取系統(tǒng)默認(rèn)的信息管理器


smsManager.sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent)

             -- destinationAddress:目標(biāo)電話號碼
             -- scAddress:服務(wù)商的短信中心號碼(例如中國移動的短信中心號碼),測試可以不填。
             -- text: 短信內(nèi)容
             -- sentIntent:發(fā)送 -->中國移動 --> 中國移動發(fā)送失敗 --> 返回發(fā)送成功或失敗信號 --> 后續(xù)處理   即,這個(gè)意圖包裝了短信發(fā)送狀態(tài)的信息

             -- deliveryIntent: 發(fā)送 -->中國移動 --> 中國移動發(fā)送成功 --> 返回對方是否收到這個(gè)信息 --> 后續(xù)處理  即:這個(gè)意圖包裝了短信是否被對方收到的狀態(tài)信息(供應(yīng)商已經(jīng)發(fā)送成功,但是對方?jīng)]有收到)。


public static PendingIntent getBroadcast (Context context, int requestCode, Intent intent, int flags)
返回一個(gè)用于廣播的PendingIntent,類似于調(diào)用Context.sendBroadcast()函數(shù)
requestCode 暫時(shí)不用
intent 是用于廣播的intent
flag 有:FLAG_ONE_SHOT, FLAG_NO_CREATE, FLAG_CANCEL_CURRENT, FLAG_UPDATE_CURRENT 用于設(shè)置新建的PendingIntent是使用一次、如無則不創(chuàng)建、取消當(dāng)前、更新當(dāng)前等屬性。

此外,我們還要在AndroidManifest.xml中聲明短信發(fā)送權(quán)限。

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

有的時(shí)候,我們兩個(gè)AVD進(jìn)行模擬發(fā)短信時(shí),會發(fā)現(xiàn)有時(shí)候該程序無法正常使用。系統(tǒng)會提示我們NO DNS servers found,找不到DNS服務(wù)。這種情況一般是由于你的電腦沒有聯(lián)入網(wǎng)絡(luò)的原因造成的。

發(fā)送短信:   

SmsManager smsMgr = SmsManager.getDefault();  
smsMgr.sendTextMessage(address, null, message, null, null);  

 
顯示寫短信界面:   

Uri smsToUri = Uri.parse("smsto://10086");  
Intent mIntent = new Intent( android.content.Intent.ACTION_SENDTO, smsToUri );  
startActivity( mIntent );  

 
發(fā)送電子郵件:  

Intent i = new Intent(Intent.ACTION_SEND);  
i.putExtra(Intent.EXTRA_EMAIL, address);  
i.putExtra(Intent.EXTRA_SUBJECT, filename);  
i.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + filename)); ;  
i.setType("text/csv");  
startActivity(Intent.createChooser(i, "EMail File"));  

升級版:
該代碼為其添加了廣播接收者的監(jiān)聽。詳細(xì)代碼如下

package cn.com.sms.send; 
 
import java.util.ArrayList; 
import java.util.Iterator; 
 
import android.app.Activity; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.os.Bundle; 
import android.telephony.SmsManager; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 
 
public class Send extends Activity { 
  private String message; 
  private String number ; 
  private EditText editText; 
  private EditText editText2; 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
     editText = (EditText) this.findViewById(R.id.number); 
     editText2 = (EditText)this.findViewById(R.id.message); 
     
    Button button = (Button)this.findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 
       
      public void onClick(View v) { 
         number = editText.getText().toString(); 
         message = editText2.getText().toString(); 
         // 在LogCat中可以查看到number和message的相關(guān)信息 
         Log.i("number", number); 
         Log.i("message", message); 
         /*獲取系統(tǒng)默認(rèn)的信息管理器,一定要注意的是SmsManager是android.telephony.SmsManager;這和 
         *我們使用的版本有關(guān),在 Android 2.0 以前 應(yīng)該使用 android.telephony.gsm.SmsManager 
         *Android 2.0 之后的版本應(yīng)該用 android.telephony.SmsManager。 
         */ 
        SmsManager smsManager = SmsManager.getDefault(); 
        /*PendingIntent.getBroadcast返回一個(gè)用于廣播的PendingIntent對象,類似于調(diào)用Content.sendBroadcast(); 
         */ 
        PendingIntent paIntent = PendingIntent.getBroadcast(Send.this, 0, new Intent("SMS_SENT2"), 0); 
        PendingIntent deliveryIntent = PendingIntent.getBroadcast(Send.this, 0, new Intent("SMS_DELIVERED2"), 0); 
         
        // 注冊一個(gè)BroadcastReceiver,當(dāng)有匹配它的IntentFilter的Intent出現(xiàn)時(shí),該方法會被觸發(fā) 
        registerReceiver(new BroadcastReceiver(){ 
 
          @Override 
          public void onReceive(Context context, Intent intent) { 
            int resultCode = getResultCode(); 
            switch(resultCode){ 
            case Activity.RESULT_OK: 
              Toast.makeText(getBaseContext(), "信息發(fā)送成功了哦、", Toast.LENGTH_LONG).show(); 
              break; 
            default: 
              Toast.makeText(getBaseContext(), "信息發(fā)送失敗了哦、", Toast.LENGTH_LONG).show(); 
               
            } 
          } 
           
           
        }, new IntentFilter("SMS_SENT2")); 
         
         
        registerReceiver(new BroadcastReceiver() { 
           
          @Override 
          public void onReceive(Context context, Intent intent) { 
            Toast.makeText(getBaseContext(), "deliveryIntent", Toast.LENGTH_LONG).show(); 
            Log.i("短信接收人是否查看信息", "看了"); 
          } 
        }, new IntentFilter("SMS_DELIVERED2")); 
         
         
         
        // smsManager.divideMessage有些時(shí)候短信如果超過了字?jǐn)?shù),我們就需要這個(gè)方法來幫我們拆分短信內(nèi)容。 
        ArrayList<String> smses = smsManager.divideMessage(message); 
        Iterator<String> iterator = smses.iterator(); 
        while(iterator.hasNext()){ 
          String temp = iterator.next(); 
          //發(fā)送短信 
          smsManager.sendTextMessage(number, null, temp, paIntent, deliveryIntent); 
        } 
        // 彈出一個(gè)浮動框顯示提示內(nèi)容,Toast.LENGTH_LONG代表浮動框顯示時(shí)間的長短 
        Toast.makeText(Send.this, "短信發(fā)送完成", Toast.LENGTH_LONG).show(); 
 
         
      } 
    }); 
     
  } 
} 

main.xml與AndroidManifest.xml和前面的代碼一樣。

registerReceiver()用于注冊廣播接受者。該方法在Content中這樣定義的。

public abstract Intent registerReceiver(BroadcastReceiver receiver,IntentFilter filter);系統(tǒng)如果查詢到滿足filter的廣播,便會教給receiver,讓其處理。一般都是在其onReceive()方法中處理。

如果不是在代碼中主動通過registerReceiver()進(jìn)行注冊,那么就要從AndroidManifest.xml進(jìn)行配置,代碼如下

<receiver android:name="類名"> 
<intent-filter> 
<action android:name="接收者中Intent參數(shù)的action屬性" /> 
</intent-filter> 
</receiver>

這里需要注意,在配置文件中activity標(biāo)簽和receiver標(biāo)簽是平級的。

在模擬器中發(fā)送中文會接收方出現(xiàn)亂碼的問題,但是在真機(jī)中,就不會出現(xiàn)亂碼的情況了。所以開發(fā)者只需要正常開發(fā)短信功能,不需要編碼轉(zhuǎn)換。

相關(guān)文章

  • Android放大鏡的實(shí)現(xiàn)代碼

    Android放大鏡的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Android放大鏡的實(shí)現(xiàn)代碼,有需要的朋友可以參考一下
    2014-01-01
  • Android登錄的簡單處理

    Android登錄的簡單處理

    這篇文章主要介紹了Android登錄的簡單處理,一個(gè)簡易的Demo模擬登錄情況和未登錄情況下的界面跳轉(zhuǎn)處理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Android RecyclerView 復(fù)用錯(cuò)亂通用解法詳解

    Android RecyclerView 復(fù)用錯(cuò)亂通用解法詳解

    本篇文章主要介紹了Android RecyclerView 復(fù)用錯(cuò)亂通用解法詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • Android開發(fā)者必備的十個(gè)工具介紹

    Android開發(fā)者必備的十個(gè)工具介紹

    這篇文章主要介紹了Android開發(fā)者必備的十個(gè)工具介紹,在這篇文章中,討論了10個(gè)最常見的工具,android 開發(fā)者應(yīng)該了解和學(xué)習(xí)使用,需要的朋友可以參考下
    2015-03-03
  • Android開發(fā)中的文件操作工具類FileUtil完整實(shí)例

    Android開發(fā)中的文件操作工具類FileUtil完整實(shí)例

    這篇文章主要介紹了Android開發(fā)中的文件操作工具類FileUtil,結(jié)合完整實(shí)例形式分析了Android文件操作的常用技巧,包括文件的獲取、遍歷、搜索、復(fù)制、刪除、判斷等功能,需要的朋友可以參考下
    2017-11-11
  • Android實(shí)現(xiàn)歌詞漸變色和進(jìn)度的效果

    Android實(shí)現(xiàn)歌詞漸變色和進(jìn)度的效果

    這篇文章主要介紹了Android實(shí)現(xiàn)歌詞漸變色和進(jìn)度的效果的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • Dialog底部彈出自定義view并且伴隨動畫彈出和消失

    Dialog底部彈出自定義view并且伴隨動畫彈出和消失

    這篇文章主要介紹了Dialog底部彈出自定義view并且伴隨動畫彈出和消失的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Kotlin的::符號怎么用

    Kotlin的::符號怎么用

    本文主要介紹了Kotlin的::符號怎么用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Android WebView控件基本使用示例

    Android WebView控件基本使用示例

    大家好,本篇文章主要講的是Android WebView控件基本使用示例,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • 詳解Android官方架構(gòu)中UseCase

    詳解Android官方架構(gòu)中UseCase

    這篇文章主要為大家介紹了Android?官方架構(gòu)中的?UseCase?該怎么寫示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05

最新評論

宿州市| 桂阳县| 盐山县| 吉木乃县| 五峰| 繁昌县| 庆元县| 兴安盟| 宁陵县| 许昌市| 湟源县| 澄江县| 南昌县| 玛纳斯县| 平湖市| 阿坝县| 益阳市| 张北县| 广州市| 陇南市| 仁化县| 大厂| 偃师市| 陆川县| 泰安市| 沙田区| 孝昌县| 无极县| 东安县| 治县。| 乐安县| 梁河县| 汕头市| 武夷山市| 兴义市| 马关县| 新安县| 鄢陵县| 新和县| 确山县| 广平县|