android如何在webview中设置选择输入type ='file'的图像

时间:2015-03-02 04:11:22

标签: android webview

我尝试在webview上打开文件或图像。 我的Android版本是4.4.2所以有些方法不再适用了。 我找到了链接:https://github.com/cdibened/filechooser但我不知道如何实现它,可能我需要完整的项目。

工作一天后,我打算检测按钮并使用意图打开文件。我的问题是在选择文件后,它没有附加到按钮类型='文件'

我的Android代码是

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    //Get webview 
    webView = (WebView) findViewById(R.id.webView1);

    // Define url that will open in webview 
    String webViewUrl = "http://leafy-sunrise-86906.appspot.com/";

 // Javascript inabled on webview  
    webView.getSettings().setJavaScriptEnabled(true);

    // Other webview options
    webView.getSettings().setLoadWithOverviewMode(true);

    //webView.getSettings().setUseWideViewPort(true);

    //Other webview settings
    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    webView.setScrollbarFadingEnabled(false);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setPluginState(PluginState.ON);
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setSupportZoom(true); 

    //Load url in webview
    webView.loadUrl(webViewUrl);

    WebSettings ws = webView.getSettings();
    ws.setJavaScriptEnabled(true);
    webView.addJavascriptInterface(new Object()
    {
        @JavascriptInterface 
      public void performClick()
      {
        // Deal with a click on the OK button
        Log.d("OpenFile", "Success");

        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE);

      }
    }, "openfile");
}

private static final int PICK_IMAGE = 1;

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == PICK_IMAGE && data != null && data.getData() != null) {
        Uri _uri = data.getData();

        //User had pick an image.
        Cursor cursor = getContentResolver().query(_uri, new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, null, null, null);
        cursor.moveToFirst();

        //Link to the image
        final String imageFilePath = cursor.getString(0);
        cursor.close();
    }
    super.onActivityResult(requestCode, resultCode, data);
}

}

和网站

<input type="file" id="fileinput" name="fileinput" onclick="openfile.performClick();"/>

选择文件后,如何将其附加到按钮。或者任何好主意。

非常感谢你。

1 个答案:

答案 0 :(得分:0)

您可以使用sendJavaScript。这将是这样的。在您的活动结果中添加以下代码:

cursor.close();
sendJavascript("getResult('"+imageFilePath+"')");

然后在你的网站上,只需添加javascript方法即可获得结果。

function getResult(path){
  document.getElementById("fileInput").value = path;
}

但是您应该知道,由于安全原因,输入类型文件无法动态添加值属性,因此您应该使用输入类型文本来保存图像路径。