我有一个Switch
按钮,尝试使其处于活动状态将检查是否没有默认应用程序打开Action.CONTENT_VIEW
,并要求将我的应用程序设置为默认浏览器,但仅在始终单击时才会显示。 >
如果其他浏览器为默认浏览器,则打开一个包含一些步骤的对话框,然后将我发送到另一个应用程序的默认默认设置,即默认浏览器,并且仅当用户清除默认设置时,我的应用程序才会作为默认浏览器。
问题在于它不会检查其他应用程序是否为默认浏览器。
我基于此答案,它对我有一点帮助,但根本没有帮助。
https://stackoverflow.com/a/47162845/9560126
此链接中还有另一个代码。
https://stackoverflow.com/a/23622337/9560126
但是问题在于它会直接打开应用程序,而不会转到应用程序设置中清除默认设置
下面您可以找到代码。
public class SettingsActivity extends AppCompatActivity implements DialogInterface.OnClickListener {
switcherDefaultBrowser.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!switcherDefaultBrowser.isChecked()) {
openDialog();
} else if (switcherDefaultBrowser.isChecked()) {
isMyLauncherDefault(getApplicationContext);
}
}
});
private void openDialog() {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
dialogBuilder.setNegativeButton(R.string.Cancel, this);
dialogBuilder.setTitle(R.string.SVDialogDefaultBrowserAppTitle);
dialogBuilder.setMessage(R.string.SVDialogDefaultBrowserAppMessage);
dialogBuilder.setPositiveButton(R.string.SVDialogDefaultBrowserAppBtnClear, this);
AlertDialog alertDialog = dialogBuilder.create();
alertDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
switcherDefaultBrowser.setChecked(true);
}
});
alertDialog.show();
}
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == -2) {
switcherDefaultBrowser.setChecked(true);
} else if(which == -1) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(intent);
}
}
boolean isMyLauncherDefault(Context context) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://google.com"));
ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(browserIntent,PackageManager.MATCH_DEFAULT_ONLY);
String defaultBrowserPkg = null;
if (resolveInfo != null) {
if (resolveInfo.activityInfo != null) {
defaultBrowserPkg = resolveInfo.activityInfo.packageName;
if (!defaultBrowserPkg.equals("searchwith.smartbrowser")) {
Log.d("TAG", "isMyLauncherDefault: " + defaultBrowserPkg);
openDialog();
switcherDefaultBrowser.setChecked(false);
}
Log.d("TAG", "isMyLauncherDefault: " + defaultBrowserPkg);
}
}
Log.d("TAG2", "isMyLauncherDefault: " + TextUtils.equals(context.getPackageName(), defaultBrowserPkg));
return TextUtils.equals(context.getPackageName(), defaultBrowserPkg);
}
}