6

我想将Google Drive与我的应用程序集成我已经在Google Developers Console中注册了我的应用程序。我从https://github.com/googledrive/android-demos得到了一个样本。通过这个我可以在Google驱动器的根文件夹中创建一个文件,但问题是我无法在现有文件夹中创建文件或文件夹。在这种情况下,我得到了一杯烤面包“找不到DriveId,您有权查看此文件吗?”即我无法获得驱动器ID在Google Drive中创建文件夹内的文件夹android

public class CreateFolderInFolderActivity extends BaseDemoActivity { 

@Override 
public void onConnected(Bundle connectionHint) { 
    super.onConnected(connectionHint); 
    Drive.DriveApi.fetchDriveId(getGoogleApiClient(), EXISTING_FOLDER_ID) 
      .setResultCallback(idCallback); 
} 

final ResultCallback<DriveIdResult> idCallback = new ResultCallback<DriveIdResult>() { 
    @Override 
    public void onResult(DriveIdResult result) { 
     if (!result.getStatus().isSuccess()) { 
      showMessage(result.getStatus().toString()); 
      showMessage("Cannot find DriveId. Are you authorized to view this file?"); 
      return; 
     } 
     DriveFolder folder = Drive.DriveApi 
       .getFolder(getGoogleApiClient(), result.getDriveId()); 
     MetadataChangeSet changeSet = new MetadataChangeSet.Builder() 
       .setTitle("MyNewFolder").build(); 
     folder.createFolder(getGoogleApiClient(), changeSet) 
       .setResultCallback(createFolderCallback); 
    } 
}; 

final ResultCallback<DriveFolderResult> createFolderCallback = new 
     ResultCallback<DriveFolderResult>() { 

    @Override 
    public void onResult(DriveFolderResult result) { 
     if (!result.getStatus().isSuccess()) { 
      showMessage("Problem while trying to create a folder"); 
      return; 
     } 
     showMessage("Folder successfully created"); 
    } 
}; 
} 

我找不到任何适当的文档。 Plz帮助我在哪里出错或是否需要包含任何其他权限

回答

1

什么是EXISTING_FOLDER_ID?如果您试图直接运行样本而不进行任何更改,则此操作无效。

您需要将EXISTING_FOLDER_ID更改为应用有权访问的文件夹的资源ID。这可能是您的应用程序在根中创建的文件夹。

+0

是的,我所做的EXISTING_FOLDER_ID动态与驱动器Id的文件夹的值,我创造,但我得到的时候idCallback函数被调用 –

4

您可以在这里看一下:在'createTree()'方法中,文件夹内创建了一个文件夹。

有新的谷歌云端硬盘Android API 3个不同的驱动器ID实体(GDAA)

  1. 型驱动器Id的对象 - 你的方法获取和在你的代码
  2. 一个字符串使用一个从encodeToString得到(),并传递给decodeFromString() - 用于在应用程序中保存(缓存实例)
  3. 字符串你从getResourceId()获取和传递到fetchDriveId() - 您在文件的html地址中看到的那个。

2和3标识符都是字符串,所以它们可能会混淆。标识符2在检索驱动器ID时(通过decodeFromString())速度更快。标识符3检索速度较慢(通过fetchDriveId()),但如果您需要将其他标识符(例如Apps Script)用于其他标识符,则该标识符有用。

另请参阅:SO 21800257

+0

我可以说__public静态最后弦乐EXISTING_FOLDER_ID =网络错误” CAESABjACiCShczj8lI =“; __ – Nabin

+0

我在创建文件夹时复制了该文件夹的ID – Nabin

+0

@seanpj链接已损坏。 – nasch

0

首先使用creatreeTree文件夹()

然后运行搜索查询,以获得创建的ID public static ArrayList<ContentValues> search(String prnId, String titl, String mime) { ArrayList<ContentValues> gfs = new ArrayList<>(); if (mGOOSvc != null && mConnected) try { // add query conditions, build query String qryClause = "'me' in owners and "; if (prnId != null) qryClause += "'" + prnId + "' in parents and "; if (titl != null) qryClause += "title = '" + titl + "' and "; if (mime != null) qryClause += "mimeType = '" + mime + "' and "; qryClause = qryClause.substring(0, qryClause.length() - " and ".length()); Drive.Files.List qry = mGOOSvc.files().list().setQ(qryClause) .setFields("items(id,mimeType,labels/trashed,title),nextPageToken"); String npTok = null; if (qry != null) do { FileList gLst = qry.execute(); if (gLst != null) { for (File gFl : gLst.getItems()) { if (gFl.getLabels().getTrashed()) continue; gfs.add(UT.newCVs(gFl.getTitle(), gFl.getId(), gFl.getMimeType())); } //else UT.lg("failed " + gFl.getTitle()); npTok = gLst.getNextPageToken(); qry.setPageToken(npTok); } } while (npTok != null && npTok.length() > 0); //UT.lg("found " + vlss.size()); } catch (Exception e) { UT.le(e); } return gfs; }

,当你的文件夹ID使用此代码来创建文件夹在文件夹`公共静态ParentReference insertFileIntoFolder(驱动器服务,字符串folderId, 字符串文件夹名称)抛出IOException异常{

// Log.e( “founddd”,ID); File fileMetadata = new File(); ();}};}};}}} fileImagePolumn(Collection.singletonList(new ParentReference().setId(folderId == null?“root”:folderId))); fileMetadata.setTitle(folderName); fileMetadata.setMimeType(“application/vnd.google-apps。文件夹“);

 File file = mGOOSvc.files().insert(fileMetadata).execute(); 

     System.out.println("Folder ID: " + file.getId()); 
     strChildFolder = file.getId(); 




    return null; 
}` 
相关问题