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

来源:互联网 发布:酒店网络销售代理协议 编辑:程序博客网 时间:2024/06/06 17:34

原创. 转载请注明出处. 


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-intentif ( 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) {}    }}



调用此函数, 可真正实现调用系统原本的短信应用发送短信.




0 0