安卓:调用真正系统默认短信应用发短信. (含解决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) {
}
}
}
调用此函数, 可真正实现调用系统原本的短信应用发送短信.
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) {
}
}
}
调用此函数, 可真正实现调用系统原本的短信应用发送短信.
相关文章推荐
- android调用系统相机和相册进行拍照裁剪处理,解决不同安卓版本存在无法加载相册的问题,处理了是否有sd卡的存在的情况
- 安卓调用系统相机拍照的几个步骤,同时解决版本兼容问题
- 解决6410 WINCE6 应用层调用SetSystemPowerState api关机无效的问题
- Android4.4以上系统选择将第三方短信应用设置为默认短信应用方法
- 请教一个问题,Android应用运行时在调用某个API(比如相机)时,系统如何判断这个应用是否具备相应的权限?
- 请教一个问题,Android应用运行时在调用某个API(比如相机)时,系统如何判断这个应用是否具备相应的权限?
- 如何真正解决“ UWP DEP0700: 应用程序注册失败。[0x80073CF9] 另一个用户已安装此应用的未打包版本。当前用户无法将该...”的问题
- 请教一个问题,Android应用运行时在调用某个API(比如相机)时,系统如何判断这个应用是否具备相应的权限?
- 解决修改完系统默认python版本后yum不可用的问题
- 红米Note调用系统相机拍照后应用崩溃问题分析解决
- 解决6410 WINCE6 应用层调用SetSystemPowerState api关机无效的问题
- 如何解决安卓(系统版本低) CSS3 动画问题---高性能动画
- iOS xcode8提交 iOS10 “此构建版本无效” (已解决)(调用 私有api问题)
- 安卓解决从系统安装完成打开和返回桌面打开启动两次应用的问题
- 解决修改完系统默认python版本后yum不可用的问题!!!!!!
- 完美解决部分安卓手机调用系统拍照上传时图片旋转问题
- android调用系统相机(通用,完美解决4.0以后版本以及机型的问题)
- 调用Android系统应用时解决SDK不兼容问题
- iOS 去掉导航左侧按钮系统默认的文字 只留 默认箭头 (而且解决了 切换应用是 闪桌面的问题)
- 关于ClickOnce无法更新/Upgrade/下载 应用系统最新版本的问题和解决方法