2014-04-02 47 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);