0

android.provider.Telephony.SMS_RECEIVEDアクションを処理し、場合によっては返信としてテキスト メッセージを送信するBroadcastReceiver があります。私のアプリには がありandroid.permission.SEND_SMS、GSM 電話で正常に動作します。ただし、現時点で私が利用できる唯一の CDMA 電話では機能せず、CDMA 電話でのみ発生すると思われます。これは、私が試したすべての GSM 電話で動作します。かなりの数です。logcatエラーも警告も表示されず、呼び出されるD/SMSSMSSMSSMS( 260): TeleService: 4098たびにのみ表示されます。sendSmsさらに、アクティビティでまったく同じコードを試してみましたが、完全に正常に動作します。

私が使用しているコード:

private void sendSms(String destination, String message) {
    if(preferencesManager.smsRepliesEnabled()) {
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage(destination, null, message, null, null);
    }
}

preferencesManager.smsRepliesEnabled()期待どおりに動作し、destination適切messageに設定されています。Log.dこれら3つすべてを確認するステートメントを追加しました。同様に、 をPhoneNumberUtils.isWellFormedSmsAddress(destination)返しますtrue

編集: @wojci のアドバイスでsentIntent、結果コードを追加してログに記録しました。結果コードはRESULT_ERROR_GENERIC_FAILUREで、エクストラは にerrorCode設定されてい-1ます。ただし、アクティビティからまったく同じコードを試すと、RESULT_OK.

4

1 に答える 1

1

次を使用してテキストを送信すると記述します。smsManager.sendTextMessage(destination、null、message、null、null);

メッセージがネットワークによって受け入れられたかどうかを通知できるsentIntentパラメーターを使用しないのはなぜですか?

ドキュメントから:

sentIntent  if not NULL this PendingIntent is broadcast when the message is successfully sent, or failed. The result code will be Activity.RESULT_OK for success, or one of these errors:
RESULT_ERROR_GENERIC_FAILURE
RESULT_ERROR_RADIO_OFF
RESULT_ERROR_NULL_PDU

たぶんそれはあなたのSMS送信があなたが期待するように機能しない理由についてあなたにいくつかのより多くの手がかりを与えることができます。

于 2012-07-31T12:11:14.523 に答える