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