當前位置:首頁 » 安卓系統 » 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-04-27 12:12:35 瀏覽:343
得到腳本 發布:2024-04-27 12:06:25 瀏覽:936
三星手機鎖屏忘記密碼了怎麼辦 發布:2024-04-27 12:05:41 瀏覽:519
python基礎語言 發布:2024-04-27 11:54:40 瀏覽:84
ioshttp伺服器搭建 發布:2024-04-27 11:40:26 瀏覽:913
忘記密碼如何強制刷機vivo 發布:2024-04-27 11:28:40 瀏覽:385
c語言讀取指定行 發布:2024-04-27 11:28:30 瀏覽:52
c語言中a10什麼意思 發布:2024-04-27 10:45:43 瀏覽:58
物聯網中ftp是什麼意思 發布:2024-04-27 10:41:17 瀏覽:986
銀行密碼保護在哪裡 發布:2024-04-27 10:25:23 瀏覽:189