利用DropBox API实现在Android中上传下载文件到DropBox

What is Dropbox API?

Dropbox API is the Application Interface provided for android devices. This API allows your mobile app to store and sync files with Dropbox. This API facilitates your mobile app with its own private Dropbox. To implement Dropbox API successfully in your application. Follow the steps mentioned below.

Step 1 Authentic Process

Go to Url https://www.dropbox.com/developers/apps Complete the authentication process as shown below.

利用DropBox API实现在Android中上传下载文件到DropBox

Step 2 Create Custom App

After authentication click on Create app button for creating custom app

利用DropBox API实现在Android中上传下载文件到DropBox

Step 3 Select The Dropbox API

Select the Dropbox API app as shown below

利用DropBox API实现在Android中上传下载文件到DropBox

Step 4 Select Type of Data

Select the type of data needed in your app to store on Dropbox, here select Files and data stores

利用DropBox API实现在Android中上传下载文件到DropBox

Step 5 Set Privacy Statement

Set the privacy statement for your all, here select No for accessing files which are already on Dropbox

利用DropBox API实现在Android中上传下载文件到DropBox

Step 6 What Type of files does your app need access to?

Specify the type of files accessed by your app, here select all types of file which grants full Dropbox access.

 

利用DropBox API实现在Android中上传下载文件到DropBox

Step 7 Provide App Name

In the textbox type your application name, if that name is already registered then you cannot create with the same name. After inputting the desired name of your Dropbox app click on Create app button.

利用DropBox API实现在Android中上传下载文件到DropBox

Step 8 DashBoard

You will be redirected to your dashboard screen which contains all the useful parameters. You have to use that parameters in your app to access Dropbox account from your device. Here as shown in the figure below the App Key and App Secret provides unique key, which you have to pass in your application to access your Dropbox account form mobile devices. Note that In Permission type will be Full Dropbox access.

利用DropBox API实现在Android中上传下载文件到DropBox

Step 9 Dropbox SDK

To implement Dropbox API in your project, you are required to download SDK for Dropbox. You are required to download dropbox-android-sdk.jar and place this file in your Libs folder in your android project as shown below.

利用DropBox API实现在Android中上传下载文件到DropBox

Step 10 Dropbox Implementation

Step 10.1 Apply Secret Key

Implementation of Dropbox in your project. Apply DROPBOX_APP_KEY and DROPBOX_APP_SECRET as a constants and copy the values of both the constants from the created application previously shown in STEP 8

final static public String DROPBOX_APP_KEY = " Dropbox App Key here";
final static public String DROPBOX_APP_SECRET = " Dropbox App Secret";
 
final static public AccessType ACCESS_TYPE = AccessType.DROPBOX;

Step 10.2 Create Session

Create Session which allows your application to authenticate to Dropbox API.

private DropboxAPI mApi;

Add the below lines in "onCreate()" method.

AndroidAuthSession session = buildSession();
mApi = new DropboxAPI(session);

Method for creating session:

private AndroidAuthSession buildSession() {
AppKeyPair appKeyPair = new AppKeyPair(Constants.DROPBOX_APP_KEY,
Constants.DROPBOX_APP_SECRET);
AndroidAuthSession session;
 
String[] stored = getKeys();
if (stored != null) {
AccessTokenPair accessToken = new AccessTokenPair(stored[0],
stored[1]);
session = new AndroidAuthSession(appKeyPair, Constants.ACCESS_TYPE,
accessToken);
} else {
session = new AndroidAuthSession(appKeyPair, Constants.ACCESS_TYPE);
}
 
return session;
}

Step 10.3 AndroidManifest.xml file

Changes in the "AndroidManifest.xml" file

<activity
            android:name="com.dropbox.client2.android.AuthActivity"
            android:configChanges="orientation|keyboard"
            android:launchMode="singleTask"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Light.NoTitleBar" >
            <intent-filter>
 
                <!-- Change this to be db- followed by your app key -->
                <data android:scheme="db-n81vuqu3mfexf6i" />
 
                <action android:name="android.intent.action.VIEW" />
 
                <category android:name="android.intent.category.BROWSABLE" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
      </activity>

 

Note: In the above "AndroidManifest.xml" file there is a line of android:scheme, which contains the key. You are required to change the key value of your application which you will found form Step 8

Step 10.4 startAuthentication

Apply the code below in "onActivityResult()" method to complete the authentication process. mApi.getSession().startAuthentication(Main.this)

onResume = true;
@Override
protected void onResume() {
 
AndroidAuthSession session = mApi.getSession();
 
if (session.authenticationSuccessful()) {
try {
session.finishAuthentication();
 
TokenPair tokens = session.getAccessTokenPair();
storeKeys(tokens.key, tokens.secret);
setLoggedIn(onResume);
} catch (IllegalStateException e) {
showToast("Couldn't authenticate with Dropbox:"
+ e.getLocalizedMessage());
}
}
super.onResume();
}
 
private void storeKeys(String key, String secret) {
SharedPreferences prefs = getSharedPreferences(
Constants.ACCOUNT_PREFS_NAME, 0);
Editor edit = prefs.edit();
edit.putString(Constants.ACCESS_KEY_NAME, key);
edit.putString(Constants.ACCESS_SECRET_NAME, secret);
edit.commit();
}

Step 10.5 Upload file

Code to upload file in Dropbox after authentication:

public void setLoggedIn(boolean loggedIn) {
mLoggedIn = loggedIn;
if (loggedIn) {
UploadFile upload = new UploadFile(Main.this, mApi, DIR, f);
upload.execute();
onResume = false;
 
}
}

Step 10.6 What is DIR?

DIR is the name of directory of Dropbox where you can upload your files and folders of specified directory. F: ‘f’ parameter in UploadFile() is a file object which you want to upload in Dropbox.

Step 10.7 Get All Files and Folders from Dropbox.

To get all files and folders of Dropbox, use below code:

com.dropbox.client2.DropboxAPI.Entry dirent = mApi.metadata(DIR, 1000, null, true, null);
files = new ArrayList<com.dropbox.client2.DropboxAPI.Entry>();
dir = new ArrayList<String>();
for (com.dropbox.client2.DropboxAPI.Entry ent : dirent.contents) {
files.add(ent);
dir.add(new String(files.get(i++).path));
}

Step 10.8 Download Files from Dropbox

Code to download files from Dropbox after authentication:

private boolean downloadDropboxFile(Entry fileSelected) {
File dir = new File(Utils.getPath());
if (!dir.exists())
dir.mkdirs();
try {
File localFile = new File(dir + "/" + fileSelected.fileName());
 
 
if (!localFile.exists()) {
localFile.createNewFile();
copy(fileSelected, localFile);
 
} else {
showFileExitsDialog(fileSelected, localFile);
}
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
 
 
private void copy(final Entry fileSelected, final File localFile) {
final ProgressDialog pd = ProgressDialog.show(DropboxDownload.this,
"Downloading...", "Please wait...");
new Thread(new Runnable() {
 
@Override
public void run() {
BufferedInputStream br = null;
BufferedOutputStream bw = null;
DropboxInputStream fd;
try {
fd = mApi.getFileStream(fileSelected.path,
localFile.getPath());
br = new BufferedInputStream(fd);
bw = new BufferedOutputStream(new FileOutputStream(
localFile));
 
byte[] buffer = new byte[4096];
int read;
while (true) {
read = br.read(buffer);
if (read <= 0) {
break;
}
bw.write(buffer, 0, read);
}
pd.dismiss();
} catch (DropboxException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bw != null) {
try {
bw.close();
if (br != null) {
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
 
}
}
}). start();
 
}

完整代码下载

转载原文地址:http://www.theappguruz.com/blog/10-steps-integrate-dropbox-api-android

 

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: