从设备转换为MMS发送多部分SMS

时间:2013-04-19 08:07:02

标签: android sms multipart samsung-mobile

在浏览网站后,我无法找到解决此问题的任何方法。 让我解释一下:

我正在尝试从应用程序发送(以编程方式)多部分SMS。它实际上是在我的设备上工作(Nexus 4),但我在Galaxy Note上试用了它,它可以将任何长尺寸的短信转换成彩信而应用程序只会发送简短的短信。关于那个的任何线索? Samsung API或其他东西是否阻止执行sendMultipartTextMessage()方法?

在我的发送功能中,我有日志调试,它显示在屏幕上,所以调用这个功能做得很好..

感谢您的帮助!

以下是我使用的代码:

public static void sendSMS(final Activity a, String phoneNumber, String message)
{        
    try {
        SmsManager sms = SmsManager.getDefault();
        ArrayList<String> parts = sms.divideMessage(message); 

        ArrayList<PendingIntent> sendIntents = new ArrayList<PendingIntent>(parts.size());
        for (int i = 0; i < sendIntents.size(); i++)
        {
            Intent sendInt = new Intent("");
            PendingIntent sendResult = PendingIntent.getBroadcast(a.getApplicationContext(), 0, sendInt, PendingIntent.FLAG_ONE_SHOT);
            sendIntents.add(sendResult);
        }

        sms.sendMultipartTextMessage(phoneNumber, null, parts, null, null);
        ContentValues values = new ContentValues();

        values.put("address", phoneNumber);
        values.put("body", message); 

        a.getApplicationContext().getContentResolver().insert(Uri.parse("content://sms/sent"), values);
    } catch(Exception e) {
        e.printStackTrace(System.out);
    }
}

1 个答案:

答案 0 :(得分:1)

    public void sendSMS(String phoneNumber, String longMessage) {
    try {

        SmsManager sms = SmsManager.getDefault();
        ArrayList<String> parts = sms.divideMessage(longMessage);
        sms.sendMultipartTextMessage(phoneNumber, null, parts, null, null);

    } catch (Exception ex) {
        ex.printStackTrace();
    }
   }

还添加此权限:

<uses-permission android:name="android.permission.SEND_SMS"/>

以上代码适用于三星Galaxy Note 2(Android 4.1.1),Micromax HD Canvas(Android 4.1.1),三星Galaxy S3(Android 4.1.1),HTC One X(Android 4.0)。

所以这个功能在三星手机上不会阻挡我。