2014-05-14 53 views
0

我創建了一個cordova插件(3.3.0),它啓動一個活動並等待結果。但是回調(簡單警報)在第二次插入該插件之前不會被調用。下面是代碼:第二次插件調用後收到Cordova插件回調

public boolean execute(String action, final JSONArray args, final CallbackContext cbc) throws JSONException 
{ 
    this.callbackContext = cbc; 

    try 
    { 
     Intent i = new Intent(cordova.getActivity(), ActivityCamera.class); 

     this.cordova.setActivityResultCallback(PhotoMokoPlugin.this); 
     this.cordova.startActivityForResult(PhotoMokoPlugin.this, i, 0); 

     PluginResult pr = new PluginResult(PluginResult.Status.NO_RESULT); 
     pr.setKeepCallback(true); 
     callbackContext.sendPluginResult(pr); 
     return true; 
    } 
    catch (JSONException e) 
    { 
     callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION)); 
     return false; 
    } 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent intent) 
{ 
    super.onActivityResult(requestCode, resultCode, intent); 

    try 
    { 
     callbackContext.success(json.toString()); // Doesn't matter if success or error 
    } 
    catch (JSONException e) 
    { 
     callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR)); 
    } 
} 

的ActivityCamera只setResult用新Intent AVEC finish();

例如:如果我點擊一個調用插件的按鈕,則什麼都不會發生。我再次單擊,顯示警報消息,僅此而已(通常是另一個警報)...

你有什麼想法嗎?

告訴我是否需要更多代碼。

編輯:更新科爾多瓦沒有解決問題。

編輯2:這個問題似乎來源於此代碼:

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    if (hasFocus) 
    { 
     getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
      | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
      | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_FULLSCREEN 
      | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 
    } 
} 

如果我刪除它,回調被稱爲第一次。有問題嗎?

+0

你是否發現瞭如何解決這個問題,並有能力在全屏模式下工作? –

+0

是的,沒有。我刪除了'onWindowFocusChanged',並添加了Immersify插件。它現在似乎正常工作,但它不是最好的問題! –

回答

1

我在這種情況下也遇到了麻煩。

在我的情況下,插件是從iframe內容中綁定點擊處理程序的標籤觸發的。 當我將標籤和單擊處理程序移到父文檔時,問題就解決了。

你可以試試這些嗎?

+0

更新:問題與標籤和手柄的位置無關。我使用iframe和cordova.js包含在parent和iframe中。那是一個可怕的錯誤。我從iframe中刪除了cordova.js,並且每件事情都很好。 –

+0

對我來說,這個問題似乎來自身臨其境的模式:/ –

0

我爲我解決了這個問題,希望它爲他人工作。 我使用的是require.js,當我在代碼中多次調用require(「cordova」)時出現問題,在刪除冗餘後需要問題消失。

0

對我來說,問題只是在HTML文檔中存在一個空的iframe標記。刪除iframe完全解決了問題。感謝장지윤將我指向正確的方向。