当前位置:首页 » 安卓系统 » androidwebview上传文件

androidwebview上传文件

发布时间: 2022-05-17 23:06:26

‘壹’ Android webview 上传图片为什么 application/octet-stream

首先得找出问题的原因,你不妨做以下测试,看下问题是处在那端

  • 用其他的软件测试Server看是不是服务器配置的事

  • 你写的Webview,Mainfest赋权是否正确

‘贰’ 怎样让android4.4的webview支持文件上传

android4.4的webview无法支持文件上传,因为openFileChooser()方法本身就不是公共的api。
1、WebKit是Mac OS X v10.3及以上版本所包含的软件框架(对v10.2.7及以上版本也可通过软件更新获取)。 同时,WebKit也是Mac OS X的Safari网页浏览器的基础。WebKit是一个开源项目,主要由KDE的KHTML修改而来并且包含了一些来自苹果公司的一些组件。
2、传统上,WebKit包含一个网页引擎WebCore和一个脚本引擎javaScriptCore,它们分别对应的是KDE的KHTML和KJS。不过,
3、随着JavaScript引擎的独立性越来越强,现在WebKit和WebCore已经基本上混用不分。

‘叁’ 怎么解决安卓5.1.1 webview 不支持<input type="file" />

android里webview不支持input type=file的解决方法


  1. activity定义

  2. public ValueCallback<Uri> mUploadMessage;

  3. public final static int FILECHOOSER_RESULTCODE = 1;

2.扩展WebChromeClient

WebChromeClient chromeClient = new WebChromeClientImpl();

view.setWebChromeClient(chromeClient);


3.实现WebChromeClientImpl类

private class WebChromeClientImpl extends WebChromeClient{

//扩展支持alert事件

@Override

public boolean onJsAlert(WebView view, String url, String message,JsResult result) {

Builder builder = new Builder(view.getContext());

builder.setTitle("商机通提示").setMessage(message).setPositiveButton("确定", null);

builder.setCancelable(false);

builder.setIcon(R.drawable.ic_launcher);

AlertDialog dialog = builder.create();

dialog.show();

result.confirm();

return true;

}

//扩展浏览器上传文件

//3.0++版本

public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {

mUploadMessage = uploadMsg;

Intent i = new Intent(Intent.ACTION_GET_CONTENT);

i.addCategory(Intent.CATEGORY_OPENABLE);

i.setType("*/*");

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

}

//3.0--版本

public void openFileChooser(ValueCallback<Uri> uploadMsg) {

mUploadMessage = uploadMsg;

Intent i = new Intent(Intent.ACTION_GET_CONTENT);

i.addCategory(Intent.CATEGORY_OPENABLE);

i.setType("*/*");

activity.startActivityForResult(Intent.createChooser(i, "file Browser"),FILECHOOSER_RESULTCODE);

}

}

‘肆’ Android WebView中如何实现类似于UC浏览器上传文件时的选择框

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
intent.putExtra("return-data", true);
startActivityForResult(intent, 2);

后面用protected void onActivityResult(int requestCode, int resultCode, Intent data)
这个方法接受回调值

满意请采纳

‘伍’ android 使用WebView上传文件 混淆打包之后就无法调用openFileChooser这个方法了

android针对不同的版本有不同方法,上传文件的话要重写newsWeb.setWebChromeClient中的openFileChooser()方法.

‘陆’ 上传图片并预览的网页代码在浏览器可以,但是在android的webview上不行

出现这个问题大多都是因为路径不对

把你的图片放进你要上传的那个文件里面,在从新增加这个张图片就行了

上传到空间有时会丢失衔接或图片,你可以把丢失的那个HTML文件在空间删了在从新上传就可以了,记得把图片也一同上传

检查一下路径
你建站的文件在E:\1,那么你的图片途径必须是E:\1\***.gif或***.JPGE等

‘柒’ 安卓 webview怎么使用,求高手

  • Android和iOS系统都提供了标准的浏览器控件,在android中是WebView,ios中为UIWebView。在iOS中你实例化一个UIWebView即可调用loadRequest来加载一个网页,但是在Android中你不仅需要创建一个WebView,还需要做一些其他的事情。

‘捌’ Android WebView 在开发过程中有哪些坑

WebView:
(一)、介绍:
android提供了一个内置浏览器,该浏览器可以查看网站,查看邮件,播放视频。要使用该内置浏览器,要通过WebView组件实现。webView组件式专门用来浏览网页的。
类结构:
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.AbsoluteLayout
↳ android.webkit.WebView

(二)、webview组件常用方法:
loadUrl()
loadData()
loadDataWithBaseURL()
capturePicture()
goBack()
goForward()
stopLoading()
reload()
(三)、WebView组件显示url页面的内容:
1、基本代码:
webView_main = (WebView) findViewById(R.id.webView_main);
webView_main.loadUrl("http://www.qq.com");

(四)、WebView组件加载html代码:
1、基本代码:
webView_main = (WebView) findViewById(R.id.webView_main);
// webView_main.loadData(data, "text/html","utf-8");//这个方法中虽然设置了字符集,但是运行效果中发现依然中文会显示乱码。为了解决这个问题,建议使用loadDataWithBaseURL()方法。
webView_main.loadDataWithBaseURL(null, data, "text/html", "utf-8", null);

【备注:】MIME【了解】
概念:MIME意为多功能Internet邮件扩展,它设计的最初目的是为了在发送 电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理。然而当它被HTTP协议支持之后,它的意义就更为显着了。它使得HTTP传输的不仅是普通的文本,而变得丰富多彩。
每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类。
常见的MIME类型(通用型):
超文本标记语言文本 .html text/html
xml文档 .xml text/xml
XHTML文档 .xhtml application/xhtml+xml
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
PDF文档 .pdf application/pdf
Microsoft Word文件 .word application/msword
PNG图像 .png image/png
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
任意的二进制数据 application/octet-stream
2、如果加载的html代码中包含javascript语言,会如何呢?

运行后发现,所有的javascript都不会执行。因为WebView 在默认情况下不支持javascript。如何让执行javascript呢?
让WebView支持javascript的两个步骤:
使用 WebView 组件的WebSettings对象的setJavaScriptEnabled()方法。这种做法是让 WebView 能支持绝大多数的javascript语言。但是依然不支持alert等警告对话框语句。
使用 WebView 组件的setWebChromeClient()方法。这种做法是让 WebView 也支持显示alert等警告对话框。
基本代码:

webView_main.getSettings().setJavaScriptEnabled(true);// 支持运行javascript

webView_main.setWebChromeClient(new WebChromeClient());// 支持运行特殊的javascript(例如:alert())

webView_main.setWebViewClient(new WebViewClient());// 当点击超链地址后不会新打开浏览器来访问,而是始终在本app中浏览页面

3、如果html中包含有超级链接地址,WebView能顺利执行吗?
经过运行后发现,WebView中的超链地址在点击后,会跳出该应用程序,而弹出新的浏览器去访问该网页。
如果解决呢?调用webview对象的setWebViewClient()方法即可解决。
webView_main.setWebViewClient(new WebViewClient());
(五)、用WebView实现“网页版天气预告”

【备注:】调用页面地址:http://m.weather.com.cn/m/pn12/weather.htm?id=101010100T
webView_main = (WebView) findViewById(R.id.webView_main);
webView_main.getSettings().setJavaScriptEnabled(true);
webView_main.setWebChromeClient(new WebChromeClient());
webView_main.setWebViewClient(new WebViewClient());
webView_main.loadUrl("http://m.weather.com.cn/m/pn12/weather.htm?id=101010100T");
(六)、制作简单的网页浏览器:
1、核心代码:
publicclass MainActivity extends Activity {
privateEditText editText_main_url;
privateWebView webView_main;
private String url = "";
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText_main_url = (EditText) findViewById(R.id.editText_main_url);
webView_main = (WebView) findViewById(R.id.webView_main);
// 让webview对象支持解析javascript语句
webView_main.getSettings().setJavaScriptEnabled(true);
// 让webview对象支持解析alert()等特殊的javascript语句
webView_main.setWebChromeClient(new WebChromeClient());
// 如果不使用该句代码,在点击超链地址后,会跳出程序,而弹出浏览器访问网页。
webView_main.setWebViewClient(new WebViewClient());
}
publicvoid clickButton(View view) {
switch (view.getId()) {
// 浏览器中后退键监听
caseR.id.button_main_goback:
webView_main.goBack();
break;
// 浏览器前进键监听
caseR.id.button_main_goforward:
webView_main.goForward();
break;
// 当输入网址后,点击该按钮,可以执行访问
caseR.id.button_main_submit:
url = editText_main_url.getText().toString();
if ((url == null) || url.equals("")) {
Toast.makeText(MainActivity.this, "请输入url地址!", Toast.LENGTH_LONG).show();
} else {
if (url.indexOf("http://") != 0) {
url = "http://" + url;
}
webView_main.loadUrl(url);
}
break;
// 浏览器停止加载键监听
caseR.id.button_main_stop:
webView_main.stopLoading();
break;
// 浏览器刷新键监听
default:
break;
}
}
}

‘玖’ 把HTML5的手机网站嵌入安卓APP中,发现<input type='file' />的上传按钮功能失效,点击没有任何反应

安卓APP的WebView默认屏蔽了该控件的使用,有些安卓APP之所以能支持文件选择和上传,主要可能是有可能采取了如下措施之一:

(1)可能在该APP中重写了相关方法(http://stackoverflow.com/questions/5907369/file-upload-in-webview)

(2)提供了JS Bridge来供web页面调用

所以,单从前端技术上是解决不了这个问题的。

这个问题之所以不太好排查,一方面跟手机端的图片上传功能我不太常用到有很大关系,另一方面也因为见到一些其它的APP容器能支持该功能,所以思维在习惯上已经形成定势,误以为这是WebView默认就支持的。

末了,顺便提醒一句,下次进行类似功能的需求评审,别忘了先了解下相应的APP容器是否支持该功能,如果没有,则需要找到相应的客户端开发同学评估一下工时,以免造成影响项目进度的风险








热点内容
服务器电脑挂机吧 发布:2024-05-09 09:54:04 浏览:784
特斯拉modely买哪个配置 发布:2024-05-09 09:32:01 浏览:62
androidpc机 发布:2024-05-09 09:31:51 浏览:469
服务器配置外网地址查询 发布:2024-05-09 09:22:31 浏览:657
win系统如何组建sip服务器 发布:2024-05-09 08:52:21 浏览:279
基于图像匹配算法 发布:2024-05-09 08:35:32 浏览:29
编译安卓内核源码 发布:2024-05-09 08:22:32 浏览:185
骑砍二霸主怎么连接联机服务器 发布:2024-05-09 08:21:58 浏览:547
c语言引用参数 发布:2024-05-09 08:21:58 浏览:252
怎么查看服务器流量 发布:2024-05-09 08:12:34 浏览:880