4

メタデータリストを取得する方法を知っている人はいますか...つまり、Androidのドロップボックスのアプリフォルダーに存在するファイルとフォルダー。ファイルとフォルダーの名前を取得する必要があります。ここでも、android.iからドロップボックスのフォルダーを作成します。ドロップボックスのドキュメントを参照しましたが、その中に同じものは見つかりませんでした。事前に感謝します。

4

4 に答える 4

3

ここで私がしたこととそれは私にとってうまくいきます。

SavedProperties.selectedAddress作成するフォルダの名前を含む私のstatic変数です。

ここにいるよ

1)フォルダが存在するかどうかを確認します。

2)存在しない場合はフォルダを作成します。

3)そのフォルダにファイルをアップロードします。

    private void loadMetadata() 
    {


        // Metadata
        try 
        {
            Entry existingEntry = mApi.metadata("/" + SavedProperties.selectedAddress , 1, null, false, null);
            if(existingEntry.isDir)
            {
                Log.d(TAG, "Folder exists : " + existingEntry.fileName());
                uploadPictures("/"+SavedProperties.selectedAddress + "/");
            }
        } 
        catch (DropboxException  e) 
        {
            Log.d(TAG,"Folder does not exist..." + e.fillInStackTrace());
            try 
            {
                Entry createFolder = mApi.createFolder("/"+SavedProperties.selectedAddress);
                Log.d(TAG,"Folder created..." + createFolder.rev);
                uploadPictures("/"+SavedProperties.selectedAddress + "/");
            } 
            catch (DropboxException e1)
            {
                 Log.d(TAG,"Create Folder DropboxException : " + e1.fillInStackTrace() );
            }       
        }
    }

    private void uploadPictures(String uploadTo) 
    {
        // Uploading Pictures....
        FileInputStream inputStream = null;
        try 
        {
            for(int i =0 ; i < selectedImages.length; i++)
            {
                if(selectedImages[i]==0)
                {
                    String path = PictureGallery.images.get(i).toString().replace("file://", "");
                    String filename = PictureGallery.images.get(i).toString().split("/")[PictureGallery.images.get(i).toString().split("/").length-1];
                    File file = new File(path);
                    inputStream = new FileInputStream(file);
                    Entry newEntry = mApi.putFile(uploadTo + filename, inputStream, file.length(), null, null);
                    Log.i(TAG, "The uploaded file's rev is: " + newEntry.rev);
                    //Log.d(TAG,"PictureGallery " + PictureGallery.images.get(i).toString().split("/")[PictureGallery.images.get(i).toString().split("/").length-1]);
                }
            }
            progress.dismiss();
        } catch (DropboxUnlinkedException e) {
            // User has unlinked, ask them to link again here.
            Log.e(TAG, "User has unlinked.");
        } catch (DropboxException e) {
            Log.e(TAG, "Something went wrong while uploading.");
        } catch (FileNotFoundException e) {
            Log.e(TAG, "File not found.");
        } 
        finally {
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {}
            }
        }
    }

私の場合、androidsdk1.3.1を使用しました。

于 2012-06-07T12:57:04.487 に答える
2

私も同じ問題を抱えていましたが、それを見つけました。アクセスが完了したら、上記のように新しいエントリを作成しますが、パラメータ「booleanlist」をtrueに設定します。これを行った場合、Listはnullにならず、forループを使用して必要な情報を取得できます

AccessTokenPair access = getStoredKeys();
mDBApi.getSession().setAccessTokenPair(access);

try {
    // ----SET boolean list PARAMETER TO TRUE---------

    Entry dropboxDir = mDBApi.metadata("/YOUR_FOLDER_NAME/", 0, null, true, null);
    if (dropboxDir.isDir) {
        List<Entry> contents = dropboxDir.contents;
        if (contents != null) {
            // ------CREATE NEW ENTRY AND THEN, GET THE FILENAME OF
            // EVERY FILE
            for (int i = 0; i < contents.size(); i++) {
                Entry e = contents.get(i);
                String a = e.fileName();
                Log.d("dropbox", "FileName:" + a);
            }
        }
    }
    // ONLY A TEST CATCH, PLEASE DO WRIGHT EXCEPTION HANDLING HERE
} catch (Exception ex) {
    Log.d("dropbox", "ERROR");
}
于 2012-09-02T09:30:52.180 に答える
0
Entry entries = mApi.metadata(Path, 100, null, true, null);

for (Entry e : entries.contents) {
    if (!e.isDeleted) {
        Log.i("Is Folder",String.valueOf(e.isDir));
        Log.i("Item Name",e.fileName());
    }
}
于 2013-09-03T06:08:41.883 に答える
0

パスからすべてのファイルとフォルダを取得する場合は、このコードを使用すると役立ちます。

私は自分で解決策を得ました。

    String mPath="/";  //You can change the path here to specific FOLDER
Entry dirent = null;
 try 
   {
      dirent = mApi.metadata(mPath, 1000, null, true, null);            
    } 
 catch (DropboxException e)
   {
     System.out.println("Error Detail "+e.getMessage());
   }

//ループを実行し、PATHからすべてのファイルとフォルダを取得します

     for (Entry ent: dirent.contents)
     {
       String name = ent.fileName();                           
       System.out.println("My File in Folder "+name);                        
      }  
于 2014-04-13T14:22:13.977 に答える