android webview file,安卓开发webview无法运行<input type="file"怎么破?

Github上有个Os-FileUp项目提供了一些方法.

webView.setWebChromeClient(new WebChromeClient(){

//For Android 3.0+

public void openFileChooser(ValueCallback uploadMsg){

mUM = 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"), FCR);

}

// For Android 3.0+, above method not supported in some android 3+ versions, in such case we use this

public void openFileChooser(ValueCallback uploadMsg, String acceptType){

mUM = uploadMsg;

Intent i = new Intent(Intent.ACTION_GET_CONTENT);

i.addCategory(Intent.CATEGORY_OPENABLE);

i.setType("*/*");

MainActivity.this.startActivityForResult(

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

FCR);

}

//For Android 4.1+

public void openFileChooser(ValueCallback uploadMsg, String acceptType, String capture){

mUM = 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.FCR);

}

//For Android 5.0+

public boolean onShowFileChooser(

WebView webView, ValueCallback filePathCallback,

WebChromeClient.FileChooserParams fileChooserParams){

if(mUMA != null){

mUMA.onReceiveValue(null);

}

mUMA = filePathCallback;

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

if(takePictureIntent.resolveActivity(MainActivity.this.getPackageManager()) != null){

File photoFile = null;

try{

photoFile = createImageFile();

takePictureIntent.putExtra("PhotoPath", mCM);

}catch(IOException ex){

Log.e(TAG, "Image file creation failed", ex);

}

if(photoFile != null){

mCM = "file:" + photoFile.getAbsolutePath();

takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));

}else{

takePictureIntent = null;

}

}

Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT);

contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE);

contentSelectionIntent.setType("image/*");

Intent[] intentArray;

if(takePictureIntent != null){

intentArray = new Intent[]{takePictureIntent};

}else{

intentArray = new Intent[0];

}

Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER);

chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent);

chooserIntent.putExtra(Intent.EXTRA_TITLE, "Image Chooser");

chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);

startActivityForResult(chooserIntent, FCR);

return true;

}

});

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值