This tutorial is about Downloading/Uploading files from/to Dropbox using DropboxApi Android.
Firstly create your App key and App Secret key to use this api from below link.
Dropbox App Console : https://www.dropbox.com/developers-v1/apps
Include the below jars files from the downloaded Dropbox Sdk :
1. dropbox-android-sdk-1.6.3.jar
2. json_simple-1.1.jar
1. MainActivity.java
Find the source from Github : https://github.com/CammyKamal/BlogTutorials/tree/master/DropBoxDemoApi
Firstly create your App key and App Secret key to use this api from below link.
Dropbox App Console : https://www.dropbox.com/developers-v1/apps
Include the below jars files from the downloaded Dropbox Sdk :
1. dropbox-android-sdk-1.6.3.jar
2. json_simple-1.1.jar
1. MainActivity.java
public class MainActivity extends AppCompatActivity {
//path of the file to be uploaded here
String path= Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/photo.jpg";
final static private String APP_KEY = "";
final static private String APP_SECRET = "";
private DropboxAPI<AndroidAuthSession> mDBApi;
DropboxAPI.Entry response;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/**
* i am using this mode . you can use the Async task to upload and download file
*/
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
setContentView(R.layout.activity_main);
//Generate dropbox session from the generated keys
AppKeyPair appKeys = new AppKeyPair(APP_KEY, APP_SECRET);
AndroidAuthSession session = new AndroidAuthSession(appKeys);
mDBApi = new DropboxAPI<AndroidAuthSession>(session);
//Check if user has already authorized the dropbox app for you..
if(!getAccessToken().equalsIgnoreCase("")){
mDBApi.getSession().setOAuth2AccessToken(getAccessToken());
}else{
//if not authorized. i.e for the first time then
mDBApi = new DropboxAPI<AndroidAuthSession>(session);
mDBApi.getSession().startOAuth2Authentication(MainActivity.this);
}
((Button) findViewById(R.id.uploaddata)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
uploadFile(path);
}
});
((Button) findViewById(R.id.downloadfile)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
downloadFile(Environment.getExternalStorageDirectory()
.getAbsolutePath());
}
});
}
protected void onResume() {
super.onResume();
//if first time and save the Access Token here
if(getAccessToken().equalsIgnoreCase("")) {
if (mDBApi.getSession().authenticationSuccessful()) {
try {
// Required to complete auth, sets the access token on the session
mDBApi.getSession().finishAuthentication();
String accessToken = mDBApi.getSession().getOAuth2AccessToken();
saveAccessToken(accessToken);
} catch (IllegalStateException e) {
Log.i("Error", "Error authenticating", e);
}
}
}
}
private void saveAccessToken(String accessToken){
SharedPreferences sharedPreferences=getSharedPreferences("Prefs", Context.MODE_PRIVATE);
sharedPreferences.edit().putString("accessToken", accessToken).commit();
}
private String getAccessToken(){
SharedPreferences sharedPreferences=getSharedPreferences("Prefs", Context.MODE_PRIVATE);
return sharedPreferences.getString("accessToken","");
}
public void uploadFile(String file_path) {
File file = new File(file_path);
FileInputStream inputStream = null;
try {
inputStream = new FileInputStream(file);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
response = mDBApi.putFile("/photo.jpg", inputStream,
file.length(), null, null);
if(response.rev!=null){
Toast.makeText(this,"File Uploaded successfully..",Toast.LENGTH_LONG).show();
}
Log.i("Success", "The uploaded file's rev is: " + response.rev);
} catch (DropboxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void downloadFile(String file_path) {
//Path where you want to stored the downloaded file form dropbox
File file = new File(file_path+"/testphoto.jpg");
FileOutputStream outputStream = null;
try {
outputStream = new FileOutputStream(file);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DropboxAPI.DropboxFileInfo info = null;
try {
info = mDBApi.getFile("/photo.jpg", null, outputStream, null);
if(info.getMetadata().rev!=null){
Toast.makeText(this,"File Downloaded successfully..",Toast.LENGTH_LONG).show();
}
Log.i("Success", "The file's rev is: "
+ info.getMetadata().rev);
} catch (DropboxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2. Manifest.xml<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.kamal.dropboxdemoapi" > <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.dropbox.client2.android.AuthActivity" android:launchMode="singleTask" android:configChanges="orientation|keyboard"> <intent-filter> <!-- Change this to be db- followed by your app key --> <data android:scheme="db-Your App key here" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Find the source from Github : https://github.com/CammyKamal/BlogTutorials/tree/master/DropBoxDemoApi
No comments:
Post a Comment