Udi Oshi Udi Oshi - 5 months ago 15
Android Question

onActivityResult for Intent(Settings.ACTION_SETTINGS) called immediately

In my splash screen I have request to server, but when there's no internet connection i'm opening

Intent settingsIntent = new Intent(Settings.ACTION_SETTINGS);
startActivityForResult(settingsIntent, REQUEST_ENABLE_CONNECTION);


But problem is that
onActivityResult
is called immediately with requestCode =
REQUEST_ENABLE_CONNECTION


I've also tried to add the flag
FLAG_NEW_TASK
for the intent with no luck.

The activity is not
singleTop
or
singleInstance
in the
manifest
.

What is the best android solution to resolve this issue? I don't want to use Broadcast as it's not the best way to my flow so it will be taken as last choice for me.

Thanks a lot for the help.

Answer

If the onActivityForResult isn't working well for you (as @CommonsWare suggested, it's fine) you can create a simple flow that should work fine:

In your activity, add

private boolean isReturnedFromSettings = false;

When you decide there's no internet connection and want to open the settings activity, use startActivity and set isReturnedFromSettings = true;

In your Activity's onResume, add this:

if (isReturnedFromSettings) {
isReturnedFromSettings = false;

//DO WHATEVER
}

Should work...