2013-04-14 8 views
15

Chcę uruchomić Ustawienia lokalizacji systemu z poziomu Intent. Wiem, że programowo to idzie takLokalizacja uruchamiania Ustawienia zamiar z preferencji plik XML

Intent viewIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
startActivity(viewIntent); 

ale muszę to zrobić z XML z Preference. Próbuję tak, jak to, ale nie działa, ale nie zawsze działaJak mogę uruchomić te ustawienia lokalizacji systemu z zamiaru XML?

Odpowiedz

33

Można utworzyć: PreferenceActivity które będą reprezentować swoje preferencje, a następnie można przypisać onClick z preferencjami jak ten:

Preference goToLocationSettings = (Preference) findPreference("goToLocationSettings"); 
goToLocationSettings.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { 

     public boolean onPreferenceClick(Preference preference) { 
      Intent viewIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
      startActivity(viewIntent); 

      return true; 
     } 
    }); 

i trzeba będzie przypisać klawisz do własnych preferencji w pliku xml :

<Preference 
    android:key="goToLocationSettings" 
    android:title="@string/pref_title" /> 
+1

I apprecia twoja odpowiedź, ale czy to oznacza, że ​​nie ma możliwości wywołania tej akcji z XML? – Jago

+0

Nie jestem zaznajomiony ze sposobem i myślę, że go nie ma. –

+0

Otrzymuję 'AndroidRuntimeException':" Wywołanie 'StartActivity()' z poza działania ". Sądzę, że dzieje się tak z powodu kontekstu 'onPreferenceClick()' ... – Jago

0

Spróbuj kod:

<PreferenceScreen 
    android:key="key_location" 
    android:summary="location settings" 
    android:title="Open location settings"> 

    <intent android:action="android.settings.ACTION_LOCATION_SOURCE_SETTINGS"/> 

</PreferenceScreen>