假设用户安装了spotify、youtube、xbmc和glympse应用程序。
spotify-app响应“spotify:app: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)发布于 2012-09-24 19:39:54
我想要得到的是每一个响应这种意图的应用程序。我不想给出一个特定的URL/URI的意图,而是希望获得响应某种URL/URI意图的每个应用程序。
这不能通过Android SDK直接实现。Android可以告诉你可以响应特定Intent的活动,但是你不能通过搜索注册的<intent-filter>对象来找到所有具有<data>元素和android:scheme属性的对象。
发布于 2012-09-15 21:30:14
为此,您可以创建一个虚拟意图(其格式与您正在研究的相同),然后使用普通的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 linkhttps://stackoverflow.com/questions/12437608
复制相似问题