我正在开发一个使用 Dropbox Core SDK v3.0.3 的 Android 应用程序。 在尝试与其他成员共享文件夹时,我不断收到错误消息。该代码正在以指定的名称创建一个新的共享文件夹,但不添加任何成员。
这是我的代码:
List<AddMember> list = new ArrayList<AddMember>();
AddMember newMember = new AddMember(MemberSelector.email(clerkDbId), AccessLevel.EDITOR);
list.add(newMember);
ShareFolderLaunch sfl = dbxClient.sharing().shareFolder("/" + clerkName);
dbxClient.sharing().addFolderMember(sfl.getCompleteValue().toString(), list); //I am getting error here.
clerkName:共享文件夹的名称
clerkDbId:我想要将上述文件夹共享到的 Dropbox ID
我尝试将第一行更改为:
ArrayList<AddMember> list = new ArrayList<>();
我仍然遇到同样的错误。这是我收到的错误:
String 'sharedFolderId' does not match pattern java.lang.IllegalArgumentException: String 'sharedFolderId' does not match pattern at com.dropbox.core.v2.sharing.AddFolderMemberArg.(AddFolderMemberArg.java:50) at com.dropbox.core.v2.sharing.AddFolderMemberArg.(AddFolderMemberArg.java:86) at com.dropbox.core.v2.sharing.DbxUserSharingRequests.addFolderMember(DbxUserSharingRequests.java:154) at com.dbapp.ashworth.adminapp.FilesActivity$3$1.doInBackground(FilesActivity.java:126) at com.dbapp.ashworth.adminapp.FilesActivity$3$1.doInBackground(FilesActivity.java:115) at android.os.AsyncTask$2.call(AsyncTask.java:295) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818)
谁能告诉我我在这里做错了什么?
最佳答案
错误消息表明您正在传递给 addFolderMember
的 sharedFolderId
参数值似乎不是有效的共享文件夹 ID。
您正在传递整个 SharedFolderMetadata
(作为字符串)。您应该只获取共享文件夹 ID,如下所示:
sfl.getCompleteValue().getSharedFolderId();
顺便说一句,当调用shareFolder
时,不保证您立即获得完整的信息。您应该使用 ShareFolderLaunch.isComplete
/ShareFolderLaunch.isAsyncJobId
检查您返回的内容。 shareFolder documentation
中有更多信息
关于java - 使用 Dropbox API 共享文件夹时出现模式不匹配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46004262/