android - 使用 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/的链接)。
我的问题是导致它们的原因以及处理它们的最佳方法是什么。
一个简单的尝试捕获是否足够,或者有办法让捕获此异常的用户仍然可以从他们的手机打开网址?
解决方案
每当您启动来自另一个应用程序(例如 Web 浏览器)的活动时,您必须考虑到用户可能无法访问此类应用程序。甚至像 Web 浏览器这样常见的东西也可能在某些设备上受到限制(例如,儿童使用的设备)。
因此,您需要将此类startActivity()
调用包装在try
/catch
块中并处理ActivityNotFoundException
. 具体如何处理将取决于您的应用程序,但您需要向用户解释由于某种原因您无法启动所需的应用程序。
推荐阅读
- python - TypeError:runfile() 得到了一个意外的关键字参数“current_namespace”
- javascript - React-如何防止一键激活所有图标
- arrays - 将 Turtle 设置到特定的网格位置 - NetLogo
- python - 如何为 Python 存储库设置 Dependabot?
- typescript - AWS CDK:一旦 lambda 函数检测到 URL 的变化,发送和 SMS 消息
- python - 在 python 代码中添加一个 forEach 或 for 循环
- amazon-web-services - AWS Lambda 函数返回“缺少身份验证令牌”
- amazon-web-services - AWS Lambda 在没有 Amazon S3 触发器的情况下从 Amazon S3 读取文件
- javascript - 如何使 mapbox 地图在卡内响应?
- python - 根据选择列值划分组数据?