首页 > 解决方案 > 使用 Intent.ACTION_VIEW 打开链接在某些设备上导致 android.content.ActivityNotFoundException

问题描述

最近,我开始android.content.ActivityNotFoundException:为我的应用登录 Google Play 控制台。导致此异常的代码是:

private void openLink(String url) {
    Uri uri = Uri.parse(url); 
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);
}

现在很少发生异常,它在大多数设备上都可以正常工作,并且 url 是 100% 有效的(指向https://mathsolver.microsoft.com/的链接)。

我的问题是导致它们的原因以及处理它们的最佳方法是什么。

一个简单的尝试捕获是否足够,或者有办法让捕获此异常的用户仍然可以从他们的手机打开网址?

标签: android

解决方案


每当您启动来自另一个应用程序(例如 Web 浏览器)的活动时,您必须考虑到用户可能无法访问此类应用程序。甚至像 Web 浏览器这样常见的东西也可能在某些设备上受到限制(例如,儿童使用的设备)。

因此,您需要将此类startActivity()调用包装在try/catch块中并处理ActivityNotFoundException. 具体如何处理将取决于您的应用程序,但您需要向用户解释由于某种原因您无法启动所需的应用程序。


推荐阅读