Skip to content

处理文件或图片选择

zhaohengyu edited this page Jul 16, 2018 · 2 revisions

综述

在客服聊天页、或者商品评价页,有时需要传输图片。

在WebView中处理文件选择,需要遵守一定的操作步骤,(WebView File Chooser)

在有赞AppSDK的视图中(YouzanBrowser)对文件选择做了一定的封装,需按以下步骤实施:

监听文件选择事件AbsChooserEvent

mView.subscribe(new AbsChooserEvent() {
    @Override
    public void call(View view, Intent intent, int requestCode) throws ActivityNotFoundException {
        startActivityForResult(intent, requestCode); // 发起文件选择intent, 注:此处requestCode需要在下述第3步时一起回传
    }
});

实现文件选择

这里可以默认用系统的文件选择器,也可以自己实现

回传数据

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode == RESULT_OK){
        // 回传数据, requestCode上步骤1中的, data intent中包含选择文件的uri
        mView.receiveFile(requestCode, data);
    }
}

注意

  1. 上述步骤缺一不可;
  2. 每次选择文件,回传数据的mView.receiveFile一定要调用,不能因为用户没选任何文件就不调,否则h5页面中的文件选择Button点击无响应(因为此时WebView不能正确处理状态);
  3. AppSDK 5.2.0版本以前处理文件选择有bug,h5页面中文件选择Button点击无响应。5.2.0及以后版本已修复此问题。