GET_CONTENT意图适用于调试,但不适用于发布版本

时间:2014-02-11 10:15:22

标签: android android-intent

我在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();
        }
    }

1 个答案:

答案 0 :(得分:1)

我发现有两个问题。一个特别与此问题有关的调试/发布版本,一个与Android 4.4相关。

调试/发布构建

Proguard已启用发布版本,并且似乎剥离了一个JavaScript接口,由于某种原因干扰了openFileChooser的回调。

Android 4.4

在KitKit中,当用户选中openFileChooser元素时,Android小组已删除对input[type=file]的私有API调用。我还没有找到解决方法。在此之前,通过WebView上传文件似乎是不可能的。