0

したがって、私の mainActivityでは、 を使用して、何らかのシステム イベントに応答し (もちろんバックグラウンドで実行され) 、メイン アクティビティに登録されている に適切なメッセージを送信するオブジェクトIntentを開始します。私がやろうとしているのは、放送受信機のメソッドです。起動しようとしているアクティビティは、データ (サービスによってブロードキャスト レシーバーに送信される) を処理し、成功/失敗のメッセージを返す他のアプリです。ServiceBroadcastReceiverstartActivityForResultonReceiveonReceive

問題は、onActivityResult成功/失敗メッセージを取得するはずのものが、メイン アクティビティを開いたときにのみ実行されることです。私がやりたいことは、主なアクティビティがトップにあるか、バックグラウンドで実行されているか (スタックのトップではない) に関係なく、結果を取得することです。onActivityResultつまり、バックグラウンドで実行したいのです。

アイデアは次のとおりです(正常に機能する不要な部分と変数を省略しました):

public class MainActivity extends Activity {

    ...

    public BroadcastReceiver br = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(something)) {
                String text = intent.getStringExtra(some_key);

                Intent anotherApp = new Intent(some_configuration);

                startActivityForResult(anotherApp, request_code);
            }
        }
    };

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        // something should happen here

        // however this method fires only when MainActivity is on top
    }
}
4

1 に答える 1