sms 发送短信和dialog引入布局

本文介绍了一个基于Android平台的短信发送应用示例,演示了如何使用系统短信功能及自定义短信发送流程,包括创建对话框输入短信内容、选择联系人、监听短信发送状态等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class SmsSend extends Activity {
    /**按钮控件*/
    private Button system_sms_button;   
    private Button customize_sms_button;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        system_sms_button = (Button)this.findViewById(R.id.main_button1);
        system_sms_button.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
sendSms("123456789","系统短信功能");
}      
        });
               
        customize_sms_button = (Button)this.findViewById(R.id.main_button2);
        customize_sms_button.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
sendSMS("","");
}
        });
        
    }
    
    
/**
* 调用系统的发送短信
* @param address  地址   
* @param body 信息内容
*/
private void sendSms(String address,String body) {
try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra("address", address);
intent.putExtra("sms_body",body);
intent.setType("vnd.android-dir/mms-sms");
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}


/**对话框实例 */
private AlertDialog sendSMSDialog;


/** 自定义ACTION常数,作为广播的Intent Filter识别常数 */
private String SMS_SEND_ACTIOIN = "SMS_SEND_ACTIOIN";
private String SMS_DELIVERED_ACTION = "SMS_DELIVERED_ACTION";


/** 创建两个广播对象*/
private MyBroadcastReceiver myBroadcastReceiver1;
private MyBroadcastReceiver myBroadcastReceiver2;

/**选取联系人返回后的状态码*/
private final int backCode = 1;


/**
* 推荐好友
*/
private void sendSMS(final String content1, final String content2) {
LayoutInflater factory = LayoutInflater.from(this);
final View textEntryView = factory.inflate(R.layout.showdialog_smsentry_layout, null);
final EditText editText_phone = (EditText) textEntryView.findViewById(R.id.showdialog_smsentry_edittext_phone);
editText_phone.setText(content1);
final EditText editText_content = (EditText) textEntryView.findViewById(R.id.showdialog_smsentry_edittext_content);
editText_content.setText(content2);
final ImageButton imageButton = (ImageButton) textEntryView.findViewById(R.id.showdialog_smsentry_imagebutton);


imageButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//跳转到系统联系人列表
Uri uri = Uri.parse("content://contacts/people");
Intent intent = new Intent(Intent.ACTION_PICK, uri);
startActivityForResult(intent, backCode);
sendSMSDialog.dismiss();
}
});


AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(android.R.drawable.ic_dialog_info);
builder.setTitle(getString(R.string.title));
builder.setView(textEntryView);


builder.setPositiveButton(getString(R.string.certain),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String number = editText_phone.getText().toString();
String content = editText_content.getText().toString();


if (number == null || number.length() == 0) {//判断电话是否为空
Toast.makeText(SmsSend.this, "电话号码不能为空!", Toast.LENGTH_LONG).show();
sendSMS(number, content);
} else {
// 自定义IntentFilter为SENT_SMS_ACTIOIN Receiver
IntentFilter mFilter01;
mFilter01 = new IntentFilter(SMS_SEND_ACTIOIN);
myBroadcastReceiver1 = new MyBroadcastReceiver();
//开启广播
registerReceiver(myBroadcastReceiver1, mFilter01);


// 自定义IntentFilter为DELIVERED_SMS_ACTION Receiver
mFilter01 = new IntentFilter(SMS_DELIVERED_ACTION);
myBroadcastReceiver2 = new MyBroadcastReceiver();
//开启广播
registerReceiver(myBroadcastReceiver2, mFilter01);

try {
// 创建SmsManager对象
SmsManager smsManager = SmsManager.getDefault();
// 创建自定义Action常数的Intent(给PendingIntent参数之用)
Intent itSend = new Intent(SMS_SEND_ACTIOIN);
Intent itDeliver = new Intent(SMS_DELIVERED_ACTION);


// sentIntent参数为传送后接受的广播信息PendingIntent
PendingIntent sendPI = PendingIntent
.getBroadcast(getApplicationContext(),0, itSend, 0);


// deliveryIntent参数为送达后接受的广播信息PendingIntent
PendingIntent deliverPI = PendingIntent
.getBroadcast(getApplicationContext(),0, itDeliver, 0);


// 发送SMS短信,注意倒数的两个PendingIntent参数 
smsManager.sendTextMessage(number,null,content,sendPI, deliverPI);
} catch (Exception e) {
e.printStackTrace();
}
}


}
});


builder.setNegativeButton(getString(R.string.cancel),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});


sendSMSDialog = builder.create();
sendSMSDialog.show();
sendSMSDialog.setCanceledOnTouchOutside(true);
}


/** 
* 聆听短信状态
*/
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
if (getResultCode() == Activity.RESULT_OK) {
Toast.makeText(SmsSend.this, "发送成功!", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(SmsSend.this, "发送失败!", Toast.LENGTH_LONG).show();
}
//注销广播
unregisterReceiver(myBroadcastReceiver1);
unregisterReceiver(myBroadcastReceiver2);
} catch (Exception e) {
e.getStackTrace();
}
}
}



/**
* 接收联系人返回数据
*/
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case backCode:
if (data != null) {
final Uri uriRet = data.getData();
if (uriRet != null) {
try {
Cursor c = managedQuery(uriRet, null, null, null, null);
c.moveToFirst();
/* 抓取通讯录的姓名 */
String strName = c.getString(c.getColumnIndexOrThrow(People.NAME));
/* 抓取通讯录的电话 */
String strPhone = c.getString(c.getColumnIndexOrThrow(People.NUMBER));
if (strName != null) {
Toast.makeText(SmsSend.this, strName, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(SmsSend.this, "联系人为空!", Toast.LENGTH_LONG).show();
}
sendSMS(strPhone,"");
} catch (Exception e) {
e.printStackTrace();
sendSMS("","");
Toast.makeText(SmsSend.this, "错误!", Toast.LENGTH_LONG).show();
}
}
} else {
sendSMS("","");
Toast.makeText(SmsSend.this, "联系人为空!", Toast.LENGTH_LONG).show();
}
break;
}
super.onActivityResult(requestCode, resultCode, data);
}

}

<uses-permission android:name="android.permission.SEND_SMS" /><!-- 发短信 -->
    <uses-permission android:name="android.permission.READ_CONTACTS"/><!-- 读取联系人 -->

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值