Reputation: 2935
I want to launch System's Location Settings from an Intent
. I know that programmatically it goes like this
Intent viewIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(viewIntent);
but I need to do it from the XML of a Preference
. I try like this
<Preference
android:title="@string/pref_title" >
<intent android:action="android.settings.ACTION_LOCATION_SOURCE_SETTINGS" />
</Preference>
but it does not work, I always get an ActivityNotFoundException
. How can I launch that System Location Settings from an XML Intent?
Upvotes: 19
Views: 19886
Reputation: 41099
You can create a: PreferenceActivity
that will represent you preferences and then you can assign an onClick
to your preference like this:
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;
}
});
And you will need to assign a key to your preference in the xml file:
<Preference
android:key="goToLocationSettings"
android:title="@string/pref_title" />
Upvotes: 41
Reputation: 11
Try this code:
<PreferenceScreen
android:key="key_location"
android:summary="location settings"
android:title="Open location settings">
<intent android:action="android.settings.ACTION_LOCATION_SOURCE_SETTINGS"/>
</PreferenceScreen>
Upvotes: 0