0

我有一个创建 AsyncTask 以通过 FTPHelper 类测试 ftp 连接的活动。Activity 会显示一个 Toast,其中包含连接的布尔状态(成功或失败)。如何在活动中显示确切的回复代码或回复字符串?

活动:

TestConnection task = new TestConnection(NewSite.this,
                        _address, _user, _pass, p, new testConnInterface() {

                            @Override
                            public void testConnection(boolean result) {
                                if (result == true) {
                                    Toast.makeText(NewSite.this,
                                            "Connection Succesful",
                                            Toast.LENGTH_LONG).show();

                                } else {
                                    Toast.makeText(NewSite.this,
                                            "Connection Failed:" + result,
                                            Toast.LENGTH_LONG).show();
                                }

                            }
                        });
                task.execute();

测试连接.java

public class TestConnection extends AsyncTask<Void, Void, Boolean> {
    private Context mContext;
    private testConnInterface mListener;
    private FTPHelper ftpHelper = new FTPHelper();
    private String _address;
    private String _user;
    private String _pass;
    private int _port;
    ProgressDialog progressDialog;

    public interface testConnInterface {
        public void testConnection(boolean result);
    }

    public TestConnection(Context context, String address, String user,
            String pass, int port, testConnInterface mListener) {
        mContext = context;
        _address = address;
        _user = user;
        _pass = pass;
        _port = port;
        this.mListener = mListener;
    }

    // declare other objects as per your need
    @Override
    protected void onPreExecute() {
        progressDialog = ProgressDialog.show(mContext, "Please wait",
                "Attempting to connect", true);

        // do initialization of required objects objects here
    };

    @Override
    protected Boolean doInBackground(Void... params) {

        boolean status = ftpHelper.ftpConnect(_address, _user, _pass, _port);
        return status;
    }

    @Override
    protected void onPostExecute(Boolean result) {
        super.onPostExecute(result);
        if (mListener != null)
            mListener.testConnection(result);
        progressDialog.dismiss();
    };
}

FTPHelper.java

public class FTPHelper {
    public static FTPClient mFTPClient = null;

    public FTPHelper() {
        // TODO Auto-generated constructor stub
    }

    public boolean ftpConnect(String host, String username, String password,
            int port) {
        try {
            mFTPClient = new FTPClient();
            // connecting to the host
            mFTPClient.connect(host, port);

            // now check the reply code, if positive mean connection success
            if (FTPReply.isPositiveCompletion(mFTPClient.getReplyCode())) {
                // login using username & password
                boolean status = mFTPClient.login(username, password);

                /*
                 * Set File Transfer Mode
                 * 
                 * To avoid corruption issue you must specified a correct
                 * transfer mode, such as ASCII_FILE_TYPE, BINARY_FILE_TYPE,
                 * EBCDIC_FILE_TYPE .etc. Here, I use BINARY_FILE_TYPE for
                 * transferring text, image, and compressed files.
                 */
                mFTPClient.setFileType(FTP.BINARY_FILE_TYPE);
                mFTPClient.enterLocalPassiveMode();
                showServerReply(mFTPClient);

                return status;
            }
        } catch (Exception e) {
            // Log.d(TAG, "Error: could not connect to host " + host );
        }

        return false;
    }

    public boolean ftpDisconnect() {
        try {
            mFTPClient.logout();
            mFTPClient.disconnect();
            return true;
        } catch (Exception e) {
            // Log.d(TAG,
            // "Error occurred while disconnecting from ftp server.");
        }

        return false;
    }

    public String ftpGetCurrentWorkingDirectory() {
        try {
            String workingDir = mFTPClient.printWorkingDirectory();
            return workingDir;
        } catch (Exception e) {
            Log.i("Error working dir", e.toString());
        }

        return null;
    }

基本上我想知道如何将 getReplyCode() 返回到我的 Activity。

4

0 回答 0