Android Open Source - box-android-sdk-v2-master File List Activity






From Project

Back to project page box-android-sdk-v2-master.

License

The source code is released under:

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRI...

If you think the Android project box-android-sdk-v2-master listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.box.android.sample;
/*from  ww w.ja  v  a2  s.  c  o m*/
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

import org.apache.commons.lang.ObjectUtils.Null;

import android.app.Activity;
import android.app.ListActivity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;

import com.box.boxandroidlibv2.BoxAndroidClient;
import com.box.boxandroidlibv2.activities.FilePickerActivity;
import com.box.boxandroidlibv2.activities.FolderPickerActivity;
import com.box.boxandroidlibv2.activities.OAuthActivity;
import com.box.boxandroidlibv2.dao.BoxAndroidCollection;
import com.box.boxandroidlibv2.dao.BoxAndroidFile;
import com.box.boxandroidlibv2.dao.BoxAndroidFolder;
import com.box.boxandroidlibv2.dao.BoxAndroidOAuthData;
import com.box.boxjavalibv2.authorization.OAuthRefreshListener;
import com.box.boxjavalibv2.dao.BoxCollection;
import com.box.boxjavalibv2.dao.BoxFolder;
import com.box.boxjavalibv2.dao.BoxTypedObject;
import com.box.boxjavalibv2.exceptions.AuthFatalFailureException;
import com.box.boxjavalibv2.interfaces.IAuthData;
import com.box.boxjavalibv2.requests.requestobjects.BoxFileUploadRequestObject;
import com.box.restclientv2.exceptions.BoxSDKException;

public class FileListActivity extends ListActivity {

    private final static String TAG = "com.box.android.sample.FileListActivity";

    private FileListAdapter adapter;
    private String currentFolderId = "0";

    private final static int AUTHENTICATE_REQUEST = 0;
    private final static int PICK_FOLDER_REQUEST = 1;
    private final static int PICK_FILE_REQUEST = 2;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.file_list_activity);
        this.findViewById(R.id.btnUploadFile).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                uploadFile(v, currentFolderId);
            }
        });

        this.findViewById(R.id.btnDownloadFileViaPicker).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    startActivityForResult(FilePickerActivity.getLaunchIntent(v.getContext(), currentFolderId, (BoxAndroidOAuthData) getClient().getAuthData(),
                        BoxSDKSampleApplication.CLIENT_ID, BoxSDKSampleApplication.CLIENT_SECRET), PICK_FILE_REQUEST);
                }
                catch (AuthFatalFailureException e) {
                }
            }
        });

        this.findViewById(R.id.btnChangeFolderLocationViaPicker).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    startActivityForResult(FolderPickerActivity.getLaunchIntent(v.getContext(), currentFolderId, (BoxAndroidOAuthData) getClient()
                        .getAuthData(), BoxSDKSampleApplication.CLIENT_ID, BoxSDKSampleApplication.CLIENT_SECRET), PICK_FOLDER_REQUEST);
                }
                catch (AuthFatalFailureException e) {
                }
            }
        });

        startAuth();
    }

    /**
     * Get the result from OAuth activity, this either returns an error message or a parceled BoxAndroidClient.
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case AUTHENTICATE_REQUEST:
                if (resultCode == Activity.RESULT_CANCELED) {
                    String failMessage = data.getStringExtra(OAuthActivity.ERROR_MESSAGE);
                    Toast.makeText(this, "Auth fail:" + failMessage, Toast.LENGTH_LONG).show();
                    finish();
                }
                else {
                    BoxAndroidOAuthData oauth = data.getParcelableExtra(OAuthActivity.BOX_CLIENT_OAUTH);
                    BoxAndroidClient client = new BoxAndroidClient(BoxSDKSampleApplication.CLIENT_ID, BoxSDKSampleApplication.CLIENT_SECRET, null, null);
                    client.authenticate(oauth);
                    BoxSDKSampleApplication app = (BoxSDKSampleApplication) getApplication();
                    client.addOAuthRefreshListener(new OAuthRefreshListener() {

                        @Override
                        public void onRefresh(IAuthData newAuthData) {
                            // This is when oauth gets refreshed, once the token gets refreshed, both the old access token and refresh token will be
                            // invalidated.
                            // you should update the new auth tokens to your secure storage for future use.
                            Log.d("OAuth", "oauth refreshed, new oauth access token is:" + newAuthData.getAccessToken());
                        }

                    });
                    app.setClient(client);
                }

                onClientAuthenticated();
                break;
            case PICK_FOLDER_REQUEST:
                if (resultCode == Activity.RESULT_CANCELED) {
                    Toast.makeText(this, "No folder chosen", Toast.LENGTH_LONG).show();
                }
                else {
                    BoxAndroidFolder folder = data.getParcelableExtra(FolderPickerActivity.EXTRA_BOX_ANDROID_FOLDER);
                    navigateToFolder(folder.getId());
                }
                break;
            case PICK_FILE_REQUEST:
                if (resultCode == Activity.RESULT_CANCELED) {
                    Toast.makeText(this, "No file chosen", Toast.LENGTH_LONG).show();
                }
                else {
                    BoxAndroidFile file = data.getParcelableExtra(FilePickerActivity.EXTRA_BOX_ANDROID_FILE);
                    downloadFile(file);
                }
                break;

        }

    }

    @Override
    /**
     * Override the back button so that we go to the parent folder.
     */
    public void onBackPressed() {
        if (currentFolderId == "0") {
            super.onBackPressed();
        }
        Thread t = new Thread() {

            @Override
            public void run() {
                String parentFolderId;
                try {
                    BoxFolder parentFolder = getClient().getFoldersManager().getFolder(currentFolderId, null).getParent();
                    if (parentFolder == null) {
                        parentFolderId = "0";
                    }
                    else {
                        parentFolderId = parentFolder.getId();
                    }
                }
                catch (BoxSDKException e) {
                    Log.e(TAG, "An error occurred when getting a parent folder ID.", e);
                    return;
                }

                navigateToFolder(parentFolderId);
            }
        };
        t.start();

    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        BoxTypedObject object = (BoxTypedObject) this.getListAdapter().getItem(position);
        if (object instanceof BoxAndroidFile) {
            downloadFile((BoxAndroidFile) object);
        }
        else if (object instanceof BoxAndroidFolder) {
            navigateToFolder(((BoxAndroidFolder) object).getId());
        }
    }

    public void navigateToFolder(final String folderId) {
        new AsyncTask<Null, Void, BoxAndroidCollection>() {

            @Override
            protected BoxAndroidCollection doInBackground(Null... params) {
                try {
                    return (BoxAndroidCollection) getClient().getFoldersManager().getFolderItems(folderId, null);
                }
                catch (BoxSDKException e) {
                    Log.e(TAG, "An error occurred when getting the folder's children.", e);
                    return new BoxAndroidCollection();
                }
            }

            @Override
            protected void onPostExecute(BoxAndroidCollection result) {
                currentFolderId = folderId;
                ArrayList<BoxTypedObject> boxObjects = result.getEntries();
                adapter.clear();
                if (boxObjects != null) {
                    adapter.addAll(boxObjects);
                }
            }
        }.execute();
    }

    public void downloadFile(final BoxAndroidFile file) {
        Toast.makeText(FileListActivity.this, "Starting download..." + file.getName(), Toast.LENGTH_LONG).show();
        new AsyncTask<BoxAndroidFile, Void, Boolean>() {

            @Override
            protected Boolean doInBackground(BoxAndroidFile... arg0) {
                try {
                    File f = new File(getFilesDir(), file.getName());
                    getClient().getFilesManager().downloadFile(file.getId(), f, null, null);
                }
                catch (Exception e) {
                    Log.e(TAG, "An error occurred when downloading a file.", e);
                    return false;
                }

                return true;
            }

            @Override
            protected void onPostExecute(Boolean result) {
                if (result) {
                    Toast.makeText(FileListActivity.this, "Successfully downloaded " + file.getName() + ".", Toast.LENGTH_LONG).show();
                }
                else {
                    Toast.makeText(FileListActivity.this, "An error occurred when downloading.", Toast.LENGTH_LONG).show();
                }
            }

        }.execute(file);
    }

    public void uploadFile(View view, final String folderId) {
        Toast.makeText(FileListActivity.this, "Uploading \"Sample File.txt\"...", Toast.LENGTH_LONG).show();
        new AsyncTask<Null, Void, Boolean>() {

            @Override
            protected Boolean doInBackground(Null... params) {
                final File sampleFile;
                try {
                    sampleFile = File.createTempFile("Sample File", ".txt");
                    FileWriter fw = new FileWriter(sampleFile);
                    fw.write("This is a sample file created with the Box SDK.");
                    fw.close();
                }
                catch (IOException e) {
                    Log.e(TAG, "An error occurred when creating a sample upload file.", e);
                    return false;
                }

                try {
                    BoxFileUploadRequestObject upload = BoxFileUploadRequestObject.uploadFileRequestObject("0", "Sample File.txt", sampleFile, getClient()
                        .getJSONParser());
                    getClient().getFilesManager().uploadFile(upload);
                    Log.v(TAG, "Sample file successfully uploaded.");
                }
                catch (BoxSDKException e) {
                    Log.e(TAG, "An error occurred when uploading a sample file.", e);
                    return false;
                }
                catch (InterruptedException e) {
                    Log.e(TAG, "Interrupted.", e);
                    return false;
                }
                return true;
            }

            @Override
            protected void onPostExecute(Boolean result) {
                if (result) {
                    Toast.makeText(FileListActivity.this, "Successfully uploaded.", Toast.LENGTH_LONG).show();
                }
                else {
                    Toast.makeText(FileListActivity.this, "Failed to upload.", Toast.LENGTH_LONG).show();
                }
            }

        }.execute();
    }

    /**
     * Start OAuth flow.
     */
    private void startAuth() {
        Intent intent = OAuthActivity.createOAuthActivityIntent(this, BoxSDKSampleApplication.CLIENT_ID, BoxSDKSampleApplication.CLIENT_SECRET, false);
        startActivityForResult(intent, AUTHENTICATE_REQUEST);
    }

    /**
     * Once BoxAndroidClient is authenticated, we can start making api calls.
     */
    private void onClientAuthenticated() {

        AsyncTask<Null, Void, BoxCollection> task = new AsyncTask<Null, Void, BoxCollection>() {

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                Toast.makeText(FileListActivity.this, "Making api call.", Toast.LENGTH_LONG).show();
            }

            @Override
            protected BoxCollection doInBackground(Null... params) {
                try {
                    return getClient().getFoldersManager().getFolderItems(currentFolderId, null);
                }
                catch (BoxSDKException e) {
                    Toast.makeText(FileListActivity.this, "Fail making api call.", Toast.LENGTH_LONG).show();
                    return new BoxAndroidCollection();
                }
            }

            @Override
            protected void onPostExecute(BoxCollection items) {
                super.onPostExecute(items);
                ArrayList<BoxTypedObject> boxObjects = items.getEntries();
                adapter = new FileListAdapter(FileListActivity.this, boxObjects);
                setListAdapter(adapter);
            }

        };
        task.execute();
    }

    /**
     * Convenient method to get BoxAndroidClient.
     * 
     * @return BoxAndroidClient
     */
    private BoxAndroidClient getClient() {
        return ((BoxSDKSampleApplication) getApplication()).getClient();
    }
}




Java Source Code List

com.box.android.sample.BoxSDKSampleApplication.java
com.box.android.sample.FileListActivity.java
com.box.android.sample.FileListAdapter.java
com.box.androidlibv2.sample.oauth.OAuthActivity.java
com.box.androidlibv2.sample.oauth.OAuthSampleApplication.java
com.box.boxandroidlibv2.BoxAndroidClient.java
com.box.boxandroidlibv2.BoxAndroidConfig.java
com.box.boxandroidlibv2.activities.FilePickerActivity.java
com.box.boxandroidlibv2.activities.FolderNavigationActivity.java
com.box.boxandroidlibv2.activities.FolderPickerActivity.java
com.box.boxandroidlibv2.activities.OAuthActivity.java
com.box.boxandroidlibv2.adapters.BoxListItemAdapter.java
com.box.boxandroidlibv2.adapters.NavigationListAdapter.java
com.box.boxandroidlibv2.dao.BoxAndroidCollaboration.java
com.box.boxandroidlibv2.dao.BoxAndroidCollection.java
com.box.boxandroidlibv2.dao.BoxAndroidComment.java
com.box.boxandroidlibv2.dao.BoxAndroidEmailAlias.java
com.box.boxandroidlibv2.dao.BoxAndroidEmail.java
com.box.boxandroidlibv2.dao.BoxAndroidEnterprise.java
com.box.boxandroidlibv2.dao.BoxAndroidEventCollection.java
com.box.boxandroidlibv2.dao.BoxAndroidEvent.java
com.box.boxandroidlibv2.dao.BoxAndroidFileVersion.java
com.box.boxandroidlibv2.dao.BoxAndroidFile.java
com.box.boxandroidlibv2.dao.BoxAndroidFolder.java
com.box.boxandroidlibv2.dao.BoxAndroidGroupMembership.java
com.box.boxandroidlibv2.dao.BoxAndroidGroup.java
com.box.boxandroidlibv2.dao.BoxAndroidOAuthData.java
com.box.boxandroidlibv2.dao.BoxAndroidSharedLinkPermissions.java
com.box.boxandroidlibv2.dao.BoxAndroidSharedLink.java
com.box.boxandroidlibv2.dao.BoxAndroidUser.java
com.box.boxandroidlibv2.dao.BoxAndroidWebLink.java
com.box.boxandroidlibv2.dao.BoxParcel.java
com.box.boxandroidlibv2.exceptions.BoxAndroidLibException.java
com.box.boxandroidlibv2.exceptions.IBoxAndroidLibException.java
com.box.boxandroidlibv2.exceptions.UserTerminationException.java
com.box.boxandroidlibv2.jsonparsing.AndroidBoxResourceHub.java
com.box.boxandroidlibv2.manager.ThumbnailManager.java
com.box.boxandroidlibv2.viewdata.BoxListItem.java
com.box.boxandroidlibv2.viewdata.NavigationItem.java
com.box.boxandroidlibv2.viewlisteners.OAuthWebViewListener.java
com.box.boxandroidlibv2.viewlisteners.StringMessage.java
com.box.boxandroidlibv2.views.OAuthWebView.java
com.example.helloworld.HelloWorldApplication.java
com.example.helloworld.MainActivity.java