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

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

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

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

升級版:
該代碼為其添加了廣播接收者的監聽(tīng)。詳細代碼如下

 

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

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

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

         /*獲取系統默認的信息管理器,一定要注意的是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_SENT2"), 0);

        PendingIntent deliveryIntent = PendingIntent.getBroadcast(Send.this, 0, new Intent("SMS_DELIVERED2"), 0);

         

        // 注冊一個(gè)BroadcastReceiver,當有匹配它的IntentFilter的Intent出現時(shí),該方法會(huì )被觸發(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.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與AndroidManifest.xml和前面的代碼一樣。

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

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

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

 

1

2

3

4

5

<receiver android:name="類(lèi)名">

<intent-filter>

<action android:name="接收者中Intent參數的action屬性" />

</intent-filter>

</receiver>

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

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

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

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