在Android应用中获取未通过该应用创建的文件夹

3
拥有Google Drive帐户及其文件夹和文件。我想要创建一个安卓应用程序,以添加和获取文件。虽然QUERY类很有用,但它只能处理应用程序生成的数据。
引用如下: Android Drive API仅适用于https://www.googleapis.com/auth/drive.file范围。这意味着只有用户使用您的应用程序打开或创建的文件才能被查询匹配。
请问如何将文件添加到之前通过Web界面创建的任何文件夹中?
2个回答

3
您希望避免使用完整的驱动器范围,除非您确实需要它。用户更喜欢您的应用程序具有较窄的范围,因为这使得他们更容易信任您的数据。有几种方法可以在仅需要文件范围的情况下完成大多数文件夹用例:
使用OpenFileActivity让用户选择要将文件添加到的文件夹。
您可以通过配置OpenFileActivityBuilder仅显示文件夹MIME类型来实现此操作。
 IntentSender intent = driveApi.newOpenFileActivityBuilder()
    .setActivityTitle("Pick a destination folder")
    .setMimeType(new String[] { DriveFolder.MIME_TYPE } })
    .build();
 startIntentSenderForResult(intent, REQUEST_CODE, null, 0, 0, 0);

或者,如果您有一个相应的网络应用程序创建了文件夹,只需为两个应用程序使用相同的开发人员控制台条目,您就应该已经可以访问该文件夹。


1
嗨 Cheryl,我们的情况有些不同。我们打算为用户提供私人/个人云存储。我们存储的数据由不同的应用程序(桌面应用程序、移动应用程序等)生成。因此,如果我们使用drive.file,我们的移动应用程序将无法访问桌面应用程序上传的数据。目前,Java Drive SDK(它具有驱动器范围)为我们服务良好,但Google Play服务提供的API(它只有drive.file范围)不行。我想知道,Google团队是否有意扩展到驱动器范围,适用于Google Play服务?谢谢。 - Cheok Yan Cheng
您的移动设备和桌面版本应该共享相同的应用程序ID,因此能够共享彼此创建的文件访问权限。只需在云控制台中使用一个条目即可。 - Cheryl Simon

1
不要使用最新的google 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) {
       ....
     }

好的,谢谢。那么我在哪里可以找到关于这个API的教程呢?我找不到如何使用GoogleAccountCredential的方法。 - Werder
我搜索了一下,但很遗憾没有找到一个好的指南。Google已经将其android指南移动到新的API上;使用“services”API最接近的是常规的Java指南在这里。主要区别在于当您调用credential.getToken()并失败时,googlePlayServices会返回一个包含意图的异常,您的应用程序可以捕获并运行以提示用户授予权限。 - NameSpace
顺便提一下,新的Android指南也有Google账户凭据。虽然是不同的版本,但几乎相同--我注意到的主要区别是它返回一个"UserRecoverableAuthIOException"--请注意"I O"。 - NameSpace

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接