当前位置: 首页 > 知识库问答 >
问题:

如何通过Android Webview app上传文件?

常坚
2023-03-14

可能的重复:

这个

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = findViewById(R.id.webviewid);
        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl("https://www.google.com/");

        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        webView.getSettings().setDomStorageEnabled(true);

    }
}

共有1个答案

隆康平
2023-03-14

试试这个

     package com.example.filechooser;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.net.http.SslError;
import android.os.Bundle;
import android.webkit.SslErrorHandler;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class MainActivity extends Activity {

    private final static int FILECHOOSER_RESULTCODE = 1;
    private ValueCallback<Uri[]> mUploadMessage;

    WebView mainWebView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        mainWebView = findViewById(R.id.main_web_view);

        mainWebView.setWebViewClient(new MyWebViewClient());

        mainWebView.setWebChromeClient(new MyWebChromeClient());

        mainWebView.getSettings().setJavaScriptEnabled(true);

        mainWebView.loadUrl("https://example.com");
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {

        if (requestCode == FILECHOOSER_RESULTCODE) {

            if (null == mUploadMessage || intent == null || resultCode != RESULT_OK) {
                return;
            }

            Uri[] result = null;
            String dataString = intent.getDataString();

            if (dataString != null) {
                result = new Uri[]{ Uri.parse(dataString) };
            }

            mUploadMessage.onReceiveValue(result);
            mUploadMessage = null;
        }
    }


    // ====================
    // Web clients classes
    // ====================

    /**
     * Clase para configurar el webview
     */
    private class MyWebViewClient extends WebViewClient {

        // permite la navegacion dentro del webview
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }


    /**
     * Clase para configurar el chrome client para que nos permita seleccionar archivos
     */
    private class MyWebChromeClient extends WebChromeClient {

        // maneja la accion de seleccionar archivos
        @Override
        public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {

            // asegurar que no existan callbacks
            if (mUploadMessage != null) {
                mUploadMessage.onReceiveValue(null);
            }

            mUploadMessage = filePathCallback;

            Intent i = new Intent(Intent.ACTION_GET_CONTENT);
            i.addCategory(Intent.CATEGORY_OPENABLE);
            i.setType("*/*"); // set MIME type to filter

            MainActivity.this.startActivityForResult(Intent.createChooser(i, "File Chooser"), MainActivity.FILECHOOSER_RESULTCODE );

            return true;
        }
    }

}
 类似资料:
  • 问题内容: 我正在考虑将WCF用于一个项目,该项目需要人们能够将大文件(64MB-1GB)上传到我的服务器。我将如何使用WCF处理此问题,可能还具有恢复上传的功能。 为了处理更大的客户群,我想通过WCF测试JSON。这将如何影响文件上传?可以通过JSON完成,还是需要将上传部分切换到REST? 问题答案: 如果要上传大文件,则肯定需要查看WCF流模式。 基本上,您可以更改绑定上的传输模式;默认情况

  • 问题内容: 无法将图片上传到。现在,如果选择的文件是,我希望能够将文件转换为并将转换后的文件上传到。我能够在转换到与仅如果我给了文件的路径。如何从中访问上载的文件?下面是我的代码: 我正在尝试像这样访问上载的文件: 因为在函数中传递了一个参数。 我的表格: 我在过程的哪一部分转换文件? 请帮忙。非常感谢。 问题答案: 您正在尝试在本地处理文件。该文件必须是您服务器的文件系统,或者至少要在上公开可用

  • 我目前通过AJAX发布我的表单,代码如下: 现在,我想添加以相同形式上传图片的功能,并在这个JQUERY和相同的服务器端脚本中实现它。我唯一的问题是,我不知道怎么做…我测试了上面的代码,发现它没有将$_files-变量传递给服务器端脚本。 谁能带领我在任何方向,我需要做的,以增加与此脚本图像上传的可能性?

  • 问题内容: 选择图像,doc或pdf后,我想将它们通过okhttp3。如何进行此操作? 并在okhttp 3中 显示的错误是 谢谢。 问题答案: 所以我自己回答这个问题。 因此,我首先将输出流打开到一个临时文件。 扩展名取决于mime类型。您可以通过以下方式找到mime类型 现在从文件读取并将其内容写入临时文件 现在写入文件 最后 成功之后的最后

  • 问题内容: 我使用2个文件index.js,upload.php尝试通过ajax上传文件(img),如果成功追加到div 。 但是它不起作用,有几个问题,下面我的代码有什么建议吗? 谢谢。 upload.php 1. 还需要添加吗? 2. 并检查$ _FILES的大小或tmp_name是否仍使用? index.js 3.这几行是对的吗? 4.我错过或错了什么吗? 问题答案: 在其构造函数中接受一个

  • 我的主要目标是使用Microsoft Graph API将。pptx/.docx/.pdf文件上传到Microsoft Sharepoint。我可以使用下面的“PUT”请求上传到简单的文本文件,其中的内容类型是多部分/表单数据 ---------------------------------404518839734975569926100内容-处理:表单-数据;name=“文件”;filenam