Android Studio Webview未调用照片库

Android Studio Webview未调用照片库,android,webview,Android,Webview,在我的Web应用程序中,我正在加载一个页面,其中有一个按钮可以调用相册/照片库,但它根本不工作。请帮忙,这是我目前的代码 webView = (WebView) findViewById(R.id.webview); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webView.setWebViewClient(new

在我的Web应用程序中,我正在加载一个页面,其中有一个按钮可以调用相册/照片库,但它根本不工作。请帮忙,这是我目前的代码

webView = (WebView) findViewById(R.id.webview);
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient());
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        webView.setScrollbarFadingEnabled(false);
        webView.getSettings().setBuiltInZoomControls(true);
        webView.getSettings().setPluginState(WebSettings.PluginState.ON);
        webView.getSettings().setAllowFileAccess(true);
        webView.getSettings().setSupportZoom(true);
        webView.addJavascriptInterface(new MyJavascriptInterface(this), "Android");
        webView.loadUrl("https://URL/");
并在现场创建

class MyJavascriptInterface
{

    Context mContext;

    /** Instantiate the interface and set the context */
    MyJavascriptInterface(Context c)
    {
        mContext = c;
    }

    /** Show a toast from the web page */
    @JavascriptInterface
    public void showToast(String toast)
    {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }

    @JavascriptInterface
    public String choosePhoto()
    {
        // TODO Auto-generated method stub
        String file = "test";
        Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
        photoPickerIntent.setType("image/*");
        startActivityForResult(photoPickerIntent, SELECT_PHOTO);
        return file;
    }

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{
    switch (requestCode)
    {
        case SELECT_PHOTO:
            if (resultCode == RESULT_OK)
            {
                Uri selectedImage = intent.getData();
                webView.loadUrl("javascript:setFileUri('" + selectedImage.toString() + "')");
                String path = getRealPathFromURI(this, selectedImage);
                webView.loadUrl("javascript:setFilePath('" + path + "')");
            }
    }

}

public String getRealPathFromURI(Context context, Uri contentUri)
{
    Cursor cursor = null;
    try
    {
        String[] proj = { MediaStore.Images.Media.DATA };
        cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }
    finally
    {
        if (cursor != null)
        {
            cursor.close();
        }
    }
}
和内部清单文件

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" />


我需要访问照片/照相机,以使用简单的网络视图从图库中选择图像。请原谅我的英语和代码,因为我还是一名学习者,对android开发还不熟悉。

我认为你最好在WebChromeClient$onShowFileChooser中完成这项工作

在代码中,应该在主线程中执行此操作。尝试在choosePhoto方法中添加runOnUIThread

在此处添加演示(棒棒糖下面的Build.VERSION\u代码使用不同的方法):

您可以使用此选项添加onActivityResult案例

和html格式:

<input type="file" accept="image/*" capture="camera">


您可以使用great,让我试试这个。您能给我一些代码示例吗。抱歉,我是android开发新手。
public interface ActivityResultCaseDelegate {
int caseRequestCode();
void onActivityResult(int requestCode, int resultCode, Intent data);
}
<input type="file" accept="image/*" capture="camera">