Learn how to make the most out of the Dropbox Community here 💙.
Learn how to make the most out of the Dropbox Community here 💙.
I have implemented an Android code for Downloading / Uploading files to Dropbox App folder based on the old, simple DBRoulette example, which works perfectly well under Dropbox APIv1.
I have spent many hours trying to modify the "official" APIv2 example code from:
https://github.com/dropbox/dropbox-sdk-java/tree/master/examples/android
without much success.
Is there a simple example source code for APIv2, similar to DBRoulette example, that can be used to replace the old APIv1 implementation ?
Hello Greg,
That was a good suggestion with the link that included the appropriate tip!
I already had the correct Write and Read permissions in the AndroidManifest, but I forgot about the new Android rule introduced since version 23 that requires app users to manually accept the external write storage permission.
It is all working well now, both file Upload and Download.
Thanks for your help.
I had to modify the example Download code to obtain the required metadata for the specific Dropbox file:
protected FileMetadata doInBackground(String... params) { String fileName = params[0]; try { FileMetadata metadata = (FileMetadata) mDbxClient.files().getMetadata("/" + fileName);
Please comment if the above code is the correct way to do it.
Hello Greg,
I am having problems uploading the single selected file from a fixed Android folder called "em" to a Dropbox apps folder. I have implemented the code exactly as per example app: UploadFileTask.java
Here is the problem section of the code after some modifications:
@Override protected FileMetadata doInBackground(String... params) { String remoteFileName = params[0]; if (remoteFileName != null) { File outPath = Environment.getExternalStorageDirectory(); String remoteFolderPath = outPath.getAbsolutePath() + "/" + "em"; File localFile = new File(remoteFolderPath, remoteFileName); try (InputStream inputStream = new FileInputStream(localFile)) { return mDbxClient.files().uploadBuilder(remoteFolderPath + "/" + remoteFileName) .withMode(WriteMode.OVERWRITE) .uploadAndFinish(inputStream); } catch (DbxException | IOException e) { mException = e; } } return null; }
The remoteFolderPath string is "/storage/emulated/0/em" and the remoteFileName string is "EM.db"
The localFile is /storage/emulated/0/em/EM.db
The EM.db file does exist in that particular folder and the storage path is identical to the one generated in the APIv1 code, which worked perfectly well.
I am getting an error message: ..."/storage/emulated/0/em/EM.db: open failed: EACCES Permission denied"
I tried it with several different files and different folders without success. The same error al the time.
Can you see any problems with this code ?
Another issue: the above example code requires a minimum Android SdkVersion = 19. My app currently uses minimum SdkVersion = 14 which works well with the old APIv1 code:
fis = new FileInputStream(file);
mApi.putFileOverwrite(file, fis, file.length(),
etc. as per DBRoulete app. example.
Can you plese suggest how to resolve these issues and how to overcome Android SdkVersion restrictions.
Thanks.
If you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X or Facebook.
For more info on available support options for your Dropbox plan, see this article.
If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!