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

时间:2014-04-02 11:57:58

标签: android android-intent start-activity onactivityresult

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

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

但问题是使用requestCode = onActivityResult

立即调用REQUEST_ENABLE_CONNECTION

我还尝试为意图添加标记FLAG_NEW_TASK而没有运气。

singleTop中的活动 singleInstancemanifest

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

非常感谢你的帮助。

5 个答案:

答案 0 :(得分:6)

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

在您的活动中,添加

private boolean isReturnedFromSettings = false;

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

在您的活动的onResume中,添加以下内容:

if (isReturnedFromSettings) {
isReturnedFromSettings = false;

//DO WHATEVER
}

应该工作......

答案 1 :(得分:5)

  

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

没有问题。未记录设置应用的活动以支持startActivityForResult(),主要活动(Settings.ACTION_SETTINGS)根本不提供此活动。

答案 2 :(得分:0)

我找到了一个解决方法:在我的意图中

mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {...});

这里有诀窍:

activity.startActivityForResult(intent,REQUEST_SYSTEM_WRITE_PERMISSION);
testDelaydRingtoneSetting(mUri, mCallback);

答案 3 :(得分:0)

将此添加到您的意图:

 intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

答案 4 :(得分:-1)

请试试这个。 Intent settingsIntent = new Intent(Settings.ACTION_SETTINGS); startActivity(settingsIntent);