您的位置:首页 > 移动开发 > 微信开发

Android 发送短信小程序

2013-05-08 13:37 399 查看
该代码为其添加了广播接收者的监听。详细代码如下

java代码:

package eoe.demo;

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的相关信息

Log.i("number", number);

Log.i("message", message);

/*获取系统默认的信息管理器,一定要注意的是SmsManager是android.telephony.SmsManager;这和

*我们使用的版本有关,在 Android 2.0 以前 应该使用 android.telephony.gsm.SmsManager

*Android 2.0 之后的版本应该用 android.telephony.SmsManager。

*/

SmsManager smsManager = SmsManager.getDefault();

/*PendingIntent.getBroadcast返回一个用于广播的PendingIntent对象,类似于调用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);

// 注册一个BroadcastReceiver,当有匹配它的IntentFilter的Intent出现时,该方法会被触发

registerReceiver(new BroadcastReceiver(){

@Override

public void onReceive(Context context, Intent intent) {

int resultCode = getResultCode();

switch(resultCode){

case Activity.RESULT_OK:

Toast.makeText(getBaseContext(), "信息发送成功了哦、", Toast.LENGTH_LONG).show();

break;

default:

Toast.makeText(getBaseContext(), "信息发送失败了哦、", 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有些时候短信如果超过了字数,我们就需要这个方法来帮我们拆分短信内容。

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

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

while(iterator.hasNext()){

String temp = iterator.next();

//发送短信

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

}

// 弹出一个浮动框显示提示内容,Toast.LENGTH_LONG代表浮动框显示时间的长短

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

}

});

}

}

registerReceiver()用于注册广播接受者。该方法在Content中这样定义的。

        public abstract Intent registerReceiver(BroadcastReceiver receiver,IntentFilter filter);系统如果查询到满足filter的广播,便会教给receiver,让其处理。一般都是在其onReceive()方法中处理。

       如果不是在代码中主动通过registerReceiver()进行注册,那么就要从AndroidManifest.xml进行配置,代码如下

       <receiver android:name="类名">

       <intent-filter>

       <action android:name="接收者中Intent参数的action属性" />

       </intent-filter>

       </receiver>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: