android支持html的標籤

工作一段時間啦,每天查閱大量的資料,得到了一些平時書上,網上不多見的知識,在這裏記錄一下,方便自己也方便大家。
首先是html的<input type="file">標籤,用於選中本地文件然後上傳到服務器,很奇怪,這麼重要的標籤android的webview怎麼會不支持,還好,它提供了一個接口,可以做這個,網上查過資料,是重寫WebChromeClient的openFileChooser方法,但網上的Demo總不能運行,不能調用這個方法,很奇怪,最後終於解決啦,是因爲3.0以上和以下版本的該方法參數不一樣(暈,真能搞),最後終於解決啦,上代碼:
protected class myWebChromeClient extends WebChromeClient
{
// For Android 3.0+
public void openFileChooser( ValueCallback<Uri> uploadMsg, String acceptType ) 
{ 
context.mUploadMessage = uploadMsg; 
Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
i.addCategory(Intent.CATEGORY_OPENABLE); 
i.setType("image/*"); 
context.startActivityForResult( Intent.createChooser( i, "File Chooser" ), MainActivity.FILECHOOSER_RESULTC		ODE ); 
}

// For Android < 3.0
public void openFileChooser( ValueCallback<Uri> uploadMsg ) 
{
context.mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
context.startActivityForResult( Intent.createChooser( i, "File Chooser" ), MainActivity.FILECHOOSER_RESULTC		ODE ); 
}
}


myWebView.setChromeClient(newmyWebChromeClient() ); 
還有一個結果處理函數
@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;

}
}









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章