检查intent uri是否可用
我有一个有时会链接到 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://
。
I have an app that sometimes links to imdb. I can do this with http://m.imdb.com/find
or if it is available imdb:///find
. My trouble is I can't find a way to check whether the imdb://
is available before it is too late.
Because the link is clicked on by the user, I can't catch the android.content.ActivityNotFoundException
exception.
Am I missing something obvious?
Solution:
By inazaruk's suggestion I'm now using the follwing code:
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;
}
The method must be called with a direct uri to what you are requesting, like imdb:///find
rather than just imdb://
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 < code>resolveActivity() 来检测系统中是否有任何
Activity
能够处理您的意图。当然,您需要构建模仿“uri”点击的意图。这可以使用Intent 来完成.setData()
函数,尽管我自己没有测试/验证。You can use
resolveActivity()
to detect whether there is anyActivity
in the system capable of handling your intent. Of course you need to construct the intent that mimics the "uri" click. That might be done usingIntent.setData()
function, though I didn't test/verify that myself.以下对我有用:
您可以将
Uri.parse("");
中的 String 替换为以下任何内容:Following worked for me:
You can replace String in
Uri.parse("");
with any of followings: