我需要设置特定mime类型的默认应用程序。我知道如何清除默认值,但我需要在不实际打开应用程序的情况下提示用户。
PackageManager p = mContext.getPackageManager();
ComponentName cN = new ComponentName(mContext, FakeDownloadActivity.class);
p.setComponentEnabledSetting(cN, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
Intent selector = new Intent(Intent.ACTION_DEFAULT);
selector.addCategory(Intent.CATEGORY_DEFAULT);
selector.setType(mimeType);
mContext.startActivity(selector);
p.setComponentEnabledSetting(cN, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
上面的代码启动了活动,而不仅仅是选择默认活动。它通过启用一个假活动,然后禁用它来实现。这会导致下一次调用时显示“选择默认应用程序”对话框。我只想选择默认活动。