Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to launch an Android SubSettings Fragment?

Tags:

android

For example, how do I launch User Settings? It's not implemented as its own Activity, so I'm not sure how to start it.

Below are some other similar questions but these are either more general or more specific. My question is about starting an arbitrary SubSettings fragment.

How do I call a specific PreferenceFragment from a PreferenceActivity?

Show only wireless system settings on Android 3

like image 259
Jo Jo Avatar asked Feb 18 '14 04:02

Jo Jo


2 Answers

for MM :

am start -n com.android.settings/com.android.settings.SubSettings -e :settings:show_fragment com.android.settings.applications.RunningServices
like image 173
sheraro Avatar answered Nov 15 '22 12:11

sheraro


You can launch most Android Settings sub-screens by starting the SubSettings Activity and including the :android:show_fragment extra with the appropriate fully-qualified class name of an existing Android PreferenceFragment subclass.

For example, to start UserSettings:

adb shell am start -n com.android.settings/com.android.settings.SubSettings -e :android:show_fragment com.android.settings.users.UserSettings

To start DeviceInfoSettings:

adb shell am start -n com.android.settings/com.android.settings.SubSettings -e :android:show_fragment com.android.settings.DeviceInfoSettings

These examples use 'adb shell am start', but in principle you could invoke these in Java code (EDIT: Unfortunately you need to be signed with the system key, otherwise you get a SecurityException). Notice that the key for this extra has a colon at the front of it. To find other Settings, checkout the Android source and look for subclasses of PreferenceFragment in the packages/apps/Settings.

The situation was different in Froyo and before. In those days Activities were used to implement Settings sub-screens, so one could launch directly into a sub-screen (for example SoundAndDisplaySettings) by the usual method of calling startActivity() with a ComponentName or action String. This mechanism still works for some Settings sub-screens. For example, to bring up a wifi picker, you can use

adb shell am start -a android.net.wifi.PICK_WIFI_NETWORK
like image 10
Jo Jo Avatar answered Nov 15 '22 12:11

Jo Jo