0

次のコードでセレクターを作成できます。

Intent share = new Intent(Intent.ACTION_SEND);
                share.setType("text/plain");
                share.putExtra(Intent.EXTRA_TEXT, "hello");
                startActivity(Intent.createChooser(share, "my title"));

この「こんにちは」を送信したい(と仮定)が、この呼び出しで始まるアクティビティに表示されるものを指定したいstartActivity(Intent.createChooser(share, "my title"));のですが、電話にインストールされているすべてのアプリが表示されます。一部のアプリケーションのみに制限することはできませんか?

4

1 に答える 1

1

これを行うと、インテントを受け取ることができるすべてのアプリがユーザーに表示されるため、ユーザーは指定されたアクションを実行するために好みのアプリを選択できます。いいえ、これを少数のアプリケーションのみに制限することはできません。

ただし、アクティビティ名がわかっている場合は、特定のアプリを直接呼び出すことができます。この場合、チューザーを無視して、必要なアプリの名前を含むリストビューを含む独自のダイアログボックスを作成します。ユーザーがこれらのいずれかを選択すると、その特定のアプリのみにインテントを起動します。

ただし、そもそもユーザーがアプリを持っているかどうかを確認してください。これを行うには、特定のタイプのブロードキャスト(例:テキストブロードキャスト)を受信するすべてのブロードキャストレシーバーについてパッケージマネージャーにクエリを実行します。これは、次を使用して実行できます。

public abstract List queryBroadcastReceivers(Intent intent、int flags)

このための開発者向けドキュメントはこちらです: https ://developer.android.com/reference/android/content/pm/PackageManager.html#queryBroadcastReceivers%28android.content.Intent,%20int%29

于 2012-10-03T10:18:56.180 に答える