テキストメッセージに関してAndroidアプリを作ろうとしています。グーグルからソースコードを入手しましたが、問題なく動作します。ただし、80バイトを超えるテキストメッセージやMMSでは機能しません。onReceive
メソッドはそれらの長いテキストメッセージをキャッチできない ようです。
私は何かを逃したか、何か間違いをしましたか?
これが私が追加した権限です。
android.permission.READ_SMS,
android.permission.RECEIVE_SMS,
android.permission.SEND_SMS,
android.permission.WRITE_SMS,
android.permission.READ_PHONE_STATE,
android.permission.INTERNET,
android.permission.ACCESS_NETWORK_STATE,
android.permission.RECEIVE_MMS,
android.permission.WRITE_EXTERNAL_STORAGE
これは私のコードです:
public class MySMSMonitor extends BroadcastReceiver {
private static String ACTIONNAME = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null && intent.getAction() != null
&& ACTIONNAME.compareToIgnoreCase(intent.getAction()) == 0) {
Object[] pdu = (Object[]) intent.getExtras().get("pdus");
SmsMessage[] msg = new SmsMessage[pdu.length];
for (int i = 0; i < msg.length; i++) {
msg[i] = SmsMessage.createFromPdu((byte[]) pdu[i]);
}
StringBuilder sb = new StringBuilder();
for(SmsMessage allMsg : msg) {
sb.append(allMsg.getDisplayOriginatingAddress() + "&");
sb.append(allMsg.getDisplayMessageBody() + "&");
sb.append(allMsg.getTimestampMillis() + "&");
}
android.util.Log.i("SMS monitor", "data received = " + sb.toString());
}
}
}
アドバイスをお願いします。