Как отобразить только определенный фрагмент настроек из встроенного приложения настроек Android

#android #android-intent #android-settings

#Android #android-намерение #android-настройки

Вопрос:

Я хочу показать только фрагмент настроек Wi-Fi из настроек. Я добился этого, используя следующий код:

         Intent i = new Intent(Settings.ACTION_SETTINGS);
        i.putExtra(":android:show_fragment", "com.android.settings.wifi.WifiSettings");
        i.putExtra(":android:no_headers", true);
        startActivity(i);
  

Теперь я хочу показывать только фрагмент даты и времени из настроек, поэтому я изменил свой код на:

         Intent i = new Intent(Settings.ACTION_SETTINGS);
        i.putExtra(":android:show_fragment","com.android.settings.ACTION_DATE_SETTINGS");
        i.putExtra(":android:no_headers", true); 
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(i);
  

к сожалению, это не работает.Как я могу отобразить только определенный фрагмент настроек из встроенного приложения настроек Android, как это

Ответ №1:

Я хочу показать только фрагмент настроек Wi-Fi из настроек. Я добился этого, используя следующий код:

Я бы рекомендовал вам использовать ACTION_WIFI_SETTINGS недокументированные дополнения и избавиться от них.

Теперь я хочу отображать только фрагмент даты и времени из настроек, поэтому я изменил свой код … к сожалению, он не работает.

Правильное решение — использовать ACTION_DATE_SETTINGS недокументированные дополнения и избавиться от них. Помимо этого, com.android.settings.ACTION_DATE_SETTINGS — это не название фрагмента.

Комментарии:

1. спасибо за ответ… вы правы, предложенное вами решение показывает другие параметры настроек, которые мне не нужны

2. @RahulMatte: Ваше решение предполагает конкретную реализацию приложения настроек. Производители устройств, скорее всего, внедрили поддержку этих специализированных действий. Они могут изменять имена классов фрагментов по своему усмотрению, и многие производители сделали это. Следовательно, ваше решение приведет к сбою или иным неправильным действиям на некоторых устройствах Android.

Ответ №2:

Очевидно, no_headers был незаметно удален с Android L и выше…итак, нам не повезло. Перепишите просто отдельные фрагменты com.android.settings и заблокируйте стандартные настройки через MDM — затем молитесь о подписи СИСТЕМЫ в вашем приложении.