onActivityResult for Intent(Settings.ACTION_SETTINGS)立即调用

Udi*_*shi 3 android android-intent start-activity onactivityresult

在我的启动画面中,我向服务器请求,但是当没有互联网连接时,我正在打开

Intent settingsIntent = new Intent(Settings.ACTION_SETTINGS);
startActivityForResult(settingsIntent, REQUEST_ENABLE_CONNECTION);
Run Code Online (Sandbox Code Playgroud)

但问题是onActivityResult使用requestCode =立即调用REQUEST_ENABLE_CONNECTION

我也试图为FLAG_NEW_TASK没有运气的意图添加标志.

活动不是 singleTopsingleInstancemanifest.

什么是解决此问题的最佳Android解决方案?我不想使用广播,因为它不是我流量的最佳方式,所以它将作为我的最后选择.

非常感谢您的帮助.

Lio*_*luz 6

如果onActivityForResult你的工作效果不好(正如@CommonsWare建议的那样,那很好)你可以创建一个应该正常工作的简单流程:

在您的活动中,添加

private boolean isReturnedFromSettings = false;
Run Code Online (Sandbox Code Playgroud)

当您确定没有互联网连接并想要打开设置活动时,请使用startActivity并设置isReturnedFromSettings = true;

在Activity的onResume中,添加以下内容:

if (isReturnedFromSettings) {
isReturnedFromSettings = false;

//DO WHATEVER
}
Run Code Online (Sandbox Code Playgroud)

应该管用...

  • 该标志需要在“onSaveInstanceState”和“onRestoreInstanceState”中维护,因为如果系统在“设置”屏幕打开时杀死您的“Activity”,您可能会丢失它。 (3认同)

Com*_*are 5

什么是解决此问题的最佳Android解决方案?

没有问题.设备应用程序的活动未记录为支持startActivityForResult(),主要活动(Settings.ACTION_SETTINGS)根本不提供.