2013-09-24 88 views
0

我正在开发一个带有webview的应用程序。我有一个fileupload元素,我的应用程序通过在“openfilechooser”方法中显示AlertDialog来选择“camera”或“gallery”。 下面是我在做什么:在文件上传元素
- 一个AlertDialog弹出来读我的选择“相机”或“画廊”
的-I改变了主意,放弃选择上

-I自来水文件并单击“Android后退按钮”

Android“后退按钮”导致javascript停止

当我单击后退按钮时,所有javascript停止并且我的页面停止响应。

是否有JavaScript停止的原因? 在此先感谢

回答

0

我尝试了多种技巧,终于找到了解决办法。

所有这些方法调用后,FileUpload元素都需要一个“ValueCallback”。所以“onActivityResult”必须返回一个结果给fileupload元素。但是,当用户取消警告对话框时,不能调用“onActivityResult”方法。这会导致fileupload元素产生错误。

我补充说:“setOnCancelListener”我警告对话框是这样的:

.setOnCancelListener(new DialogInterface.OnCancelListener() { 

    @Override 
    public void onCancel(DialogInterface dialog) { 
    mUploadMessage.onReceiveValue(null); 
    mUploadMessage = null; 
    } 
}) 

你必须为了保持操作至少返回“空”的文件上传元素。否则fileupload停滞,这会导致所有的javascript停滞。

我也逮住,使得文件上传失速另一种情况:
- 在文件上传元素
在用户水龙头 - 选择一个选项(凸轮或Galller无所谓)
- 凸轮或画廊出现并且用户按下“返回”按钮

这会返回一个RESULT_CANCELED代码为“onActivityResult”的方法,你必须处理这样的:

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

     if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK 
       && intent != null) 
      mUploadMessage.onReceiveValue(intent.getData()); 
     else 
      mUploadMessage.onReceiveValue(null); 
    } catch (Exception e) { 
     Log.e("Error", e.getLocalizedMessage()); 
     mUploadMessage.onReceiveValue(null); 
    } finally { 
     mUploadMessage = null; 
    } 
} 

mUploadMessage是DEF像这样的:

private ValueCallback<Uri> mUploadMessage; 
0

如果要在Web视图上使用后退按钮,则必须在意图进行Web视图前声明。您必须实现方法onBackPrasses或onKeyPressed并获取KEY值。你可以找到答案这个链接Enable back button in WebView

上还为启用JavaScript

WebView myWebView = (WebView) findViewById(R.id.webview); 
WebSettings webSettings = myWebView.getSettings(); 
webSettings.setJavaScriptEnabled(true);