如何获得响应任何URL / URI-Intent的每个App / Activity?

时间:2012-09-15 13:04:46

标签: android android-intent

假设用户安装了spotify,youtube,xbmc和glympse应用程序。

spotify-app响应“spotify:album:123”-intents和glympse-app回复“glympse.com/123”--intents。 XBMC-app和YouTube-app都响应“youtube.com/watch?v=123"-intents。

我想要的是每个响应这种意图的应用程序。我不想给出特定URL / URI的意图,而是希望让每个应用程序响应某种URL / URI意图。

如果仍然不够清楚,这里有一些非工作代码,它显示了我想要的内容(除了它只是查询URI)。

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

2 个答案:

答案 0 :(得分:4)

  

我想要的是每个响应这种意图的应用程序。我不想给出特定URL / URI的意图,而是希望让每个应用程序响应某种URL / URI意图。

这不是通过Android SDK直接实现的。 Android可以告诉您可以响应特定 Intent的活动,但您无法搜索已注册的<intent-filter>个对象,以查找具有<data>元素的所有内容android:scheme属性。

答案 1 :(得分: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