Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android应用程序上的文件浏览_Java_Android_Cordova - Fatal编程技术网

Java Android应用程序上的文件浏览

Java Android应用程序上的文件浏览,java,android,cordova,Java,Android,Cordova,我想创建一个Android应用程序。将有一个表单,允许用户选择使用html标签的文件。表单上还有一个提交按钮,点击该按钮,所选文件将从Android设备复制到服务器上的某个位置 现在表单在html页面上,我一直在使用phonegap进行开发 现在,我已经创建了一个插件,可以从sdcard文件夹中读取文件,并使用jsch库将文件上传到sftp服务器上 在研究过程中,我发现很多人都在使用以下方法: 表单详细信息发布到服务器,并使用php脚本使用$\u文件读取文件内容(但我不想采用这种方法) 我需要一

我想创建一个Android应用程序。将有一个表单,允许用户选择使用html标签的文件。表单上还有一个提交按钮,点击该按钮,所选文件将从Android设备复制到服务器上的某个位置

现在表单在html页面上,我一直在使用phonegap进行开发

现在,我已经创建了一个插件,可以从sdcard文件夹中读取文件,并使用jsch库将文件上传到sftp服务器上

在研究过程中,我发现很多人都在使用以下方法: 表单详细信息发布到服务器,并使用php脚本使用$\u文件读取文件内容(但我不想采用这种方法)

我需要一种方法,这样当用户使用浏览选项选择文件时,在发布表单时会选择此文件名

例如,下面是MainActivity.java文件的代码

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源代码?