我正在维护一个应用程序,允许您通过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指定收件人的一些替代方法,或者是一种可接受的转义风格?