Reputation: 309
I am having a problem in my Activity, which can take the control to the android mobile GPS settings to have user to switch on/off the GPS, But I am unable to retrun back to my activity. when I press back button, It is directly going to Home of the mobile, not coming back my Activity from where I send signal to settings. can anyone tell me the solution for this.
if(!lm.isProviderEnabled(LocationManager.GPS_PROVIDER )) {
startActivityForResult(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS), 1);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.e("","OnActivity Result...");
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == GPS_LOC) {
switch (requestCode) {
case GPS_LOC:
//super.onCreate(inst);
super.onResume();
//super.finish();
break;
}
}
}
Upvotes: 14
Views: 29774
Reputation: 36
On back press from the settings location activity, On Resume is called from the activity that called
startActivityForResult(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS), 1);
Therefore from there you can check if location has been enabled by
`if(lm.isProviderEnabled(LocationManager.GPS_PROVIDER )) {//add your logic here }`
Upvotes: 0
Reputation: 780
android:noHistory="true"
removing above from menifest file works for me but data is null inside onActivityResult
Upvotes: 1
Reputation: 6126
Works for me. Are you sure you have ACCESS_FINE_LOCATION permission set in your manifest? Are you sure startActivityForResult() is being called?
Also, what is GPS_LOC?
Here's my code that works:
public class main extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.button1).setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS), 1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == 1) {
switch (requestCode) {
case 1:
break;
}
}
}
}
Upvotes: 21