0

サービスによって制御できる単純なアプリケーションを作成しています。このアプリケーションを制御するために、サービスはそれに送信できるコマンドを認識している必要があるため、次のように、これらのコマンドのリストを提供するのはアプリケーションである必要があると考えました。

  1. アプリケーションには、インテントに応答するセカンダリ アクティビティがある場合があります(そのため、 「AndroidManifest.xml」MY_ACTION_GET_COMMANDSファイルでインテント フィルターを定義する必要があります)。
  2. サービスは、メソッドを使用してこのタイプのインテントを送信できることを認識していますstartActivityForResult
  3. アプリケーションがこのタイプのインテントを受信すると、適切なアクティビティが、サポートされているコマンドのリスト (つまり、インテントのリスト) を送信して送信者に応答します。

サポートされているインテントのリストを送信するにはどうすればよいですか?

更新:アプリケーションとサービスは異なるパッケージに含まれていることに注意してください。

4

2 に答える 2

2

これらのインテントのアクティビティを表示する必要がある理由を理解できません。これは実際のユーザーが見るものですか?

特定のアプリがリッスンしているすべてのインテントのリストを本当に取得したい場合は、PackageManager を使用できます。PackageManagerを使用してPackageInfoを取得します。その後、そのアプリで定義されているすべてのレシーバーをスキャンできます。

もう少し詳しく説明していただけると助かるかもしれません。

于 2012-04-27T10:20:01.570 に答える
1

サポートされているインテントをリストとして子アクティビティから親に渡すことができます。

 Intent intent = this.getIntent();
        ArrayList<String> a = new ArrayList<String>();
        a.add("com.customintent.INTENT_ONE");
        a.add("com.customintent.INTENT_TWO");
        intent.putStringArrayListExtra("list",a);

        this.setResult(RESULT_OK, intent);
于 2012-04-27T10:27:14.617 に答える