如何在谷歌驱动器的文件夹内创建文件? [英] How to create the file inside a folder in google drive?

查看:103
本文介绍了如何在谷歌驱动器的文件夹内创建文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在创建文件夹中的文件时遇到了问题,我在Google驱动器中创建了单独的文件和单独的文件夹,但是我无法在Google驱动器中的文件夹中创建文件

I am facing the issue in creating the file inside a folder , i created the separate file and separate folder in google drive but i can't create the file inside a folder in google drive

我已使用来在下面创建的Google驱动器中的文件夹内创建文件

I have used the for creating the file inside the folder in google drive is posted below

public void onClickFolderInRootFlder(View view)
{

    MetadataChangeSet changeSet = new MetadataChangeSet.Builder().setTitle("New CallLog folders").build();
    Drive.DriveApi.getRootFolder(mGoogleApiClient).createFolder(
            mGoogleApiClient, changeSet).setResultCallback(callback);
}

final ResultCallback<DriveFolder.DriveFolderResult> callback = new ResultCallback<DriveFolder.DriveFolderResult>() {
    @Override
    public void onResult(DriveFolder.DriveFolderResult result) {
        if (!result.getStatus().isSuccess()) {
            Toast.makeText(MainActivity.this,"Error while trying to create the folder",Toast.LENGTH_SHORT).show();
            return;
        }
        Toast.makeText(MainActivity.this,"Created a folder with content: " +
                result.getDriveFolder().getDriveId(),Toast.LENGTH_SHORT).show();
        Drive.DriveApi.fetchDriveId(mGoogleApiClient, String.valueOf(result.getDriveFolder().getDriveId()))
                .setResultCallback(idCallback);
    }
};

final private ResultCallback<DriveApi.DriveIdResult> idCallback = new ResultCallback<DriveApi.DriveIdResult>() {
    @Override
    public void onResult(DriveApi.DriveIdResult result) {
        if (!result.getStatus().isSuccess()) {
      //      showMessage("Cannot find DriveId. Are you authorized to view this file?");
            Toast.makeText(MainActivity.this,"Cannot find DriveId. Are you authorized to view this file?",Toast.LENGTH_SHORT).show();
            return;
        }
     DriveId   mFolderDriveId = result.getDriveId();
        Drive.DriveApi.newDriveContents(mGoogleApiClient)
                .setResultCallback(driveContentsCallback);
    }
};

final   ResultCallback<DriveApi.DriveContentsResult> driveContentsCallback =
        new ResultCallback<DriveApi.DriveContentsResult>() {
            @Override
            public void onResult(DriveApi.DriveContentsResult result) {
                if (!result.getStatus().isSuccess()) {
                    // display an error saying file can't be opened
                    return;
                }

                else{
                    CreateFileOnGoogleDrive(result);
                }
                // DriveContents object contains pointers
                // to the actual byte stream
                DriveContents contents = result.getDriveContents();
            }


        };


public void CreateFileOnGoogleDrive(DriveApi.DriveContentsResult result){

    final DriveContents driveContents = result.getDriveContents();

    // Perform I/O off the UI thread.
    new Thread() {
        @Override
        public void run() {
            // write content to DriveContents
            OutputStream outputStream = driveContents.getOutputStream();
            Writer writer = new OutputStreamWriter(outputStream);
            try {
                writer.write("Hello World");
                writer.close();

            } catch (IOException e) {
                Log.e(TAG, e.getMessage());
            }

            MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
                    .setTitle("prabha")
                    .setMimeType("text/plain")
                    .setStarred(true).build();

            // create a file in root folder
            Drive.DriveApi.getRootFolder(mGoogleApiClient)
                    .createFile(mGoogleApiClient, changeSet, driveContents).setResultCallback(fileCallback);
        }
    }.start();
}
final private ResultCallback<DriveFolder.DriveFileResult> fileCallback = new
        ResultCallback<DriveFolder.DriveFileResult>() {
            @Override
            public void onResult(DriveFolder.DriveFileResult result) {
                if (!result.getStatus().isSuccess()) {
                    Toast.makeText(MainActivity.this,"Error while trying to create the file",Toast.LENGTH_SHORT).show();
                    return;
                }
                Toast.makeText(MainActivity.this,"Created a file with content: " +
                        result.getDriveFile().getDriveId(),Toast.LENGTH_SHORT).show();
            }
        };

我尝试了这种方法,但问题出在行

I tried this method but the issue is occurring in the line

final private ResultCallback<DriveApi.DriveIdResult> idCallback = new ResultCallback<DriveApi.DriveIdResult>() {
    @Override
    public void onResult(DriveApi.DriveIdResult result) {
        if (!result.getStatus().isSuccess()) {
      //      showMessage("Cannot find DriveId. Are you authorized to view this file?");
            Toast.makeText(MainActivity.this,"Cannot find DriveId. Are you authorized to view this file?",Toast.LENGTH_SHORT).show();
            return;
        }
     DriveId   mFolderDriveId = result.getDriveId();
        Drive.DriveApi.newDriveContents(mGoogleApiClient)
                .setResultCallback(driveContentsCallback);
    }
};

result.getStatus.isSuccess为false正在返回.请帮助我如何在Google驱动器的文件夹内创建文件.

The result.getStatus.isSuccess is false is returning .Please help me how to create the file inside a folder in google drive.

推荐答案

您正在呼叫

Drive.DriveApi.getRootFolder(mGoogleApiClient).createFile

(毫不奇怪)在根文件夹中创建一个文件. 相反,您应该致电

which (unsurprisingly) creates a file in the Root Folder. Instead you should call

 DriveFolder.createFile 

查看全文

登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆