設為首頁(yè)加入收藏

微信關(guān)注
官方微信號:南方財富網(wǎng)
加關(guān)注獲取每日精選資訊
搜公眾號“南方財富網(wǎng)”即可,歡迎加入!
廣告服務(wù)聯(lián)系我們網(wǎng)站地圖

安卓實(shí)現發(fā)送短信小程序代碼示例

2019-08-01 16:29 互聯(lián)網(wǎng)

這篇文章主要介紹了Android開(kāi)發(fā)中實(shí)現發(fā)送短信的小程序示例,文中還附帶了一個(gè)監聽(tīng)廣播接收者的升級版短信發(fā)送例子,需要的朋友可以參考下

 

上圖為代碼結構圖。

現在我們看下具體的代碼。

Send.java

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

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);

         /*獲取系統默認的信息管理器,一定要注意的是SmsManager是android.telephony.SmsManager;這和

         *我們使用的版本有關(guān),在 Android 2.0 以前 應該使用 android.telephony.gsm.SmsManager

         *Android 2.0 之后的版本應該用 android.telephony.SmsManager。

         */

        SmsManager smsManager = SmsManager.getDefault();

        /*PendingIntent.getBroadcast返回一個(gè)用于廣播的PendingIntent對象,類(lèi)似于調用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.pideMessage有些時(shí)候短信如果超過(guò)了字數,我們就需要這個(gè)方法來(lái)幫我們拆分短信內容。

        ArrayList<String> smses = smsManager.pideMessage(message);

        Iterator<String> iterator = smses.iterator();

        while(iterator.hasNext()){

          String temp = iterator.next();

          //發(fā)送短信

          smsManager.sendTextMessage(number, null, temp, paIntent, deliveryIntent);

        }

        // 彈出一個(gè)浮動(dòng)框顯示提示內容,Toast.LENGTH_LONG代表浮動(dòng)框顯示時(shí)間的長(cháng)短

        Toast.makeText(Send.this, "短信發(fā)送完成", Toast.LENGTH_LONG).show();

 

         

      }

    });

     

  }

}

 

main.xml

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

<?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ā)送器,請輸入電話(huà)號碼"

  />

 <EditText

  android:id="@+id/number"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content"

  android:hint="這里輸入電話(huà)號碼"

 />

 <TextView

 android:layout_width="fill_parent"

  android:layout_height="wrap_content"

  android:text="歡迎使用短信發(fā)送器,請輸入短信內容"

 />

 <EditText

  android:id="@+id/message"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content"

  android:minLines="3"

  android:hint="這里輸入短信內容"

 />

 <Button

  android:id="@+id/button"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:text="send"

 />

</LinearLayout>

AndroidManifest.xml

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<?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>

最終效果圖為:

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


碎碎念:

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

之后應該用 android.telephony.SmsManager;

 

1

SmsManager smsManager = SmsManager.getDefault();

意思為獲取系統默認的信息管理器


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

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

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


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

此外,我們還要在A(yíng)ndroidManifest.xml中聲明短信發(fā)送權限。

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

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

發(fā)送短信: 

 

1

2

SmsManager smsMgr = SmsManager.getDefault(); 

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


顯示寫(xiě)短信界面: 

 

1

2

3

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

Intent mIntent = new Intent( android.content.Intent.ACTION_SENDTO, smsToUri ); 

startActivity( mIntent );


發(fā)送電子郵件: 

 

1

2

3

4

5

6

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"));

  在云里,為各行業(yè)商戶(hù)搭建自己的小程序。微信號:zaiyunli002

最近中文字幕高清免费大全8