我的應用有能力將角色表保存到Google雲端硬盤。它會在該用戶的Google Drive的根目錄下創建一個名爲「SWChars」的文件夾,然後將文件保存到該文件夾中。每個文件等於一個字符。當下面的內容運行時,它只能找到它創建的文件夾。如果你想要更多的情況下,你可以在GithubGoogle雲端硬盤無法找到文件夾或文件
找到完整的源代碼在GoogleApiClient的onConnected方法完成以下事項:
public static void connect(final Activity main){
final DriveFolder root = Drive.DriveApi.getRootFolder(((SWrpg)main.getApplication()).gac);
root.queryChildren(((SWrpg)main.getApplication()).gac,new Query.Builder()
.addFilter(Filters.eq(SearchableField.TITLE,"SWChars")).build())
.setResultCallback(new ResultCallback<DriveApi.MetadataBufferResult>() {
@Override
public void onResult(@NonNull final DriveApi.MetadataBufferResult metBufRes) {
if(metBufRes.getStatus().isSuccess()){
final MetadataBuffer metBuf = metBufRes.getMetadataBuffer();
final DriveFolder[] charsFold = {null};
System.out.println("Root List Size: "+String.valueOf(metBuf.getCount()));
for(Metadata met:metBuf){
if(met.isFolder() && !met.isTrashed()){
charsFold[0] = met.getDriveId().asDriveFolder();
break;
}
}
metBuf.release();
if(charsFold[0] ==null){
System.out.println("Creating Chars Folder");
root.createFolder(((SWrpg)main.getApplication()).gac,
new MetadataChangeSet.Builder().setTitle("SWChars").build())
.setResultCallback(new ResultCallback<DriveFolder.DriveFolderResult>() {
@Override
public void onResult(@NonNull DriveFolder.DriveFolderResult driveFolderResult) {
if(driveFolderResult.getStatus().isSuccess()){
charsFold[0] = driveFolderResult.getDriveFolder();
charsFold[0].queryChildren(((SWrpg)main.getApplication()).gac,new Query.Builder()
.addFilter(Filters.eq(SearchableField.TITLE,"SWShips")).build())
.setResultCallback(new ResultCallback<DriveApi.MetadataBufferResult>() {
@Override
public void onResult(@NonNull DriveApi.MetadataBufferResult metadataBufferResult) {
if(metadataBufferResult.getStatus().isSuccess()) {
MetadataBuffer metBuffer = metadataBufferResult.getMetadataBuffer();
final DriveFolder[] shipFold = {null};
for (Metadata met:metBuffer){
if(met.isFolder()&&!met.isTrashed()){
shipFold[0] = met.getDriveId().asDriveFolder();
break;
}
}
metBuf.release();
if(shipFold[0] ==null){
charsFold[0].createFolder(((SWrpg)main.getApplication()).gac,
new MetadataChangeSet.Builder().setTitle("SWShips").build())
.setResultCallback(new ResultCallback<DriveFolder.DriveFolderResult>() {
@Override
public void onResult(@NonNull DriveFolder.DriveFolderResult driveFolderResult) {
if(driveFolderResult.getStatus().isSuccess()){
shipFold[0] = driveFolderResult.getDriveFolder();
((SWrpg)main.getApplication()).charsFold = charsFold[0];
((SWrpg)main.getApplication()).vehicFold = shipFold[0];
System.out.println("Done");
}
}
});
}
}
metadataBufferResult.release();
}
});
}
}
});
}else{
charsFold[0].queryChildren(((SWrpg)main.getApplication()).gac,new Query.Builder()
.addFilter(Filters.eq(SearchableField.TITLE,"SWShips")).build())
.setResultCallback(new ResultCallback<DriveApi.MetadataBufferResult>() {
@Override
public void onResult(@NonNull DriveApi.MetadataBufferResult metadataBufferResult) {
if(metadataBufferResult.getStatus().isSuccess()){
MetadataBuffer mets = metadataBufferResult.getMetadataBuffer();
DriveFolder vehic = null;
for (Metadata met:mets){
if(met.isFolder()&&!met.isTrashed()){
vehic = met.getDriveId().asDriveFolder();
break;
}
}
mets.release();
if(vehic == null){
charsFold[0].createFolder(((SWrpg)main.getApplication()).gac,new MetadataChangeSet.Builder()
.setTitle("SWShips").build())
.setResultCallback(new ResultCallback<DriveFolder.DriveFolderResult>() {
@Override
public void onResult(@NonNull DriveFolder.DriveFolderResult driveFolderResult) {
if(driveFolderResult.getStatus().isSuccess()){
((SWrpg)main.getApplication()).vehicFold = driveFolderResult.getDriveFolder();
((SWrpg)main.getApplication()).charsFold = charsFold[0];
}
}
});
}else{
((SWrpg)main.getApplication()).vehicFold = vehic;
((SWrpg)main.getApplication()).charsFold = charsFold[0];
}
}
metadataBufferResult.release();
}
});
}
metBufRes.release();
}
}
});
}
對不起,messyness。
我曾嘗試listChildren之前具有相同的效果。我找到了我的問題的答案,但謝謝! –