获取Android应用程序中的文件夹,该文件夹不是通过此应用程序创建的

获取Android应用程序中的文件夹,该文件夹不是通过此应用程序创建的,android,google-drive-api,google-drive-android-api,Android,Google Drive Api,Google Drive Android Api,有谷歌驱动器帐户的文件夹和文件。我想做一个android应用程序来添加和获取文件。类很有用,但它只能通过应用程序生成数据 Android驱动器API仅适用于此范围。这意味着查询只能匹配用户使用应用程序打开或创建的文件 请提供帮助,我如何将文件添加到早期通过webinterface创建的任何文件夹中 不要使用最新的谷歌API,它几周前刚刚发布。它目前只适用于drive.file范围,还没有实现许多功能(例如设置多个父级),根据我的经验,它还包含一些需要修复的错误 com.google.androi

有谷歌驱动器帐户的文件夹和文件。我想做一个android应用程序来添加和获取文件。类很有用,但它只能通过应用程序生成数据

Android驱动器API仅适用于此范围。这意味着查询只能匹配用户使用应用程序打开或创建的文件


请提供帮助,我如何将文件添加到早期通过webinterface创建的任何文件夹中

不要使用最新的谷歌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) {
       ....
     }
com.google.api.services.drive.drive
试一试{
列表范围=新的ArrayList();
作用域。添加(“https://www.googleapis.com/auth/drive.appdata");
添加(DriveScopes.DRIVE);
GoogleAccountCredential credential=GoogleAccountCredential.usingAuth2(m_上下文,作用域);
凭证.setSelectedAccountName(m_account.name);
//Get token无法从主线程运行;
//马上去拿个代币看看我们是否被授权了
token=credential.getToken();
if(标记==null){
Log.e(标记“令牌为空”);
}否则{
Log.i(标记“GDrive token:+token”);
g_drive=新建驱动器.Builder(
AndroidHttp.newCompatibleTransport(),
新建GsonFactory(),凭证).build();
}捕获(UserRecoverableAuthe异常){
....
}

除非您真的需要,否则您希望避免使用全驱动器作用域。用户更希望您的应用具有较小的作用域,因为这样可以更容易地信任您的数据。有几种方法可以完成大多数文件夹使用情况,同时仍然只需要文件作用域:

使用可让用户选择要将文件添加到的文件夹

可以通过将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应用程序,只需对这两个应用程序使用相同的开发人员控制台条目,您应该已经有权访问该文件夹。

好的,谢谢,那么我在哪里可以获得有关此API的教程?我找不到如何使用GoogleAccountCredentialI,但很遗憾,没有看到一个很好的指南。Google已经将它的API迁移到了新的API;最接近使用“serivices”API的是普通的java指南。主要的区别在于调用credential.getToken()时,如果失败,googlePlayServices将返回一个异常,该异常包含应用程序可以捕获并运行的意图,以提示用户授予您权限。顺便说一句,新版本还具有google帐户凭据。它的版本不同,但几乎相同--我注意到的主要区别是它返回“UserRecoverableAuthIOException”-注意“IO”;嗨,Cheryl,我们的情况完全不同。我们打算为用户提供私有/个人云存储。我们存储的数据是由不同的应用程序(桌面应用程序、移动应用程序等)生成的。因此,如果我们使用drive.file,我们的移动应用程序将无法访问桌面应用程序上载的数据。目前,Java drive SDK(具有驱动范围)很好地为我们服务,但不是Google Play服务提供的API(它只有drive.file作用域)。我想知道,谷歌团队是否打算为谷歌Play服务扩展范围以驱动范围?谢谢。你的应用程序的移动版和桌面版应该共享相同的应用程序id,从而能够共享对彼此创建的文件的访问。只需在云控制台中使用一个条目即可。