Android FTP上传进度条

Android FTPUpload Progress Bar

我正在使用 org.apache.commons.net.ftp [FTPClient class] 上传用户拍照时创建的一些目录。但是,我无法显示进度条来演示该操作。

我创建了一个新线程来调用它,如下所示:

new Thread(new Runnable() {
    public void run() {

        String server = "IP";
        int port = 21;
        String user = "USER";
        String pass = "PASSWORD";

        FTPClient ftpClient = new FTPClient();

        try {
            ftpClient.connect(server, port);
            ftpClient.login(user, pass);

            ftpClient.enterLocalPassiveMode();

            String remoteDirPath = "/";
            String localDirPath = Environment.getExternalStorageDirectory().getPath() + "/PicturesAPP/";
            FTPUtil.uploadDirectory(ftpClient, remoteDirPath, localDirPath, "");
            ftpClient.logout();
            ftpClient.disconnect();

        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}).start();

我试图在其中调用一个进度对话框,但它没有显示。

有人可以帮我吗?

使用 AsyncTask:

    private class YourAsyncTask extends AsyncTask<Void, Void, Void> {
              private ProgressDialog pDialog;
              String server = "IP";
              int port = 21;
              String user = "USER";
              String pass = "PASSWORD";

            FTPClient ftpClient = new FTPClient();
                @Override
                protected void onPreExecute() {
                    super.onPreExecute();
                    pDialog = new ProgressDialog(getActivity());
                    pDialog.setMessage("Loading...");
                    pDialog.show();

                }

                @Override
                protected Void doInBackground(Void... params) {
                  try {
                     ftpClient.connect(server, port);
                     ftpClient.login(user, pass);

                     ftpClient.enterLocalPassiveMode();

                     String remoteDirPath = "/";
                     String localDirPath = Environment.getExternalStorageDirectory().getPath() + "/PicturesAPP/";
                     FTPUtil.uploadDirectory(ftpClient, remoteDirPath, localDirPath, "");
                     ftpClient.logout();
                     ftpClient.disconnect();

                  } catch (IOException ex) {
                    ex.printStackTrace();
                  }
               }

                @Override
                protected void onPostExecute(Void aVoid) {
                super.onPostExecute(aVoid);
                 pDialog.dismiss();
               }
        }

然后:

 new YourAsyncTask().execute();