原创. 转载请注明出处.
public void sendSms() {
Uri uriTo = Uri.parse("smsto:10001");
String strMsg = "xxxx";
try {
// 参考资料:http://stackoverflow.com/questions/20079047/android-kitkat-4-4-hangouts-cannot-handle-sending-sms-intent
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { //if (Build.VERSION.SDK_INT >= 19 ? true : false) {
//Need to change the build to API 19
String defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(this); // String defaultSmsPackageName = getDefaultSmsPackage(this);
Intent sendIntent = new Intent(Intent.ACTION_SEND, uriTo); //Uri.parse("smsto:" + Uri.encode("10001")) // 一定会被忽略
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_TEXT, strMsg);
if (defaultSmsPackageName != null) {
sendIntent.setPackage(defaultSmsPackageName);
}
startActivity(sendIntent);
} else {
Intent sendIntent = new Intent(Intent.ACTION_VIEW, uriTo);
// 设置 强制使用系统默认短信应用发送短信
sendIntent.setPackage("com.android.mms");
sendIntent.putExtra("sms_body", strMsg); // Intent.EXTRA_TEXT // intent.putExtra("address", toContact.toString());
startActivity(sendIntent);
}
} catch (Exception e) {
// 防范 系统短信应用不存在,或者无法打开.
// 下面的方法只 Intent.ACTION_VIEW 和Intent.ACTION_MAIN 不能过滤掉 QQ通讯录
// 且 ACTION_MAIN 不能直接进入短信编辑页面.智能打开短信应用
try {
Intent it = new Intent(Intent.ACTION_VIEW, uriTo); // Intent.ACTION_MAIN
it.setType("vnd.android-dir/mms-sms");
it.putExtra("sms_body", strMsg);
startActivity(it);
} catch (Exception e2) {
}
}
}