H5 通过 input 标签调起 Android 相册,点击取消时手机卡住( 二 )

< clipData.getItemCount(); i++) { ClipData.Item item = clipData.getItemAt(i); results[i] = item.getUri(); } } if (dataString != null) /** * 没有经过裁剪,直接取得的图片 */ results = new Uri[]{Uri.parse(dataString)}; } } /** * 如果经过了上面的处理,result 不为空,说明用户确实取得了图片,那么将 result 返回即可 * * 否则,返回空的图片(图片只有名字,并没有真正的图片) */ if (results != null) { myFileWebChromeClient.mFilePathCallbacks.onReceiveValue(results); myFileWebChromeClient.mFilePathCallbacks = null; } else { results = new Uri[]{myFileWebChromeClient.imageUri}; myFileWebChromeClient.mFilePathCallbacks.onReceiveValue(results); myFileWebChromeClient.mFilePathCallbacks = null; }}}为了方便使用,搞了一个类,再 onActivityResult 中调用即可
这样:
@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { MyFileOnActivityResult instance = MyFileOnActivityResult.getInstance(myFileWebChromeClient); instance.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);}3、在点击时,也要判断下是否赋予了 拍照 和 读写 sd 卡的权限,这里就不贴代码了
ok , 这样就能解决点击取消键,界面卡住的问题了 。
4、代码提交到 github 了,用户名 「guaju」,仓库名「AndroidCommonUtils」有需要看看吧

【H5 通过 input 标签调起 Android 相册,点击取消时手机卡住】


推荐阅读