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

安卓:调用真正系统默认短信应用发短信. (含解决4.4系统环聊问题, 含调低版本apk调用高版本系统api)

2014-04-04 17:21 519 查看
原创. 转载请注明出处. 

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

}
}
}

调用此函数, 可真正实现调用系统原本的短信应用发送短信.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐