SMS URI以磅(#)符号截断

时间:2014-03-19 03:27:33

标签: android android-intent sms

我正在维护一个应用程序,允许您通过SMS与以下代码共享:

    String separator = "; ";
    if(android.os.Build.MANUFACTURER.toLowerCase().contains("samsung")){
        separator = ", ";
    }
    StringBuilder uri = new StringBuilder("sms:");
    for (int i = 0; i < nums.length; i++) {
        uri.append(nums[i]);
        if( i < (nums.length -1) )
            uri.append(separator);
    }
    Intent smsIntent = new Intent(Intent.ACTION_VIEW);
    smsIntent.setType("vnd.android-dir/mms-sms");
    smsIntent.setData(Uri.parse(uri.toString()));
    smsIntent.putExtra("sms_body", smsBody);
    startActivityForResult(smsIntent, SMS_SENT_RESULT);

我注意到以下奇怪的行为(发生在三星Galaxy S3和Kyocera事件上,所以 - 我认为 - 不是供应商特定的):

当nums中的某个电话号码包含井号('#')时,其后的所有号码都将被删除。也就是说,如果我尝试在1-111-111-1111向'Andy'发送消息,在* 228#发送'AT&amp; T技术支持',在1-222-222-2222向'Betty'发送消息URI是“sms:1-111-111-1111; * 228#; 1-222-222-2222”,但生成的短信只有“To:Andy,AT&amp; T技术支持”。

有解决方法吗?为Android意图URI指定收件人的一些替代方法,或者是一种可接受的转义风格?

0 个答案:

没有答案