从默认短信应用获取短信活动结果

时间:2015-04-23 10:51:38

标签: android

我创建了以下方法来打开设备的默认短信应用程序并使用消息和(可选)电话号码预先填充它。

我想知道的是,当发送短信时,如何才能从短信活动 返回RESULT_OK?目前,当我退出SMS活动时,我得到了RESULT_CANCELLED,正如我可能期望的那样。

是否有一种简单的方法可以确定在返回我的应用程序时是否发送了短信?

public static void sendSMS(Activity activity, String message, String phoneNumber){

        boolean hasPhoneNumber = phoneNumber != null;

        if(message == null){
            showSMSError(activity, null);
            return;
        }

        Intent smsIntent;

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
            smsIntent = new Intent(Intent.ACTION_SENDTO);
            //Ensures only SMS apps respond
            smsIntent.setData(Uri.parse("smsto:" + (hasPhoneNumber ? phoneNumber : "")));
            //No resolvable activity
            if (smsIntent.resolveActivity(activity.getPackageManager()) == null) {
                showSMSError(activity, null);
                return;
            }
        }else{
            //Old way of accessing sms activity
            smsIntent = new Intent(Intent.ACTION_VIEW);
            smsIntent.setType("vnd.android-dir/mms-sms");
            if(hasPhoneNumber) {
                smsIntent.putExtra("address", phoneNumber);
            }
            smsIntent.putExtra("exit_on_sent", true);
        }
        smsIntent.putExtra("sms_body", message);
        activity.startActivityForResult(smsIntent, SMS_ACTIVITY_REQUEST);
    }

1 个答案:

答案 0 :(得分:2)

  

我想知道的是,只有在短信被发送后,我才能从短信活动中获得RESULT_OK?

编写您自己的短信客户端应用,以支持ACTION_SENDTO的方式实现其ACTION_VIEWstartActivityForResult()活动(或活动)。这些Intent操作未记录为具有结果,这就是现有SMS客户端很少(如果有)将设置结果的原因。