13

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

4

2 回答 2

16

您可以使用resolveActivity()来检测系统中是否有任何Activity能够处理您的意图。当然,您需要构建模仿“uri”点击的意图。这可以使用Intent.setData()函数来完成,尽管我自己没有测试/验证。

于 2011-08-13T11:07:45.163 回答
0

Following worked for me:

    Intent intent = new Intent();
    intent.setAction("android.intent.action.VIEW");
    Uri uri = Uri.parse("imdb:///title/tt1457767/");
    intent.setData(uri);
    this.getActivity().startActivity(intent);

You can replace String in Uri.parse("");with any of followings:

            imdb:///name/<nameID>
            imdb:///find?q=<search_query>
            imdb:///title/<titleID>
            imdb:///boxoffice
            imdb:///name/<nameID>
            imdb:///find?q=toystory
于 2015-08-01T16:01:58.233 回答