如何使上传按钮在Android应用程序中工作?
这个问题遇到了好几次,虽然似乎没有任何解释可行。 (或者也许我没有在这个称为互联网的混乱中找到它)...如何使上传按钮在Android应用程序中工作?
我正在开发一个android应用程序,它打开一个包含上传按钮的HTML页面。它在WebView中不起作用。
我曾尝试:http://m0s-programming.blogspot.in/2011/02/file-upload-in-through-webview-on.html
但是Eclipse给出警告说"openFileChooser(ValueCallback uploadMsg) is never used locally"
。该应用程序应与Android 2.2(API 8)及更高版本一起使用。
它给一些错误,我想由于WebView.setWebChromeClient(new CustomWebChromeClient()
有人可以帮我在这?
有关文件上传的类似问题在这里回答:File Upload in WebView。
而且不同版本的Android需要不同的方法:https://stackoverflow.com/posts/12746435/edit
下面是活动的完全自足代码:
public class FileAttachmentActivity extends Activity {
private ValueCallback<Uri> mUploadMessage;
private final static int FILECHOOSER_RESULTCODE = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView wv = new WebView(this);
wv.setWebViewClient(new WebViewClient());
wv.setWebChromeClient(new WebChromeClient() {
//The undocumented magic method override
//Eclipse will swear at you if you try to put @Override here
public void openFileChooser(ValueCallback<Uri> uploadMsg) {
FileAttachmentActivity.this.showAttachmentDialog(uploadMsg);
}
// For Android > 3.x
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {
FileAttachmentActivity.this.showAttachmentDialog(uploadMsg);
}
// For Android > 4.1
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
FileAttachmentActivity.this.showAttachmentDialog(uploadMsg);
}
});
this.setContentView(wv);
wv.loadUrl("https://dl.dropbox.com/u/8047386/posttest.htm");
}
private void showAttachmentDialog(ValueCallback<Uri> uploadMsg) {
this.mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("*/*");
this.startActivityForResult(Intent.createChooser(i, "Choose type of attachment"), FILECHOOSER_RESULTCODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == FILECHOOSER_RESULTCODE) {
if (null == this.mUploadMessage) {
return;
}
Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData();
this.mUploadMessage.onReceiveValue(result);
this.mUploadMessage = null;
}
}
}
你知道如何使它在Android 4.4上工作吗? – jcesarmobile 2013-11-11 07:47:35
@jcesar WebChromeClient类在4.4中没有更改,所以它应该继续工作。但我现在无法验证,我不知道您有什么错误。 – vorrtex 2013-11-11 11:21:38
没有任何错误,按钮只是无所事事,没有日志或错误跟踪。 – jcesarmobile 2013-11-11 11:28:20
一些设备上传按钮没有激活使用像三星S4和笔记3
仔细阅读文章:'4)关于openFileChooser从未在本地使用的警告是正常的,事实上我很确定它应该给你警告。如果它不适合你,这个问题就在别的地方。“# – vorrtex 2013-03-16 10:26:01
@vorrtex它确实给了我警告。但即使忽视这一点,该应用程序实际上在我的模拟器上崩溃。 – Chirag 2013-03-16 10:36:14
我在文章的评论中发现了一个示例应用程序,经过一些小修改后,它就可以工作。 https://dl.dropbox.com/u/8047386/file-attach-cordova-upload-jqm-master_fixed.zip。我相信你的应用程序中有不同的东西可以压制,而上传工作正常。 – vorrtex 2013-03-16 11:06:35