Android從無知到有知——NO.2

來源:互聯網
上載者:User

標籤:android   簡訊發送器   

           這幾天雖說偶遇瓶頸,但也漸入佳境,由於之前沒有接觸過android,所以作為一個新手不會給自己過高的要求。相比於去年做的分布式資源檢索,今年的移動開發著實要簡單一些,雖然其本質沒有太大的區別,但從使用者體驗方面來說更能激發每一位學習者的興趣,這可能就是android的魅力所在吧...

         前天做的“電話撥號器”,最後載入到模擬器的時候不知道哪裡出了錯,系統總是自動關閉,惱羞成怒也就沒再搭理它;昨天又做了“簡訊發送器”,也遇到了和前者相似的問題,不過最後經過調試算是研製成功了吧,因此調整了前者,相同的解決方案,外瑞古德~~~那接下來就以“簡訊發送器”為例談談自己的一些學習心得吧...

         首先一張:

         咱先來說說這個簡訊發送器的基本構造,大家從也可看出,其大體可分為五部分,其實也就是兩條提示+兩個輸入框,還有一個發送按鈕。那麼這五部分是怎麼出來的,先來看一小段代碼:        

<EditText        android:id="@+id/et_word"        android:lines="5"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_below="@id/tv_ism"        android:layout_centerVertical="true"        android:inputType="textMultiLine" ></EditText>

         這塊代碼是定義簡訊輸入框的,最上邊的"@+id/et_word”是在R.java檔案中添加一個名為et_word的id,也就是聲明了我們這個輸入框;lines=“5”規定了這個輸入框為五行,這個長度一般可以滿足我們的需求;而下邊的四個layout屬性定義了這個文字框的長寬和相對位置,其屬性值大家可以好好瞭解一下,都很有意思,其中第三個的意思是文字框的位置在id為tv_ism的下方,而tv_ism便是我們所看到的“請輸入簡訊內容”;最後定義了簡訊輸入框的類型。其他幾塊內容都和其類似,當然還有很多的屬性,大家可以查看其API瞭解一下。

         UI設計的相對簡陋,還望大家多多包涵,接下來就是賦予其相應的功能了,再上代碼一大塊:

          

public class MainActivity extends Activity implements OnClickListener {    private EditText et_word;private EditText et_number;    @Override       protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);         et_number=(EditText)findViewById(R.id.et_number);         et_word=(EditText)findViewById(R.id.et_word);        Button bt_sent=(Button)findViewById(R.id.bt_sent);        bt_sent.setOnClickListener(this);    }@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.bt_sent: String word=et_word.getText().toString().trim(); String number=et_number.getText().toString().trim(); if(TextUtils.isEmpty(word)||TextUtils.isEmpty(number)){ Toast.makeText(this, "電話號碼或者簡訊內容不可為空", Toast.LENGTH_SHORT).show(); return; }else{ SmsManager smsManager=SmsManager.getDefault(); ArrayList<String> words=smsManager.divideMessage(word); for(String str:words){ smsManager.sendTextMessage(number, null, str, null, null);     } }break;}}   }

         我們先從實際出發,要想使簡訊發送器能夠傳送簡訊,首先要找到發送按鈕,但我們點擊按鈕時,系統會找到簡訊內容和想要發送的號碼,然後實現其功能,大體上也就是分為這三步。

         於是乎我們先找到按鈕:Button bt_sent=(Button)findViewById(R.id.bt_sent); bt_sent.setOnClickListener(this);這裡邊涉及了幾個常用的方法,大家看其表面意思也能瞭解,先通過id找到按鈕,然後調用其方法設定點擊事件;下邊的onClick(View  v)為介面OnClickListener的實現方法,當的得到的id為R.id.bt_sent時執行一系列的操作;上邊的et_number、et_word和bt_sent是一樣的,先通過id找到他們,然後利用他們自身的方法提取電話號碼和簡訊內容;接下來就是判斷電話號碼或者簡訊內容是否為空白,相信大家都有這樣的常識,二者有一方為空白則不能傳送簡訊;關於Toast大家可以去查一查,翻譯成中文為“吐絲麵包”,它主要是給使用者一個提示,它調用的方法有三個參數,這個一開始不大好理解,不過通過該例大家也能猜出它的大概意思,其中第三個參數為顯示時間長度,最後不要忘了調用Toast的show()返回值。如果號碼或內容不為空白的話那就執行else裡的語句,提取簡訊內容,如果發送內容過長,超過規定的70個漢字或者160個字元便對其進行分段,這時要用到ArrayList<String> words=smsManager.divideMessage(word);然後對其進行遍曆,smsManager.sendTextMessage(number, null, str, null, null);這裡邊有五個參數,第一個為要發送的連絡人電話號碼;第二個為簡訊來自哪裡,現在我國的運行商不支援這個功能;第三個為發送的簡訊內容;第四個參數負責報告簡訊是否發送成功;第五個為是否發送送達報告,這個現在先不用管,都可設為null。

         還需要注意的一點就是SmsManager smsManager=SmsManager.getDefault();這條語句,它之前預設匯入的包已經到期,所以需要匯入新的包,這個到時候會有提示。
         ok,這樣一個簡易的簡訊發送器便搭建完成了,啟動兩個模擬器便可進行實驗,就如所示,發送短文本和長文本的區別也一目瞭然。今天將繼續深入瞭解四種布局,UI時代到來,敬請期待……
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.