带有 "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 设备上都有效。设备制造商可以并且确实会更改选择器之类的东西,这很可能涉及不同包中的不同类。
在我的一个应用程序中,我想请用户选择网络浏览器,并希望他们可以使用 "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 设备上都有效。设备制造商可以并且确实会更改选择器之类的东西,这很可能涉及不同包中的不同类。