0

私の Android アプリケーションでは、SMS を受信するとブロードキャストが開始されます。最初のSMSが終わっていないのに、新しいSMSをいつ受信するかを管理したい。最初のプロセスを殺すという考えがあります。でもどうしようもない。あなたが私を助けることができれば。私はAndroidのビギナーです。私のBrocastコードがあります。

ありがとう。

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.text.TextUtils;

public class SMSReceiver extends BroadcastReceiver {
private static final String number = "15555215556";

@Override
public void onReceive(Context context, Intent intent) {

    Bundle bundle = intent.getExtras();
    Object[] messages = (Object[]) bundle.get("pdus");
    SmsMessage[] sms = new SmsMessage[messages.length];

    // Creation
    for (int i=0; i < messages.length; i++) {
        sms[i] = SmsMessage.createFromPdu((byte[]) messages[i]);
    }
    for (SmsMessage msg : sms) {

        // Vérifie
        if (TextUtils.equals(msg.getOriginatingAddress(), number)) {
            Intent i = new Intent(context, DisplayActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            String sms2 = msg.getMessageBody();
            i.putExtra("SMS",sms2);
            context.startActivity(i);

            abortBroadcast();
        }
    }

}
}
4

1 に答える 1

1

最初のSMSが終わっていないのに、新しいSMSをいつ受信するかを管理したい。

これは私にはよくわかりません。ブロードキャストで重い作業を行うべきではありません。必要なデータを ie にコピーすることをお勧めします。設定またはデータベースを共有し、それをさらに処理する IntentService を開始します。を使用IntentServiceすると、データを で直接サービスに渡すことができますIntent

しかし、あなたのコードから、長い処理は見られません

最初のプロセスを殺す

これは、Android では常に悪い考えです (詳細な説明については、こちらを参照してください:アプリケーションを終了すると眉をひそめますか? )。またabortBroadcast();、あなたの意図はありますか?通知を抑制するには?

于 2014-01-16T17:04:51.920 に答える