Java Android应用程序上的文件浏览
我想创建一个Android应用程序。将有一个表单,允许用户选择使用html标签的文件。表单上还有一个提交按钮,点击该按钮,所选文件将从Android设备复制到服务器上的某个位置 现在表单在html页面上,我一直在使用phonegap进行开发 现在,我已经创建了一个插件,可以从sdcard文件夹中读取文件,并使用jsch库将文件上传到sftp服务器上 在研究过程中,我发现很多人都在使用以下方法: 表单详细信息发布到服务器,并使用php脚本使用$\u文件读取文件内容(但我不想采用这种方法) 我需要一种方法,这样当用户使用浏览选项选择文件时,在发布表单时会选择此文件名 例如,下面是MainActivity.java文件的代码Java Android应用程序上的文件浏览,java,android,cordova,Java,Android,Cordova,我想创建一个Android应用程序。将有一个表单,允许用户选择使用html标签的文件。表单上还有一个提交按钮,点击该按钮,所选文件将从Android设备复制到服务器上的某个位置 现在表单在html页面上,我一直在使用phonegap进行开发 现在,我已经创建了一个插件,可以从sdcard文件夹中读取文件,并使用jsch库将文件上传到sftp服务器上 在研究过程中,我发现很多人都在使用以下方法: 表单详细信息发布到服务器,并使用php脚本使用$\u文件读取文件内容(但我不想采用这种方法) 我需要一
package com.example.filepicker;
import java.io.IOException;
import java.net.URI;
import org.apache.cordova.DroidGap;
import org.apache.http.client.methods.HttpGet;
import android.util.Log;
import android.view.Display;
import android.webkit.WebSettings.RenderPriority;
import android.view.WindowManager;
import android.content.Context;
import android.database.SQLException;
import android.os.Bundle;
import android.util.Log;
import android.view.Display;
import android.view.Menu;
public class MainActivity extends /* Activity */DroidGap {
private Object request;
// @Override
// protected void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
// }
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.init();
appView.addJavascriptInterface(this, "MainActivity");
super.loadUrl("file:///android_asset/www/index.html");
}
public void onFormSubmit() {
//this method is to be invoked when the user clicks form submit button
Log.i("Custom Function Called", "Custom Function Called");
}
}
index.html
<!DOCTYPE html>
<html>
<head>
<title>XXXX | INDEX</title>
<script type="text/javascript" charset="utf-8" src="js/jquery-1.9.1.js"></script>
<script type="text/javascript" charset="utf-8" src="js/cordova.js"></script>
<script type="text/javascript" charset="utf-8" src="js/toast.js"></script>
<script type="text/javascript" charset="utf-8" src="js/jquery.magnific-popup.min.js"></script>
<script type="text/javascript" src="js/jquery.mCustomScrollbar.concat.min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/FileUploadPlugin.js"></script>
<link rel="stylesheet" type="text/css" href="css/style.css" >
<link rel="stylesheet" type="text/css" href="css/bootstrap.css" />
<link rel="stylesheet" type="text/css" href="css/media-query.css" />
<link rel="stylesheet" type="text/css" href="css/magnific-popup.css" />
<link rel="stylesheet" type="text/css" href="css/jquery.mCustomScrollbar.css" />
<script type="text/javascript">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
alert('device is ready');
var fileupload1 = new FileUploadPlugin();
var ipaddress = "xxxxxxx";
var userId ="xxx";
var password = "xxx";
/*cordova.exec(onFileSystemSuccess, fail, "FileUploadPlugin", "echo",
[ipaddress,userId,password]); */
/*cordova.exec(onFileSystemSuccess, fail, "FileUploadPlugin", "display",
["DEF"]); */
/* callNewActivity();*/
alert('after execution is called');
}
function onFileSystemSuccess(result) {
alert('on success'+result);
// alert('msg'+msg);
// alert('on status'+status);
console.log('this is success');
/* console.log(result); */
/* console.log(fileSystem.name);
console.log(fileSystem.root.name);*/
}
function fail(error) {
alert('on failure'+error);
console.log('this is error');
alert('err code'+evt.target.error.code);
/* console.log(evt.target.error.code);
*/
}
function onFormSubmit() {
window.MainActivity.onFormSubmit();
}
</script>
</head>
<body>
<div data-role="page">
<div data-role="header">
<h1>Attach File</h1>
</div>
<div data-role="content">
<form id="file-attachment-form" action="http://PutYourServerURL">
<div data-role="fieldcontain">
<label for="data">Put some text:</label>
<input name="data" type="text" id="data"/>
</div>
<div data-role="fieldcontain">
<label for="attachment">Attachment:</label>
<input type="file" name="attachment" id="attachment"/>
</div>
<input type="submit" value="Submit"/>
</form>
</div>
<script>
$('#file-attachment-form').submit(function () {
formData = new FormData($(this)[0]);
alert('new '+formData);
/*console.log(formData);*/
/* $.ajax({
type:'POST',
url:$('#file-attachment-form').attr('action'),
data:formData,
contentType: false,
processData: false,
error:function (jqXHR, textStatus, errorThrown) {
alert('Failed to upload file')
},
success:function () {
alert('File uploaded')
}
})*/
/*alert('formData = '+formData);*/
onFormSubmit();
});
</script>
</div>
</body>
</html>
XXXX |索引
//等待加载设备API库
//
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
//设备API可用
//
函数ondevicerady(){
警报(“设备已准备就绪”);
var fileupload1=新的FileUploadPlugin();
var ipaddress=“xxxxxxx”;
var userId=“xxx”;
var password=“xxx”;
/*cordova.exec(onFileSystemSuccess,fail,“FileUploadPlugin”,“echo”,
[IP地址、用户ID、密码]*/
/*cordova.exec(onFileSystemSuccess,fail,“FileUploadPlugin”,“display”,
[“DEF”])*/
/*callNewActivity()*/
警报(“调用执行后”);
}
函数onFileSystemsSuccess(结果){
警报(“成功时”+结果);
//警报('msg'+msg');
//警报(“开启状态”+状态);
log(“这就是成功”);
/*控制台日志(结果)*/
/*log(fileSystem.name);
log(fileSystem.root.name)*/
}
功能失败(错误){
警报(“故障时”+错误);
log(“这是错误”);
警报(“错误代码”+evt.target.error.code);
/*log(evt.target.error.code);
*/
}
函数onFormSubmit(){
window.MainActivity.onFormSubmit();
}
附加文件
放一些文字:
附件:
$(“#文件附件表单”)。提交(函数(){
formData=新的formData($(此)[0]);
警报('new'+formData);
/*console.log(formData)*/
/*$.ajax({
类型:'POST',
url:$(“#文件附件表单”).attr('action'),
数据:formData,
contentType:false,
processData:false,
错误:函数(jqXHR、textStatus、errorshown){
警报('未能上载文件')
},
成功:函数(){
警报('文件已上载')
}
})*/
/*警报('formData='+formData)*/
onFormSubmit();
});
e、 g MainActivity.java文件将有一个名为“onFormSubmit”的函数。该函数应该能够读取files参数
我想知道这是否是一种可行的方法。如果没有,那么任何指针/建议都会有所帮助
提前谢谢。我有很多不清楚的地方:
表单上会有一个提交按钮
?哪种形式?表格在哪里?你没有告诉我一开始就有表格。您也没有告诉表单和MainActivity之间的连接是什么。为什么要提前表示感谢,因为人们希望你在得到帮助后表达感谢?@greenapps。。我现在编辑了这个问题。希望这能让您明白…您是否使用WebView从资产加载html文件?只有在发布html源代码和javascript接口代码后,我们才能看到您想要的东西是否可行。@greenapps:我已经添加了html文件。。。是的,我正在使用Webview加载html文件OK。现在是否调用onFormSubmit()?javascript接口工作吗?您是否能够/允许在需要时调整html源代码?