3

テキストメッセージに関して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());  
        }  
    }  
}  

アドバイスをお願いします。

4

1 に答える 1

0

あなたのコードに問題はありません。

私の携帯電話で 80b 以上のメッセージを受信できる進行状況ダイアログ (圧縮されたプロジェクトのコメントを参照) を備えたサンプル レシーバーを実装しました。それを見て、コードと比較することをお勧めします。

于 2012-08-23T13:34:14.077 に答える