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.