如何检查我的应用程序是否为默认浏览器

时间:2019-03-08 10:04:03

标签: java android android-intent

我有一个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);
}
}

0 个答案:

没有答案