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);
}
/**按钮控件*/
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"/><!-- 读取联系人 -->