2012-09-18 35 views
2
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    super.loadUrl("file:///android_asset/www/index.html"); 

    final String invokeString = getIntent().getDataString(); 
    if(invokeString != "" && invokeString != null) { 
     this.sendJavascript("handleOpenURL('" + invokeString + "');"); 
     System.out.println(invokeString); 
    } 
} 

我在此網站上發現了此代碼:http://blog.cttapp.com/p/phonegap-handleopenurl-for-android/PhoneGap handleOpenUrl和Android

它不會執行handleOpenURL,我知道這一點,因爲它會重定向頁面。

回答

6

我有同樣的問題。似乎webview還沒有準備好。

這裏是我得到了工作:覆蓋onMessage功能,因爲它似乎是準備好,然後聽你:

@Override 
public Object onMessage(String id, Object obj) { 

    if (id.equals("onPageStarted")) { 

     final Intent intent = getIntent(); 
     if(intent.getDataString()!= "" && intent.getDataString()!= null){ 
      String url = intent.getDataString(); 
      this.sendJavascript("handleOpenURL('" + url + "');"); 
     } 

    } 
    return super.onMessage(id, obj); 
} 

我發現這個解決方案here

+1

在我將id條件更改爲「onPageFinished」之後唯一有效的方法,這會在稍後觸發。你也應該把這個url變量定義在條件之外,所以你不必調用intent.getDataString()3次。 – jackocnr

0

我遇到同樣的問題,並希望分享惡化(據我可以告訴)的人解決誰可能不希望建立自己科爾多瓦...前行

this.sendJavascript("handleOpenURL('" + url + "');"); 

添加此

try{ 
    Thread.sleep(5000); 
    } catch (Exception e) { 
    // nothing 
    } 

我知道這是不是最佳的,但我真的沒有時間延長科爾多瓦本身...

另外:由於以上(更好)答案中的鏈接缺少一些信息(解決方案線程中的某些論壇消息已被刪除),here's其onMessage必須重寫的文件。 ..祝你好運!