未调用Android WebView openFileChooser
我无法使未调用Android WebView openFileChooser,android,webview,android-webview,webchromeclient,Android,Webview,Android Webview,Webchromeclient,我无法使openFileChooser()正常工作。我不在Android KitKat上(因为我们知道这个方法在4.4上不再有效)。我尝试了一个不同的解决方案,但也不起作用 以下是html: <a class="myClass" href="./gallery_files/gallery.html" title="" onclick="document.getElementById('upload_').click(); return false;"> <form c
openFileChooser()
正常工作。我不在Android KitKat上(因为我们知道这个方法在4.4上不再有效)。我尝试了一个不同的解决方案,但也不起作用
以下是html:
<a class="myClass" href="./gallery_files/gallery.html" title="" onclick="document.getElementById('upload_').click(); return false;">
<form class="avatar" action="myUrlIsHere" method="post" enctype="multipart/form-data">
<input id="upload_" class="invisible upload" type="file" name="Avatar">
</form>
您知道问题出在哪里吗?似乎在Kitkat 4.4中没有调用openFileChooser。它一直被称为android 4.3。
虽然它在4.4.3上再次起作用。找到了一个对我有效的解决方案。它在
produard android.txt
中又添加了一条规则:
-keepclassmembers class * extends android.webkit.WebChromeClient {
public void openFileChooser(...);
}
但是有一些解决办法。在运行4.4的HTC One上,我可以在它的默认浏览器上上传Gmail附件。
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == WebViewChromeClient.FILECHOOSER_RESULTCODE) {
Log.d("MainActivity", "onActivityResult");
if (null == uploadMsg) {
Log.d("FileChooser Result", "58");
return;
}
Log.d("MainActivity", "onActivityResult");
Uri result = null;
try {
if (resultCode != RESULT_OK) {
result = null;
} else {
result = intent == null ? mCapturedImageURI : intent
.getData();
}
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "activity :" + e,
Toast.LENGTH_LONG).show();
}
uploadMsg.onReceiveValue(result);
setmUploadMessage(null);
}
Log.d("MainActivity", "onActivityResult");
}
-keepclassmembers class * extends android.webkit.WebChromeClient {
public void openFileChooser(...);
}