先生们,我在 Android Ice Cream Sandwich (4.0.3) 中使用 Phonegap (Apache Cordova) 和 IFrame 时遇到了同样的问题。
为了解决这个问题,我不得不编辑 Apache Cordova Source Code。我更改了 org.apache.cordova。CordovaWebViewClient.java文件,并注释了这部分代码,并包含了最后一行(return false;)。
所以它现在看起来像这样:
// All else
// else {
//
// // If our app or file:, then load into a new Cordova webview container by starting a new instance of our activity.
// // Our app continues to run. When BACK is pressed, our app is redisplayed.
// if (url.startsWith("file://") || url.indexOf(this.ctx.baseUrl) == 0 || ctx.isUrlWhiteListed(url)) {
// this.ctx.loadUrl(url);
// }
//
// // If not our application, let default viewer handle
// else {
// try {
// Intent intent = new Intent(Intent.ACTION_VIEW);
// intent.setData(Uri.parse(url));
// ctx.startActivity(intent);
// } catch (android.content.ActivityNotFoundException e) {
// LOG.e(TAG, "Error loading url "+url, e);
// }
// }
// }
// return true;
return false;
此问题仅发生在 Android ICS 上,但我更改了所有应用程序的代码。我还在做测试。
在我的分析中,似乎当您尝试在 iFrame 中加载页面时,ICS 上的 Android WebView 将其解释为新页面请求,并替换了主应用程序!,或者换句话说,它在孔父窗口中打开请求的页面。
我没有修改其余的代码。
我希望它有所帮助,就像它对我一样。
最好的祝福。
亚历山大·阿尔梅达