拥有包含文件夹和文件的Google云端硬盘帐户。我想制作Android应用程序,用于添加和发送文件到那里。类QUERY很有用,但它可以仅与应用程序一起使用数据
Android Drive API仅适用于https://www.googleapis.com/auth/drive.file范围。这意味着只有用户使用您的应用程序打开或创建的文件才能与查询匹配。
请帮助,我怎样才能将文件添加到通过webinterface早期创建的任何文件夹中?
答案 0 :(得分:3)
除非确实需要,否则您希望避免使用完整的驱动器范围。用户更喜欢您的应用具有更窄的范围,因为它更容易信任您的数据。有几种方法可以完成大多数文件夹用例,同时仍然只需要文件范围:
使用OpenFileActivity让用户选择他们希望将文件添加到的文件夹。
您可以通过将OpenFileActivityBuilder配置为仅显示文件夹mimetypes来执行此操作。
IntentSender intent = driveApi.newOpenFileActivityBuilder()
.setActivityTitle("Pick a destination folder")
.setMimeType(new String[] { DriveFolder.MIME_TYPE } })
.build();
startIntentSenderForResult(intent, REQUEST_CODE, null, 0, 0, 0);
或者,如果您有一个创建该文件夹的相应Web应用程序,只需为这两个应用程序使用相同的开发人员控制台条目,您就应该可以访问该文件夹了。
答案 1 :(得分:1)
不要使用最新的谷歌API,它刚刚在几周前发布。它目前只适用于drive.file范围,尚未实现许多功能(例如设置多个父项),根据我的经验,它还包含一些需要修复的错误。
com.google.android.gms.common.api.GoogleApiClient
请改用此API:
com.google.api.services.drive.Drive
try {
List<String> scopes = new ArrayList<String>();
scopes.add("https://www.googleapis.com/auth/drive.appdata");
scopes.add(DriveScopes.DRIVE);
GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(m_context, scopes);
credential.setSelectedAccountName(m_account.name);
//Get token cannot be run from the main thread;
//Trying to get a token right away to see if we are authorized
token = credential.getToken();
if(token == null){
Log.e(TAG, "token is null");
}else{
Log.i(TAG, "GDrive token: " + token);
g_drive = new Drive.Builder(
AndroidHttp.newCompatibleTransport(),
new GsonFactory(), credential).build();
} catch ( UserRecoverableAuthException e) {
....
}