We are aware of the issue with the badge emails resending to everyone, we apologise for the inconvenience - learn more here.

Forum Discussion

MarioEM's avatar
MarioEM
Helpful | Level 6
8 years ago

simple Android example for APIv2 required

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. 

  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Staff rankDropbox Staff
    We don't have another Android example app, aside from the one you linked to.

    What issues are you running in to?
    • MarioEM's avatar
      MarioEM
      Helpful | Level 6

      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.

      • Greg-DB's avatar
        Greg-DB
        Icon for Dropbox Staff rankDropbox Staff
        The "EACCES Permission denied" error appears to be an Android error about a lack of permission to read/write the local data. That's not about Dropbox itself exactly, but it looks like you need to make sure you have write permissions, e.g., as covered here:

        https://stackoverflow.com/questions/8854359/exception-open-failed-eacces-permission-denied-on-android

        Also, the Android sample app only supports 19+, so you may need to change some of the for 14+. What exactly isn't working for you? That's again more about Android itself so I may not be able to offer much insight there unfortunately.

About Dropbox API Support & Feedback

Node avatar for Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

5,877 PostsLatest Activity: 12 months ago
325 Following

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!