Android KitKat 4.4 Hangouts 发送短信失败

文章标签: android
2014-12-27 10:17:40     人阅读    

以前写的发送短信的代码 在 Android 4.3 (Jelly Bean) 版本前一直正常的工作,知道 4.4 (KitKat) 就不能发送了.   我的代码是准备好了短信,选择需要发送的号码。

下面是我的代码

Intent sendIntent = new Intent(Intent.ACTION_VIEW);
    sendIntent.setData(Uri.parse("sms:"));
    sendIntent.putExtra("sms_body", smsText);

    activity.startActivity(sendIntent);

不能用了之后,我试过 ACTION_SEND and ACTION_SENDTO ,不过都失败了,设置sendIntent.setType("vnd.android-dir/mms-sms");,  也不行..

    找了很对帖子都没有有效的解决问题,国外的帖子也看过几篇都不符合我的情况...

我想要完成的需求如下:
    1、通过sms发送短信的app,而不是通过 发送intent
   2、然用户选择要发送的号码后再发送


经过在一轮的测试,解决方法如下

解决的步骤入选
检测系统版本

 如果版本低于 KitKat 则使用老版本的嗲吗

 如果是新版本的api,检测默认的sms package,如果有,设置该package ,如果没有让用户自己选择发送app
下面是代码

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) //At least KitKat
    {
        String defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(activity); //Need to change the build to API 19

        Intent sendIntent = new Intent(Intent.ACTION_SEND);
        sendIntent.setType("text/plain");
        sendIntent.putExtra(Intent.EXTRA_TEXT, smsText);

        if (defaultSmsPackageName != null)//如果为空,然给用户去选择支持这个intent的app
        {
            sendIntent.setPackage(defaultSmsPackageName);
        }
        activity.startActivity(sendIntent);

    }
    else //早起版本,使用下面的代码就能正常发送
    {
        Intent sendIntent = new Intent(Intent.ACTION_VIEW);
        sendIntent.setData(Uri.parse("sms:"));
        sendIntent.putExtra("sms_body", smsText);
        activity.startActivity(sendIntent);
    }


原文地址:http://www.itmmd.com/201412/392.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

android学习笔记(29)滚动视图(ScrollView)的功能和用法   上一篇
下一篇  andorid 把正方形位图见切成圆形
精彩回复
我要追加问题,请求站长解决!
姓名:       

《程序员app》专门为程序员量身定做!