Как проверить, является ли мое приложение браузером по умолчанию - PullRequest
0 голосов
/ 08 марта 2019

У меня есть кнопка 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);
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...