0

BroadcastReceiver から開始/再開されたかどうかをアプリケーションからどのように判断できますか?

発信通話を傍受します ( android.intent.action.NEW_OUTGOING_CALL)。getString(Intent.EXTRA_PHONE_NUMBER)が一連の​​数字の 1 つである場合、その呼び出し (setResultData(null)) を中止し、代わりstartActivityにアプリをputExtra特定の数字にします。BroadcastReceiverからの場合(およびその場合のみ)、基本的に「このアプリをこの番号で使用する/電話に戻る」というアラートを表示できるようにしたいと考えています。ただし、別の場所からアプリに戻ると、BroadcastReceiver から来たのではなくても、番号がまだインテントのエクストラにあるように見えることがあります。フラグを確認してみましたFLAG_ACTIVITY_NEW_TASKが、BroadcastReceiver から来ていないときに時々表示されます。

4

1 に答える 1

0

あなたが言ったように、アクティビティに任意のパラメーターを渡すことができ、それがあなたの から呼び出されたことを示しますBroadcastReceiver。ただし、アクティビティを再開するときに、一部のコードが再度実行される可能性があり、望ましくない結果が生じる可能性があります。かつて同様の問題が発生したとき、インテントにいくつかの情報を保存/上書きしました。

myActivity.getIntent().putExtra("phoneNumber", "nil");

私にとってうまくいったのは、終了中に処理された後にインテントで余分なものを上書きしたことですActionMode(としましょう"nil")。そのため、後でその情報を評価することができましたonResume()

@Override
public void onResume() {
    super.onResume();

    String phoneNumber = getIntent().getExtras().getString("phoneNumber")

    if ("nil".equals(PhoneNumber)) {
      ...
    }
}

ちょっとしたテストをしただけで、かなりうまくいきました。

これが役に立てば幸いです...乾杯!

于 2013-04-25T17:13:38.133 に答える