2

我用 Phonegap 创建了一个 Android 应用程序。

在我的 JavaScript 代码中,我这样做:

window.location.href = "http://m.facebook.com/dialog/" + params;

..因为我想重定向到 Facebook。到目前为止效果很好,但是当我按下 Android 设备的后退按钮时,应用程序会显示一个带有错误消息的弹出窗口:

Application Error
A network error occured. (file:///android_asset//www/index.html#article?id=61142746)

所以我检查了日志,这就是我去 Facebook 页面时打印的内容:

11-30 16:50:25.480: I/PRIME(12998): <CallBackProxy> Send to WebViewClient.
11-30 16:50:25.480: D/CordovaWebView(12998): >>> loadUrl(http://m.facebook.com/dialog/feed?app_id=408479945865356&link=http://nachrichten.mydomain.de/obama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille/id_61142746/index&picture=http://mcp.mydomain.de/images/id_61143440/af_amp/bilder/uno-botschafterin-und-obama-vertraute-susan-rice-unter-beschuss.jpg&name=Skandalkandidatin%20bringt%20Obama%20in%20die%20Bredouille%0A&caption=mydomain.de%20Nachrichten&description=Skandalkandidatin%20bringt%20Obama%20in%20die%20Bredouille%0A...&redirect_uri=http://nachrichten.mydomain.de/obama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille/id_61142746/index)
11-30 16:50:25.490: D/CordovaWebView(12998): >>> loadUrlNow()
11-30 16:50:25.620: W/webcore(12998): [webViewCore::webkitDraw] defer message ====
11-30 16:50:25.640: W/System.err(12998): java.net.SocketException: Socket closed
11-30 16:50:25.640: W/System.err(12998):    at libcore.io.Posix.accept(Native Method)
11-30 16:50:25.640: W/System.err(12998):    at libcore.io.BlockGuardOs.accept(BlockGuardOs.java:55)
11-30 16:50:25.640: W/System.err(12998):    at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:98)
11-30 16:50:25.640: W/System.err(12998):    at java.net.ServerSocket.implAccept(ServerSocket.java:202)
11-30 16:50:25.640: W/System.err(12998):    at java.net.ServerSocket.accept(ServerSocket.java:127)
11-30 16:50:25.640: W/System.err(12998):    at org.apache.cordova.CallbackServer.run(CallbackServer.java:195)
11-30 16:50:25.640: W/System.err(12998):    at java.lang.Thread.run(Thread.java:864)
11-30 16:50:25.650: D/DroidGap(12998): onMessage(onPageStarted,http://m.facebook.com/dialog/feed?app_id=408479945865356&link=http://nachrichten.mydomain.de/obama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille/id_61142746/index&picture=http://mcp.mydomain.de/images/id_61143440/af_amp/bilder/uno-botschafterin-und-obama-vertraute-susan-rice-unter-beschuss.jpg&name=Skandalkandidatin%20bringt%20Obama%20in%20die%20Bredouille%0A&caption=mydomain.de%20Nachrichten&description=Skandalkandidatin%20bringt%20Obama%20in%20die%20Bredouille%0A...&redirect_uri=http://nachrichten.mydomain.de/obama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille/id_61142746/index)
11-30 16:50:25.830: I/PRIME(12998): <CallBackProxy> Send to WebViewClient.
11-30 16:50:25.830: D/CordovaWebView(12998): >>> loadUrl(http://m.facebook.com/login.php?app_id=408479945865356&skip_api_login=1&cancel=http%3A%2F%2Fnachrichten.mydomain.de%2Fobama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille%2Fid_61142746%2Findex&next=http%3A%2F%2Fm.facebook.com%2Fdialog%2Ffeed%3F_path%3Dfeed%26app_id%3D408479945865356%26redirect_uri%3Dhttp%253A%252F%252Fnachrichten.mydomain.de%252Fobama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille%252Fid_61142746%252Findex%26display%3Dtouch%26link%3Dhttp%253A%252F%252Fnachrichten.mydomain.de%252Fobama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille%252Fid_61142746%252Findex%26picture%3Dhttp%253A%252F%252Fmcp.mydomain.de%252Fimages%252Fid_61143440%252Faf_amp%252Fbilder%252Funo-botschafterin-und-obama-vertraute-susan-rice-unter-beschuss.jpg%26name%3DSkandalkandidatin%2Bbringt%2BObama%2Bin%2Bdie%2BBredouille%250A%26caption%3Dmydomain.de%2BNachrichten%26description%3DSkandalkandidatin%2Bbringt%2BObama%2Bin%2Bdie%2BBredouille%250A...%26from_login%3D1%26client_id%3D408479945865356&rcount=1&_rdr)
11-30 16:50:25.830: D/CordovaWebView(12998): >>> loadUrlNow()
11-30 16:50:25.830: D/skia(12998): notifyPluginsOnFrameLoad not postponed
11-30 16:50:25.830: D/Cordova(12998): onPageFinished(http://m.facebook.com/login.php?app_id=408479945865356&skip_api_login=1&cancel=http%3A%2F%2Fnachrichten.mydomain.de%2Fobama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille%2Fid_61142746%2Findex&next=http%3A%2F%2Fm.facebook.com%2Fdialog%2Ffeed%3F_path%3Dfeed%26app_id%3D408479945865356%26redirect_uri%3Dhttp%253A%252F%252Fnachrichten.mydomain.de%252Fobama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille%252Fid_61142746%252Findex%26display%3Dtouch%26link%3Dhttp%253A%252F%252Fnachrichten.mydomain.de%252Fobama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille%252Fid_61142746%252Findex%26picture%3Dhttp%253A%252F%252Fmcp.mydomain.de%252Fimages%252Fid_61143440%252Faf_amp%252Fbilder%252Funo-botschafterin-und-obama-vertraute-susan-rice-unter-beschuss.jpg%26name%3DSkandalkandidatin%2Bbringt%2BObama%2Bin%2Bdie%2BBredouille%250A%26caption%3Dmydomain.de%2BNachrichten%26description%3DSkandalkandidatin%2Bbringt%2BObama%2Bin%2Bdie%2BBredouille%250A...%26from_login%3D1%26client_id%3D408479945865356&rcount=1&_rdr)
11-30 16:50:25.830: D/CordovaWebView(12998): >>> loadUrlNow()
11-30 16:50:25.830: D/DroidGap(12998): onMessage(onNativeReady,null)
11-30 16:50:25.830: D/DroidGap(12998): onMessage(onPageFinished,http://m.facebook.com/login.php?app_id=408479945865356&skip_api_login=1&cancel=http%3A%2F%2Fnachrichten.mydomain.de%2Fobama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille%2Fid_61142746%2Findex&next=http%3A%2F%2Fm.facebook.com%2Fdialog%2Ffeed%3F_path%3Dfeed%26app_id%3D408479945865356%26redirect_uri%3Dhttp%253A%252F%252Fnachrichten.mydomain.de%252Fobama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille%252Fid_61142746%252Findex%26display%3Dtouch%26link%3Dhttp%253A%252F%252Fnachrichten.mydomain.de%252Fobama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille%252Fid_61142746%252Findex%26picture%3Dhttp%253A%252F%252Fmcp.mydomain.de%252Fimages%252Fid_61143440%252Faf_amp%252Fbilder%252Funo-botschafterin-und-obama-vertraute-susan-rice-unter-beschuss.jpg%26name%3DSkandalkandidatin%2Bbringt%2BObama%2Bin%2Bdie%2BBredouille%250A%26caption%3Dmydomain.de%2BNachrichten%26description%3DSkandalkandidatin%2Bbringt%2BObama%2Bin%2Bdie%2BBredouille%250A...%26from_login%3D1%26client_id%3D408479945865356&rcount=1&_rdr)
11-30 16:50:25.840: D/DroidGap(12998): onMessage(onPageStarted,http://m.facebook.com/login.php?app_id=408479945865356&skip_api_login=1&cancel=http%3A%2F%2Fnachrichten.mydomain.de%2Fobama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille%2Fid_61142746%2Findex&next=http%3A%2F%2Fm.facebook.com%2Fdialog%2Ffeed%3F_path%3Dfeed%26app_id%3D408479945865356%26redirect_uri%3Dhttp%253A%252F%252Fnachrichten.mydomain.de%252Fobama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille%252Fid_61142746%252Findex%26display%3Dtouch%26link%3Dhttp%253A%252F%252Fnachrichten.mydomain.de%252Fobama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille%252Fid_61142746%252Findex%26picture%3Dhttp%253A%252F%252Fmcp.mydomain.de%252Fimages%252Fid_61143440%252Faf_amp%252Fbilder%252Funo-botschafterin-und-obama-vertraute-susan-rice-unter-beschuss.jpg%26name%3DSkandalkandidatin%2Bbringt%2BObama%2Bin%2Bdie%2BBredouille%250A%26caption%3Dmydomain.de%2BNachrichten%26description%3DSkandalkandidatin%2Bbringt%2BObama%2Bin%2Bdie%2BBredouille%250A...%26from_login%3D1%26client_id%3D408479945865356&rcount=1&_rdr)
11-30 16:50:26.670: D/skia(12998): notifyPluginsOnFrameLoad not postponed
11-30 16:50:26.680: D/Cordova(12998): onPageFinished(http://m.facebook.com/login.php?app_id=408479945865356&skip_api_login=1&cancel=http%3A%2F%2Fnachrichten.mydomain.de%2Fobama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille%2Fid_61142746%2Findex&next=http%3A%2F%2Fm.facebook.com%2Fdialog%2Ffeed%3F_path%3Dfeed%26app_id%3D408479945865356%26redirect_uri%3Dhttp%253A%252F%252Fnachrichten.mydomain.de%252Fobama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille%252Fid_61142746%252Findex%26display%3Dtouch%26link%3Dhttp%253A%252F%252Fnachrichten.mydomain.de%252Fobama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille%252Fid_61142746%252Findex%26picture%3Dhttp%253A%252F%252Fmcp.mydomain.de%252Fimages%252Fid_61143440%252Faf_amp%252Fbilder%252Funo-botschafterin-und-obama-vertraute-susan-rice-unter-beschuss.jpg%26name%3DSkandalkandidatin%2Bbringt%2BObama%2Bin%2Bdie%2BBredouille%250A%26caption%3Dmydomain.de%2BNachrichten%26description%3DSkandalkandidatin%2Bbringt%2BObama%2Bin%2Bdie%2BBredouille%250A...%26from_login%3D1%26client_id%3D408479945865356&rcount=1&_rdr)
11-30 16:50:26.680: D/CordovaWebView(12998): >>> loadUrlNow()
11-30 16:50:26.680: D/DroidGap(12998): onMessage(onNativeReady,null)
11-30 16:50:26.680: D/DroidGap(12998): onMessage(onPageFinished,http://m.facebook.com/login.php?app_id=408479945865356&skip_api_login=1&cancel=http%3A%2F%2Fnachrichten.mydomain.de%2Fobama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille%2Fid_61142746%2Findex&next=http%3A%2F%2Fm.facebook.com%2Fdialog%2Ffeed%3F_path%3Dfeed%26app_id%3D408479945865356%26redirect_uri%3Dhttp%253A%252F%252Fnachrichten.mydomain.de%252Fobama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille%252Fid_61142746%252Findex%26display%3Dtouch%26link%3Dhttp%253A%252F%252Fnachrichten.mydomain.de%252Fobama-geraet-wegen-seiner-personalpolitik-weiter-in-bredouille%252Fid_61142746%252Findex%26picture%3Dhttp%253A%252F%252Fmcp.mydomain.de%252Fimages%252Fid_61143440%252Faf_amp%252Fbilder%252Funo-botschafterin-und-obama-vertraute-susan-rice-unter-beschuss.jpg%26name%3DSkandalkandidatin%2Bbringt%2BObama%2Bin%2Bdie%2BBredouille%250A%26caption%3Dmydomain.de%2BNachrichten%26description%3DSkandalkandidatin%2Bbringt%2BObama%2Bin%2Bdie%2BBredouille%250A...%26from_login%3D1%26client_id%3D408479945865356&rcount=1&_rdr)
11-30 16:50:26.840: D/SQLiteDatabase(12998): Create pool connection
11-30 16:50:26.840: D/SqliteDatabaseCpp(12998): DB info: open db, path = /data/data/de.mydomain2.my_place_de/databases , key = sefraes, flag = 1, file size = 12288
11-30 16:50:26.840: D/SqliteDatabaseCpp(12998): DB info: path = /data/data/de.mydomain2.my_place_de/databases , key = sefraes, handle: 0xb14f98, type: r, r/w: (1,1), mode: wal, disk free size: 1753 M
11-30 16:50:26.890: I/SqliteDatabaseCpp(12998): sqlite returned: error code = 1, msg = no such table: __version__

这就是我按下后退按钮时日志所说的内容:

11-30 16:50:52.210: D/CordovaWebView(12998): >>> loadUrl(file:///android_asset/www/index.html#article?id=61142746)
11-30 16:50:52.210: D/CordovaWebView(12998): >>> loadUrlNow()
11-30 16:50:52.220: D/chromium(12998): Unknown chromium error: -6
11-30 16:50:52.220: D/DroidGap(12998): onMessage(onPageStarted,file:///android_asset/www/index.html#article?id=61142746)
11-30 16:50:52.230: D/Cordova(12998): CordovaWebViewClient.onReceivedError: Error code=-1 Description=Es ist ein Netzwerkfehler aufgetreten. URL=file:///android_asset/www/index.html#article?id=61142746
11-30 16:50:52.230: D/DroidGap(12998): onMessage(onReceivedError,{"errorCode":-1,"url":"file:\/\/\/android_asset\/www\/index.html#article?id=61142746","description":"Es ist ein Netzwerkfehler aufgetreten."})
11-30 16:50:52.320: D/skia(12998): notifyPluginsOnFrameLoad not postponed
11-30 16:50:52.350: W/System.err(12998): java.net.SocketException: Socket closed
11-30 16:50:52.350: W/System.err(12998):    at libcore.io.Posix.accept(Native Method)
11-30 16:50:52.350: W/System.err(12998):    at libcore.io.BlockGuardOs.accept(BlockGuardOs.java:55)
11-30 16:50:52.350: W/System.err(12998):    at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:98)
11-30 16:50:52.350: W/System.err(12998):    at java.net.ServerSocket.implAccept(ServerSocket.java:202)
11-30 16:50:52.350: W/System.err(12998):    at java.net.ServerSocket.accept(ServerSocket.java:127)
11-30 16:50:52.360: W/System.err(12998):    at org.apache.cordova.CallbackServer.run(CallbackServer.java:195)
11-30 16:50:52.360: W/System.err(12998):    at java.lang.Thread.run(Thread.java:864)
11-30 16:50:52.360: D/DroidGap(12998): onMessage(onPageStarted,file:///android_asset/www/index.html#article?id=61142746)
11-30 16:50:52.360: D/Cordova(12998): onPageFinished(file:///android_asset/www/index.html#article?id=61142746)
11-30 16:50:52.360: D/CordovaWebView(12998): >>> loadUrlNow()
11-30 16:50:52.370: D/DroidGap(12998): onMessage(onNativeReady,null)
11-30 16:50:52.370: D/DroidGap(12998): onMessage(onPageFinished,file:///android_asset/www/index.html#article?id=61142746)
11-30 16:50:52.370: D/SoftKeyboardDetect(12998): Ignore this event
11-30 16:50:52.390: D/Cordova(12998): onPageFinished(file:///android_asset/www/index.html#article?id=61142746)
11-30 16:50:52.390: D/CordovaWebView(12998): >>> loadUrlNow()
11-30 16:50:52.390: D/DroidGap(12998): onMessage(onNativeReady,null)
11-30 16:50:52.390: D/DroidGap(12998): onMessage(onPageFinished,file:///android_asset/www/index.html#article?id=61142746)

这是怎么回事?


注意:这只发生在这些设备上。

  • 宏达一
  • 三星 Galaxy Note

它不会发生在:

  • HTC 感觉
  • 三星盖乐世 S2
  • 三星Galaxy S3
4

1 回答 1

2

后退按钮关闭应用程序,这意味着 CallbackServer 已关闭中​​断套接字,这就是触发异常的原因。但是,您只会在某些手机上看到这一点,因为并非所有 JavaScript/本机通信都通过 CallbackServer 进行。我们根据手机的功能选择可用的最佳方法。

此外,如果您升级到 PhoneGap 2.2.0,您将永远不会再看到该异常,因为我们已经停用了 CallbackServer。

于 2012-12-01T03:13:11.797 回答