Chandra
Chandra

Reputation: 309

How can I return back to my Activity from GPS settings window

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

Answers (3)

Nixon
Nixon

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

Mahen
Mahen

Reputation: 780

android:noHistory="true"

removing above from menifest file works for me but data is null inside onActivityResult

Upvotes: 1

dhaag23
dhaag23

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

Related Questions