如何在Android中的谷歌驱动器中的应用程序文件夹中以编程方式创建文件夹

时间:2016-10-17 11:21:01

标签: java android storage google-drive-android-api

我正在使用Android中的Google Drive API以编程方式将数据存储在Google云端硬盘中。我提到了github。但它是在Root文件夹中创建一个不在App Folder中的文件夹。是否可以在AppFolder中创建文件夹? 我尝试了一些但没有结果我尝试过的代码。

public class CreateFolderInAppFolder extends BaseDemoActivity {

@Override
public void onConnected(Bundle connectionHint) {
    super.onConnected(connectionHint);
    MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
      .setTitle("New folder").build();
    DriveApi.getAppFolder(getGoogleApiClient()).createFolder(
            getGoogleApiClient(), changeSet).setResultCallback(callback);
}

final ResultCallback<DriveFolderResult> callback = new ResultCallback<DriveFolderResult>() {
    @Override
    public void onResult(DriveFolderResult result) {
        if (!result.getStatus().isSuccess()) {
            showMessage("Error while trying to create the folder");
            return;
         }
        showMessage("Created a folder: " + result.getDriveFolder().getDriveId());
      }
   };
}

1 个答案:

答案 0 :(得分:0)

是的,可以尝试阅读Storing Application Data

  

App文件夹是一个特殊的folder,只能由您的应用程序访问。其内容对用户和其他应用程序隐藏。尽管对用户隐藏,但应用程序文件夹存储在用户的驱动器上,因此使用用户的驱动器存储配额。 App文件夹可用于存储配置文件,临时文件或属于用户但不应被篡改的任何其他类型的文件。

在App文件夹中创建文件

  应用程序文件夹中的

Creating a file与普通folder相同。以下示例演示如何在App文件夹中创建名为 import React from 'react'; import ReactDOM from 'react-dom'; import { Map, Marker, Popup, TileLayer } from 'react-leaflet'; import MarkerLayer from 'react-leaflet-marker-layer'; const position = { lng: -122.673447, lat: 45.522558 }; const markers = [ { position: { lng: -122.67344700000, lat: 45.522558100000 }, text: 'Voodoo Doughnut', }, { position: { lng: -122.67814460000, lat: 45.5225512000000 }, text: 'Bailey\'s Taproom', }, { position: { lng: -122.67535700000002, lat: 45.5192743000000 }, text: 'Barista' }, { position: { lng: -122.65596570000001, lat: 45.5199148000001 }, text: 'Base Camp Brewing' } ]; class ExampleMarkerComponent extends React.Component { render() { const style = { border: 'solid 1px lightblue', backgroundColor: '#333333', borderRadius: '50%', marginTop: '-5px', marginLeft: '-5px', width: '10px', height: '10px' }; return ( <div style={Object.assign({}, this.props.style, style)}></div> ); } } class MapView extends React.Component { render() { return ( <div style={{ height:"700px" }}> <Map center={position} zoom={13} style={{ height:"700px" }}> <TileLayer url='http://{s}.tile.osm.org/{z}/{x}/{y}.png' attribution='&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors' /> <MarkerLayer markers={markers} longitudeExtractor={m => m.position.lng} latitudeExtractor={m => m.position.lat} markerComponent={ExampleMarkerComponent} /> </Map> </div> ); } } module.exports = MapView; 的新文本文件:

以下是示例代码:

appconfig.txt

您可以通过检索metadata来检查文件/文件夹是否在AppFolder中。如果文件或文件夹位于应用程序文件夹中,Metadata.isInAppFolder方法将返回 final private ResultCallback<DriveContentsResult> contentsCallback = new ResultCallback<DriveContentsResult>() { @Override public void onResult(DriveContentsResult result) { if (!result.getStatus().isSuccess()) { showMessage("Error while trying to create new file contents"); return; } MetadataChangeSet changeSet = new MetadataChangeSet.Builder() .setTitle("appconfig.txt") .setMimeType("text/plain") .build(); Drive.DriveApi.getAppFolder(getGoogleApiClient()) .createFile(getGoogleApiClient(), changeSet, result.getDriveContents()) .setResultCallback(fileCallback); } };

希望这有帮助。