SMSManager在三星Galaxy S3 LTE上无法工作

4

我创建了一段简单的代码来发送短信,可以在Xperia U和QMobile(本地品牌)上使用。但是在三星Galaxy S3 LTE上无法使用。

这段代码如下:

import android.telephony.SmsManager;
SmsManager sms = SmsManager.getDefault();
            PendingIntent sentPI;
            String SENT = "SMS_SENT";

            sentPI = PendingIntent.getBroadcast(activity, 0,new Intent(SENT), 0);

            sms.sendTextMessage("01234567890", null, msg, sentPI, null);

哪一个?API里有两个。 - Selvin
@Selvin,使用android.telephony.SmsManager API。 - Adil Bhatty
@kaibuki请查看我的答案,如果可以,请回复我:) - Dileep
3个回答

2

首先,请确保已添加发送短信的权限。

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

然后使用try和catch来包围您的代码,以查找阻止在三星s3 lte上发送的错误。

      try {
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage("01234567890", null, msg, sentPI, null);
        Toast.makeText(getApplicationContext(), "SMS Sent!",
                    Toast.LENGTH_LONG).show();
      } catch (Exception e) {
        Toast.makeText(getApplicationContext(),
            "SMS faild, please try again later!",
            Toast.LENGTH_LONG).show();
        e.printStackTrace();
      }

0

你忘记调用 PendingIntent deliveredPI

试试这段代码..!!

PendingIntent sentPI =PendingIntent.getBroadcast(activity, 0,new Intent(SENT), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,new Intent(DELIVERED), 0);
sms.sendTextMessage("01234567890", null, msg, sentPI, deliveredPI);

0
您可以尝试使用这个库android-smsmms来发送短信。
Settings sendSettings = new Settings();
sendSettings.setDeliveryReports(true);
sendSettings.setSplit(true);
Message mMessage = new Message(textToSend, addressToSendTo);.
sendTransaction.sendNewMessage(message, null)

希望这能对你有所帮助。

编辑

com.klinker.android.send_message.Settings sendSettings = new com.klinker.android.send_message.Settings();
sendSettings.setDeliveryReports(true);
sendSettings.setSplit(true);
sendSettings.setSplitCounter(true);
sendSettings.setStripUnicode(true);
com.klinker.android.send_message.Transaction sendTransaction = new com.klinker.android.send_message.Transaction(getApplicationContext(), sendSettings);
com.klinker.android.send_message.Message mMessage = new com.klinker.android.send_message.Message("Message", "9999999999");
sendTransaction.sendNewMessage(mMessage, 0);

在sendTransaction处显示错误,sendTransaction中的message字段在哪里声明? - Kartheek Sarabu
在执行我的应用程序时,我遇到了这个错误[2013-10-29 13:57:50 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/google/gson/JsonSerializer; [2013-10-29 13:57:50 - kluebook] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/google/gson/JsonSerializer; - Kartheek Sarabu
看起来你已经在Stack Overflow上问过这个问题了http://stackoverflow.com/questions/19653132/message-is-not-sending-in-some-phones-by-smsmanager,所以请等待答案。我建议你给这个库的开发者jklinker1@gmail.com发一封邮件。我认为你的开发环境可能存在一些问题。 - Girish Nair

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接