2013-04-14 17 views
15

Desidero avviare le Impostazioni di posizione del sistema da Intent. So che a livello di codice va come questoLancio delle impostazioni di posizione dalle preferenze XML file

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

ma ho bisogno di farlo dal XML di un Preference. Provo come questo

<Preference 
    android:title="@string/pref_title" > 
    <intent android:action="android.settings.ACTION_LOCATION_SOURCE_SETTINGS" /> 
</Preference> 

ma non funziona, ho sempre arrivare un ActivityNotFoundException. Come posso avviare le Impostazioni di percorso del sistema da un intent XML?

risposta

33

È possibile creare una: PreferenceActivity che ti rappresenterà preferenze e quindi è possibile assegnare un onClick alle proprie preferenze in questo modo:

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; 
     } 
    }); 

e sarà necessario assegnare una chiave per la vostra preferenza nel file xml :

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

I apprecia la tua risposta, ma vuol dire che non c'è modo di invocare quell'azione da XML allora? – Jago

+0

Non ho familiarità con un modo e penso che non ce ne sia uno. –

+0

Ricevo un 'AndroidRuntimeException':" Richiamo di 'StartActivity()' dall'esterno di un'attività ". Immagino che questo sia dovuto al contesto di 'onPreferenceClick()' ... – Jago

0

provare questo codice:

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

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

</PreferenceScreen> 
Problemi correlati