假设用户安装了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)
答案 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