带有 "always" 选项的默认应用选择器

Default App chooser with "always" option

在我的一个应用程序中,我想请用户选择网络浏览器,并希望他们可以使用 "Once" 和 "Always" 选项。

现在我正在使用:

 Intent webIntent = new Intent(Intent.ACTION_VIEW);
 webIntent.setData(Uri.parse("http://www.google.com"));
 webIntent.setComponent(new ComponentName("android","com.android.internal.app.ResolverActivity"));
 startActivity(webIntent);

并得到如下结果:

虽然这允许选择应用程序并具有我需要的选项,但要将 Chrome 设置为默认值,用户首先必须单击 Chrome,然后再次获取此对话框以将 Chrome 设置为默认值(它将代替 Firefox 出现)。

但是我想实现的是:

我尝试了在 SO 上可以找到的不同方法,但没有成功。 任何建议表示赞赏。

正如 Mimmo 所指出的,您无法更改系统选择器的行为,而现有的 Android 5.0+ 选择器仅允许用户通过 "Always" 将上次访问的应用设为默认应用。此外,出于明显的安全原因,您无法自己设置默认应用程序。

我还强烈建议您取消 setComponent() 通话,因为这不太可能在所有 Android 设备上都有效。设备制造商可以并且确实会更改选择器之类的东西,这很可能涉及不同包中的不同类。