我在Android应用中运行的意图存在问题。它在我的应用程序的调试版本中完美运行,但不适用于我的发布版本。我错过了什么吗?
这是意图代码和活动结果回调。
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode != FILECHOOSER_RESULTCODE) return;
if (null == mUploadMessage) return;
mUploadMessage.onReceiveValue(intent.getData());
mUploadMessage = null;
}
private void pickFile() {
Intent chooserIntent = new Intent(Intent.ACTION_GET_CONTENT);
chooserIntent.setType("image/*");
startActivityForResult(chooserIntent, FILECHOOSER_RESULTCODE);
}
这里我调用pickFile函数
echoView.setWebChromeClient(new WebChromeClient() {
@SuppressWarnings("unused")
public void openFileChooser(ValueCallback<Uri> uploadMsg, String AcceptType, String capture) {
this.openFileChooser(uploadMsg);
}
@SuppressWarnings("unused")
public void openFileChooser(ValueCallback<Uri> uploadMsg, String AcceptType) {
this.openFileChooser(uploadMsg);
}
public void openFileChooser(ValueCallback<Uri> uploadMsg) {
mUploadMessage = uploadMsg;
pickFile();
}
}
答案 0 :(得分:1)
我发现有两个问题。一个特别与此问题有关的调试/发布版本,一个与Android 4.4相关。
调试/发布构建
Proguard已启用发布版本,并且似乎剥离了一个JavaScript接口,由于某种原因干扰了openFileChooser
的回调。
Android 4.4
在KitKit中,当用户选中openFileChooser
元素时,Android小组已删除对input[type=file]
的私有API调用。我还没有找到解决方法。在此之前,通过WebView上传文件似乎是不可能的。