Android 如何在google drive的文件夹中创建文件?

Android 如何在google drive的文件夹中创建文件?,android,google-drive-api,google-drive-android-api,Android,Google Drive Api,Google Drive Android Api,我面临着在文件夹中创建文件的问题,我在google drive中创建了单独的文件和单独的文件夹,但我无法在google drive的文件夹中创建文件 我已经使用了创建文件夹内的文件在谷歌驱动器是张贴在下面 public void onClickFolderInRootFlder(View view) { MetadataChangeSet changeSet = new MetadataChangeSet.Builder().setTitle("New CallLog folders"

我面临着在文件夹中创建文件的问题,我在google drive中创建了单独的文件和单独的文件夹,但我无法在google drive的文件夹中创建文件

我已经使用了创建文件夹内的文件在谷歌驱动器是张贴在下面

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();
            }
        };
public void onClickFolderInRootFolder(视图)
{
MetadataChangeSet changeSet=新建MetadataChangeSet.Builder().setTitle(“新建调用日志文件夹”).build();
Drive.DriveApi.getRootFolder(mGoogleApiClient.createFolder)(
mgoogleapclient,changeSet).setResultCallback(回调);
}
final ResultCallback callback=new ResultCallback(){
@凌驾
public void onResult(DriveFolder.DriveFolderResult){
如果(!result.getStatus().issucess()){
Toast.makeText(MainActivity.this,“尝试创建文件夹时出错”,Toast.LENGTH_SHORT.show();
返回;
}
Toast.makeText(MainActivity.this,“创建了包含内容的文件夹:”+
result.getDriveFolder().getDriveId(),Toast.LENGTH_SHORT).show();
Drive.DriveApi.fetchDriveId(mGoogleApiClient,String.valueOf(result.getDriveFolder().getDriveId())
.setResultCallback(idCallback);
}
};
final private ResultCallback idCallback=new ResultCallback(){
@凌驾
public void onResult(DriveApi.DriveIdResult结果){
如果(!result.getStatus().issucess()){
//showMessage(“找不到DriveId。您有权查看此文件吗?”);
Toast.makeText(MainActivity.this,“找不到DriveId。您有权查看此文件吗?”,Toast.LENGTH\u SHORT.show();
返回;
}
DriveId mFolderDriveId=result.getDriveId();
Drive.DriveApi.newDriveContents(mgoogleapClient)
.setResultCallback(DriveContentScalBack);
}
};
最终结果回拨驱动器内容回拨=
新的ResultCallback(){
@凌驾
public void onResult(DriveApi.DriveContentsResult结果){
如果(!result.getStatus().issucess()){
//显示一个错误,说明无法打开文件
返回;
}
否则{
CreateFileOnGoogleDrive(结果);
}
//DriveContents对象包含指针
//到实际的字节流
DriveContents=result.getDriveContents();
}
};
public void CreateFileOnGoogleDrive(DriveApi.DriveContentsResult结果){
final DriveContents DriveContents=result.getDriveContents();
//在UI线程外执行I/O。
新线程(){
@凌驾
公开募捐{
//将内容写入驱动器内容
OutputStream OutputStream=driveContents.getOutputStream();
Writer Writer=新的OutputStreamWriter(outputStream);
试一试{
writer.write(“你好世界”);
writer.close();
}捕获(IOE异常){
Log.e(标记,e.getMessage());
}
MetadataChangeSet changeSet=新建MetadataChangeSet.Builder()
.setTitle(“prabha”)
.setMimeType(“文本/普通”)
.setStarred(true).build();
//在根文件夹中创建文件
Drive.DriveApi.getRootFolder(mgoogleAppClient)
.createFile(mgoogleapclient、changeSet、driveContents).setResultCallback(fileCallback);
}
}.start();
}
final private ResultCallback fileCallback=new
ResultCallback(){
@凌驾
public void onResult(DriveFolder.DriveFileResult){
如果(!result.getStatus().issucess()){
Toast.makeText(MainActivity.this,“尝试创建文件时出错”,Toast.LENGTH_SHORT.show();
返回;
}
Toast.makeText(MainActivity.this,“创建了包含内容的文件:”+
result.getDriveFile().getDriveId(),Toast.LENGTH_SHORT).show();
}
};
我尝试过这种方法,但问题正在发生

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 private ResultCallback idCallback=new ResultCallback(){
@凌驾
public void onResult(DriveApi.DriveIdResult结果){
如果(!result.getStatus().issucess()){
//showMessage(“找不到DriveId。您有权查看此文件吗?”);
Toast.makeText(MainActivity.this,“找不到DriveId。您有权查看此文件吗?”,Toast.LENGTH\u SHORT.show();
返回;
}
DriveId mFolderDriveId=result.getDriveId();
Drive.DriveApi.newDriveContents(mgoogleapClient)
.setResultCallback(DriveContentScalBack);
}
};
返回的result.getStatus.issucess为false。请帮助我如何在google drive的文件夹中创建文件。

您正在呼叫

Drive.DriveApi.getRootFolder(mGoogleApiClient).createFile
它(毫不奇怪)在根文件夹中创建了一个文件。 相反,你应该打电话

 DriveFolder.createFile 

所述,请在接受此答案后立即回答此问题,好吗。这就是StackOverflow的工作原理。