检查意图uri是否可用

时间:2011-08-13 11:04:52

标签: android android-intent imdb

我有一个有时会链接到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://

2 个答案:

答案 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