天天看點

安卓:調用真正系統預設短信應用發短信. (含解決4.4系統環聊問題, 含調低版本apk調用高版本系統api)

原創. 轉載請注明出處. 

安卓:調用真正系統預設短信應用發短信. (含解決4.4系統環聊問題, 含調低版本apk調用高版本系統api)
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) { } } }

調用此函數, 可真正實作調用系統原本的短信應用發送短信.