2

ユーザーが Spotify、YouTube、xbmc、および glympse アプリをインストールしているとします。

spotify-app は "spotify:album:123"-intents に応答し、glympse-app は "glympse.com/123"-intents に応答します。XBMC アプリと YouTube アプリの両方が「youtube.com/watch?v=123」インテントに応答します。

私が取得したいのは、そのような意図に対応するすべてのアプリです。特定の URL/URI にインテントを与えるのではなく、ある種の URL/URI インテントに応答するすべてのアプリを取得したいと考えています。

それでも十分に明確でない場合は、ここに、私が望むものを示す非動作コードを示します (ただし、URI のクエリのみを行っていることを除きます)。

getPackageManager()->queryIntentActivities(new Intent(Intent.Action_VIEW, Uri.parse("http://*")), 0)
4

2 に答える 2

4

私が取得したいのは、そのような意図に対応するすべてのアプリです。特定の URL/URI にインテントを与えるのではなく、ある種の URL/URI インテントに応答するすべてのアプリを取得したいと考えています。

これは、Android SDK を介して直接行うことはできません。Android は、特定 の に応答できるアクティビティを通知できますIntentが、登録済みのオブジェクトを検索して、要素と属性<intent-filter>を持つすべてのオブジェクトを見つけることはできません。<data>android:scheme

于 2012-09-24T11:39:53.667 に答える
3

これを行うには、ダミーのインテント(調査しているのと同じ形式)を作成し、通常のPackageManageルートを使用して、それを処理できるアプリを照会します。

Intent dummy = new Intent(Intent.ACTION_VIEW);
dummy.setData(Uri.parse("http://www.youtube.com/watch?v=QH2-TGUlwu4");

PackageManager packageManager = context.getPackageManager();
List<ResolveInfo> list = packageManager.queryIntentActivities(dummy, 0);

// "list" now contains all apps that can handle a YT link
于 2012-09-15T13:30:13.840 に答える