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
.