【问题标题】:SMSManager not working on Samsung Galaxy S3 LTESMSManager 不适用于三星 Galaxy S3 LTE
【发布时间】:2013-08-22 10:14:19
【问题描述】:

我创建了简单的代码来发送适用于 Xperia U 和 QMobile(本地品牌)的 SMS。 但它不适用于三星 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,使用 android.telephony.SmsManager API
  • @kaibuki 看看我的回答,如果可行的话回复我 :)

标签: android galaxy smsmanager


【解决方案1】:

首先一定要添加发送短信的权限

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

然后用 try 和 catch 包围您的代码以查找阻止在 Samsung 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();
      }

【讨论】:

    【解决方案2】:

    你错过了电话 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);
    

    【讨论】:

      【解决方案3】:

      你可以尝试使用这个库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 中声明的消息字段在哪里
      • 执行我的应用程序时出现此错误[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;
      • 看来你已经在堆栈溢出stackoverflow.com/questions/19653132/… 中问过这个问题,所以等待答案。我建议你给这个库的开发者 jklinker1@gmail.com 发邮件。我觉得你的开发环境有问题。
      猜你喜欢
      • 2013-02-21
      • 1970-01-01
      • 2012-03-19
      • 2019-02-10
      • 1970-01-01
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多