我需要从我的 Android 应用程序打开 Web 链接,但不会提示用户选择器对话框(也称为“消歧对话框”),只需使用默认浏览器来处理此 Intent 。
当我使用此代码时:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
根据官方文档中对 Intent.resolveActivity 方法的描述,不能保证解析 Intent 只会产生一个 Activity:
...如果发现多个 Activity 满足 Intent ,则将使用优先级最高的 Activity 。如果有多个具有相同优先级的 Activity ,系统将根据用户偏好选择最佳 Activity ,或者解析为允许用户选择 Activity 并从那里转发的系统类。
如何避免选择器对话框并仅传递到“最佳” Activity 或此操作类型的默认 Activity ?
最佳答案
您可以通过调用 PackageManager.queryIntentActivities()
自行解析 Intent
。
如果这仅返回 1 个结果,那么您只需调用 startActivity()
即可确保 Android 不会显示选择器对话框。
如果返回超过 1 个结果,您可以执行其他操作。例如,由于结果从“最佳”返回到“最差”(无论这意味着什么),您可以只显式启动第一个结果。或者您可以扫描结果列表,查找您的代码认为合适的内容(即:与浏览器名称列表匹配)。
关于java - 有没有办法明确告诉 Android 系统将我的 Intent 解析为当前 Intent 操作的默认应用程序/Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60253180/