WebView 上传 HTML 不起作用[重复]

2024-04-19

可能的重复:
WebView中的文件上传 https://stackoverflow.com/questions/5907369/file-upload-in-webview

我希望这个问题有一个简单的答案。我的应用程序中运行了以下 Android 代码:

package com.example.myfirstapp;

import android.webkit.WebViewClient;
import android.webkit.WebView;
import android.util.Log;

public class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            Log.d ("myfirstapp_tag", "shouldOver... loaded Url " + url  );
            return true;
    }
}

...但是当这个 HTML 被加载时...

<tr><td>
    <form method="post" action="/myphp.php" enctype="multipart/form-data">
            <label for="upload">Add Pic:</label><input type="file" name="file" id="file" />
            <input type="hidden" name="action" value="upload" />
            <input type="submit" name="submit" value="Upload" />
    </form>
</td></tr>

...该表单显示有“选择文件”按钮,但是当我单击它时没有任何反应。 我在这里做错了什么?

Thanks


我在 stackoverflow 上找到了答案,但丢失了链接,所以这就是我必须做的......

在我的 MainActivity 类中,我这样做......

...
import android.webkit.ValueCallback;
import android.net.Uri;

public class MainActivity extends Activity {
...
private ValueCallback<Uri> mUploadMessage;
private final static int FILECHOOSER_RESULTCODE=1; 


@Override  
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {  
    if(requestCode==FILECHOOSER_RESULTCODE)  {  
        if (null == mUploadMessage) return;  
        Uri result = intent == null || resultCode != RESULT_OK ? null  : intent.getData();  
        mUploadMessage.onReceiveValue(result);  
        mUploadMessage = null;
    }  
}  

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    WebView webView = (WebView) findViewById(R.id.webview);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setWebViewClient(new MyWebViewClient());

    webView.setWebChromeClient(
        new WebChromeClient() {   
            @SuppressWarnings("unused")
            public void openFileChooser(ValueCallback<Uri> uploadMsg) {  
                mUploadMessage = uploadMsg;  
Log.d ("myfirstapp_tag", "1) MainActivity.java loaded openFileChooser" );
                Intent i = new Intent(Intent.ACTION_GET_CONTENT);  
Log.d ("myfirstapp_tag", "2) MainActivity.java loaded openFileChooser" );                   
                i.addCategory(Intent.CATEGORY_OPENABLE);  
Log.d ("myfirstapp_tag", "3) MainActivity.java loaded openFileChooser" );
                i.setType("image/*");  
Log.d ("myfirstapp_tag", "4) MainActivity.java loaded openFileChooser" );
MainActivity.this.startActivityForResult(Intent.createChooser(i,"File Chooser"), FILECHOOSER_RESULTCODE);
Log.d ("myfirstapp_tag", "5) MainActivity.java loaded openFileChooser" );                     
            }  
        }
    );  



    webView.loadUrl("http://example.com/EZC.php");
    setContentView(webView);
    Log.d ("myfirstapp_tag", "MainActivity.java loaded URL and set Content View." ); 
}   
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebView 上传 HTML 不起作用[重复] 的相关文章

  • RecyclerView 未显示列表中的所有项目

    我在用RecyclerView在我的应用程序中 每次我打开屏幕时 我只能看到一项 但当我调试时 它每次都会出现onBindViewHolder method 这是我的适配器 Override public ViewHolder onCrea
  • Android STFP 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在我的 Android 项目中使用 SFTP 安卓已经有了吗 SFTP 库 还是我必须实现它 I
  • IntentService、Service 或 AsyncTask

    实现这一点的最佳方法是什么 我有一个 Android 应用程序 它将使用我的 python 服务器来允许两部手机之间进行轮流通信 回合意味着他们在一轮开始之前不能互相交谈 一旦他们发送一条消息 他们就不能发送另一条消息 直到对方做出回应 然
  • Android浏览器上的Web应用程序宽度问题

    所以到目前为止我只在 Android 浏览器上遇到过这个问题 基本上我的网站几乎一直运行良好 而且我还没有在 Dolphin Opera 或 Skyfire 上看到这个问题 但偶尔当我从手机主屏幕之一上的书签重新打开 Android 浏览器
  • 无法找到/下载 AppCompat-v7:23.1.1

    怎么了 我遇到了很多 找不到 appcompat v7 23 1 1 的问题 许多解决方案都不起作用 经过几个小时的思考和寻找答案 我遇到了一个奇怪的问题 I have gotAndroid 支持库 23 1 1 已安装 所有功能 exce
  • 错误:任务“:app:mergeDebugResources”执行失败。 > java.lang.ArrayIndexOutOfBoundsException(无错误消息)

    你们有人知道 Gradle 构建中的这个异常吗 Error Execution failed for task app mergeDebugResources gt java lang ArrayIndexOutOfBoundsExcept
  • AOSP 中 android.Build.SERIAL 何时何地生成?

    我知道android Build SERIAL是在第一次设备启动时生成的 但我无法准确定位位置和时间 我正在建造AOSP Jelly Bean Android平板电脑 nosdcard 第二个问题 这个是序列号吗 really对所有人来说都
  • opencv人脸检测示例

    当我在设备上运行应用程序时 应用程序崩溃并显示以下按摩 java lang UnsatisfiedLinkError 无法加载 detector based tracker findLibrary 返回 null 我正在使用 OpenCV
  • 如何在虚拟机 VirtualBox 上运行 Android-x86 4.2 iso?

    我想用Android x86测试和调试我的应用程序 我之前成功尝试过其他版本的Android x86 但是关于android x86 4 2有一个错误 所以我在这里问我的问题 因为它可能会发生在其他人身上 我安装了oracle VM vir
  • 从 Handler.obtainMessage() 获取什么参数

    我正在使用线程来执行一些 BT 任务 我正在尝试向 UI 线程发送消息 以便我可以基于我的 BT 线程执行 UI 工作 为此 我使用处理程序 但我不知道如何检索发送到处理程序的数据 要发送数据 我使用 handler obtainMessa
  • 如何在 Android 应用程序中使用多个 Graph API 获取 Facebook Notes 项目的评论?

    我想使用 Graph API 显示 Facebook 页面的注释项目以及这些评论和点赞 为此 我使用 Facebook SDK 中的 asyncFacebookRunner 步骤是这样的 调用 asyncFacebookRunner req
  • 如何从webkit浏览器中检测Android版本和品牌?

    如何通过webkit浏览器检测Android版本和品牌 可靠吗 我相信你可以检查用户代理 但是 我认为它不安全 因为有很多方法可以用来欺骗用户代理 在谷歌上搜索这个问题给了我们很多答案 它甚至可以在默认浏览器上运行 您只需输入 about
  • 活动组代码示例

    有人可以给我一些使用活动组的示例代码吗 我的应用程序中有一些按钮 我想将活动应用于这些按钮 目前我正在使用 setVisibility 但我被告知活动组将是更好的选择 这是另一个ActivityGroup 示例项目 http richipa
  • 使用 cordova cli 构建时的 Android 安装位置

    我正在使用 cordova CLI 工具构建一个大型 cordova phonegap 应用程序 我需要 AndroidManifest xml 文件中的 installLocation 具有 installLocation auto 或p
  • BadPaddingException:无效的密文

    我需要一些帮助 因为这是我第一次编写加密代码 加密代码似乎工作正常 但解密会引发错误 我得到的错误是 de flexiprovider api exceptions BadPaddingException 无效的密文 in the 解密函数
  • 如何以编程方式创建 CardView

    我正在开发一个 Android 应用程序Java Android Studio 我想在活动中创建CardView以编程方式 我想将以下属性设置为CardView layout width wrap content layout row 0
  • Android:ANT 构建失败,并显示 google-play-services-lib:“解析为没有项目的 project.properties 文件的路径”

    我正在尝试使用 ANT 构建我的应用程序 但在包含 google play services lib 库项目后 我惨遭失败 Step 1 我在 project properties 文件中设置了对库项目的引用 android library
  • firebase中按范围查询

    我有一个食品价格范围滑块 根据滑块的最小值和最大值 我想显示此范围内的食品 滑块代码 multiSlider setOnThumbValueChangeListener new MultiSlider SimpleChangeListene
  • 画布:尝试使用回收的位图错误

    我是一个相当新的程序员 所以任何建议将不胜感激 我有一个类 每次调用它时都会在循环中运行 AsyncTask AsyncTask 看起来像这样 public class LoadImageTask extends AsyncTask
  • 进程被杀死后不会调用 onActivityResult

    我有一个主要活动 Main 和另一个活动 Sub 由 Main 调用 startActivityForResult new Intent this SubActivity class 25 当我在 Sub 时 我终止该进程 使用任务管理器或

随机推荐