2014-04-02 19 views
2

在我的启动画面我已经请求服务器,但(Settings.ACTION_SETTINGS)当没有互联网连接我准备开onActivityResult的意图称为立即

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

但问题是,onActivityResult与requestCode马上打电话= REQUEST_ENABLE_CONNECTION

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

活动是不是singleTopsingleInstancemanifest

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

非常感谢您的帮助。

+0

什么结果代码d你在onActivityResult? RESULT_CANCELLED还是其他? – andyandy

+0

RESULT_CANCELED,但它并不重要,因为onActivityResult被调用,并且当使用后退按钮返回到应用程序时,它不会再调用 –

回答

5

如果onActivityForResult不为你工作,以及(如@CommonsWare建议,它的罚款),你可以创建一个简单的流程应该很好地工作:

在你的活动中,添加

private boolean isReturnedFromSettings = false; 

当你决定有没有互联网连接,并希望打开设置活动,请使用startActivity并设置isReturnedFromSettings = true;

在你活动的的onResume,补充一点:

if (isReturnedFromSettings) { 
isReturnedFromSettings = false; 

//DO WHATEVER 
} 

应该工作...

-1

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

+0

我需要以适当的方式返回到我的活动以询问设备是否有连接,此对我来说根本不好。 –

+3

wt是什么意思? ...请解释你为什么不这样做。您可以在Activity的onResume方法中检查(设备已连接)。 – User10001

3

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

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

0

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

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

这里的伎俩:

private void testDelaydRingtoneSetting(Uri mUri, KrollFunction mCallback) { 
     final Uri ringtoneUri = mUri; 
     final KrollFunction callback = mCallback; 
     final Context context = TiApplication.getInstance().getApplicationContext(); 
     new android.os.Handler().postDelayed(new Runnable() { 
     public void run() { 
      if (Settings.System.canWrite(context)) { 
       Activity activity = TiApplication.getInstance() 
         .getCurrentActivity(); 
       activity.finishActivity(REQUEST_SYSTEM_WRITE_PERMISSION); 
       setRingtone(ringtoneUri, callback); 
      } else 
       testDelaydRingtoneSetting(ringtoneUri, callback); 
     } 
    }, 1000); 
} 
0

添加到您的意图:

intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);