402d
@402d
начинал с бейсика на УКНЦ в 1988

Аналог в REALME UI для Settings.ACTION_PRINT_SETTINGS?

Если на телефонах реалми вызвать интент для перехода к настройкам службы печати, то активити откроется, но при попытке изменить статус службы (вкл/выкл). Их кривая прошивка падает в ошибку

Process: com.android.settings, PID: 28643
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.SearchView.setMaxWidth(int)' on a null object reference at com.android.settings.print.PrintServiceSettingsFragment.onCreateOptionsMenu(PrintServiceSettingsFragment.java:84)


При портировании, они не учли смену лайота активити.

То есть через интент попадаем в часть, которую вожможно оставили для совместимости.
Если идти штатным путем. Настройки - То предлагают свой аналог в оболочке REALME UI.

Кто знает вендорный аналог для попадания в нужное место уже их настроек ?
  • Вопрос задан
  • 14 просмотров
Решения вопроса 1
402d
@402d Автор вопроса
начинал с бейсика на УКНЦ в 1988
Пришлось писать такой велосипед.
Если для события есть, несколько получателей, то использовать первый из тех, что не совпадает со штатным
PackageManager packageManager = requireActivity().getPackageManager();
Intent intent = new Intent(Settings.ACTION_PRINT_SETTINGS);

 List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(intent,
                    PackageManager.GET_RESOLVED_FILTER);

            try {
                if (resolveInfos.size() > 1) {
                    for (ResolveInfo resolveInfo : resolveInfos) {
                        if (resolveInfo.activityInfo != null) {
                            String packageName = resolveInfo.activityInfo.applicationInfo.packageName;
                            if (!"com.android.settings".equals(packageName)) {
                                intent.setPackage(packageName);
                                break;
                            }
                        }
                    }
                }
            } catch (Exception ignored) {
            }

            try {
                startActivity(intent);
            } catch (Exception e) {
                Toast.makeText(requireActivity(), R.string.Oopppsss, Toast.LENGTH_SHORT).show();
            }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы