日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

android使用webview上传文件,Android项目中如何在webview页面中上传文件

發(fā)布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android使用webview上传文件,Android项目中如何在webview页面中上传文件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Android項目中如何在webview頁面中上傳文件

發(fā)布時間:2020-11-26 15:56:27

來源:億速云

閱讀:68

作者:Leah

本篇文章為大家展示了Android項目中如何在webview頁面中上傳文件,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Android webview在默認情況下是不支持網(wǎng)頁中的文件上傳功能的;

如果在網(wǎng)頁中有,在android webview中訪問時也會出現(xiàn)瀏覽文件的按鈕

但是點擊按鈕之后沒有反應(yīng)...

那么如何能夠讓android的webview能夠響應(yīng),這個瀏覽按鈕呢?在網(wǎng)上查了很多資料,很多相同的,但都漏掉了一個地方,導(dǎo)致無法讀取到文件的完整地址(“c:\upfile\233232.jpg”),整理最終代碼入下:

我們需要為webview設(shè)置WebChromeClient,在WebChromeClient的實現(xiàn)類中覆蓋文件選擇的方法:package?com.example.webviewupfile;

import?java.io.File;

import?java.io.IOException;

import?android.app.Activity;

import?android.content.ContentResolver;

import?android.content.Intent;

import?android.content.res.Configuration;

import?android.database.Cursor;

import?android.graphics.Bitmap;

import?android.net.Uri;

import?android.os.Bundle;

import?android.provider.MediaStore;

import?android.util.Log;

import?android.view.View;

import?android.webkit.ValueCallback;

import?android.webkit.WebChromeClient;

import?android.webkit.WebView;

import?android.webkit.WebViewClient;

import?android.widget.ProgressBar;

public?class?MainActivity?extends?Activity?{

private?ValueCallback?mUploadMessage;

private?final?static?int?FILECHOOSER_RESULTCODE?=?1;

private?WebView?web;

private?ProgressBar?progressBar;

@Override

protected?void?onCreate(Bundle?savedInstanceState)?{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

web?=?(WebView)?findViewById(R.id.webView1);

progressBar?=?(ProgressBar)?findViewById(R.id.progressBar1);

web?=?new?WebView(this);

web.getSettings().setJavaScriptEnabled(true);

web.loadUrl("http://ueditor.baidu.com/website/onlinedemo.html");

web.setWebViewClient(new?myWebClient());

web.setWebChromeClient(new?WebChromeClient()?{

//?The?undocumented?magic?method?override

//?Eclipse?will?swear?at?you?if?you?try?to?put?@Override?here

//?For?Android?3.0+

public?void?openFileChooser(ValueCallback?uploadMsg)?{

mUploadMessage?=?uploadMsg;

Intent?i?=?new?Intent(Intent.ACTION_GET_CONTENT);

i.addCategory(Intent.CATEGORY_OPENABLE);

i.setType("image/*");

MainActivity.this.startActivityForResult(

Intent.createChooser(i,?"File?Chooser"),

FILECHOOSER_RESULTCODE);

}

//?For?Android?3.0+

public?void?openFileChooser(ValueCallback?uploadMsg,

String?acceptType)?{

mUploadMessage?=?uploadMsg;

Intent?i?=?new?Intent(Intent.ACTION_GET_CONTENT);

i.addCategory(Intent.CATEGORY_OPENABLE);

i.setType("*/*");

MainActivity.this.startActivityForResult(

Intent.createChooser(i,?"File?Browser"),

FILECHOOSER_RESULTCODE);

}

//?For?Android?4.1

public?void?openFileChooser(ValueCallback?uploadMsg,

String?acceptType,?String?capture)?{

mUploadMessage?=?uploadMsg;

Intent?i?=?new?Intent(Intent.ACTION_GET_CONTENT);

i.addCategory(Intent.CATEGORY_OPENABLE);

i.setType("image/*");

MainActivity.this.startActivityForResult(

Intent.createChooser(i,?"File?Chooser"),

MainActivity.FILECHOOSER_RESULTCODE);

}

});

setContentView(web);

}

@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;

Bitmap?bm?=?null;

//外界的程序訪問ContentProvider所提供數(shù)據(jù)?可以通過ContentResolver接口

ContentResolver?resolver?=?getContentResolver();

try?{

Uri?originalUri?=?intent.getData();?//?獲得圖片的uri

bm?=?MediaStore.Images.Media.getBitmap(resolver,?originalUri);

//?這里開始的第二部分,獲取圖片的路徑:

String[]?proj?=?{?MediaStore.Images.Media.DATA?};

//?好像是android多媒體數(shù)據(jù)庫的封裝接口,具體的看Android文檔

Cursor?cursor?=?managedQuery(originalUri,?proj,?null,?null,

null);

//?按我個人理解?這個是獲得用戶選擇的圖片的索引值

int?column_index?=?cursor

.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

//?將光標(biāo)移至開頭?,這個很重要,不小心很容易引起越界

cursor.moveToFirst();

//?最后根據(jù)索引值獲取圖片路徑

String?path?=?cursor.getString(column_index);

Uri?uri?=?Uri.fromFile(new?File(path));

mUploadMessage.onReceiveValue(uri);

}?catch?(IOException?e)?{

Log.e("TAG-->Error",?e.toString());

}

}

}

public?class?myWebClient?extends?WebViewClient?{

@Override

public?void?onPageStarted(WebView?view,?String?url,?Bitmap?favicon)?{

//?TODO?Auto-generated?method?stub

super.onPageStarted(view,?url,?favicon);

}

@Override

public?boolean?shouldOverrideUrlLoading(WebView?view,?String?url)?{

//?TODO?Auto-generated?method?stub

view.loadUrl(url);

return?true;

}

@Override

public?void?onPageFinished(WebView?view,?String?url)?{

//?TODO?Auto-generated?method?stub

super.onPageFinished(view,?url);

progressBar.setVisibility(View.GONE);

}

}

//?flipscreen?not?loading?again

@Override

public?void?onConfigurationChanged(Configuration?newConfig)?{

super.onConfigurationChanged(newConfig);

}

//?To?handle?"Back"?key?press?event?for?WebView?to?go?back?to?previous

//?screen.

/*

*?@Override?public?boolean?onKeyDown(int?keyCode,?KeyEvent?event)?{?if

*?((keyCode?==?KeyEvent.KEYCODE_BACK)?&&?web.canGoBack())?{?web.goBack();

*?return?true;?}?return?super.onKeyDown(keyCode,?event);?}

*/

}

上述內(nèi)容就是Android項目中如何在webview頁面中上傳文件,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

總結(jié)

以上是生活随笔為你收集整理的android使用webview上传文件,Android项目中如何在webview页面中上传文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。