我有一个有时会链接到imdb的应用。我可以使用http://m.imdb.com/find
或可用imdb:///find
来执行此操作。我的麻烦是我无法找到方法来检查imdb://
是否可用,但为时已晚。
由于用户点击了该链接,我无法捕获android.content.ActivityNotFoundException
例外。
我错过了一些明显的东西吗?
解决方案:
根据inazaruk的建议,我现在正在使用以下代码:
public static boolean isUriAvailable(Context context, String uri) {
Intent test = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
return context.getPackageManager().resolveActivity(test, 0) != null;
}
必须使用直接uri调用此方法,例如imdb:///find
,而不仅仅是imdb://
。
答案 0 :(得分:15)
您可以使用resolveActivity()
来检测系统中是否有Activity
能够处理您的意图。当然,您需要构建模仿“uri”点击的意图。这可以使用Intent.setData()
函数完成,但我没有自己测试/验证。
答案 1 :(得分:0)
以下为我工作:
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
Uri uri = Uri.parse("imdb:///title/tt1457767/");
intent.setData(uri);
this.getActivity().startActivity(intent);
您可以使用以下任意内容替换Uri.parse("");
中的字符串:
imdb:///name/<nameID>
imdb:///find?q=<search_query>
imdb:///title/<titleID>
imdb:///boxoffice
imdb:///name/<nameID>
imdb:///find?q=toystory