Mar*_*lez 8 android google-drive-api google-drive-android-api
我正在尝试开发一个可以读取存储在我的google驱动器文件夹中的xml文件的Android应用程序,这个想法首先是尝试打开文件并处理内容.
我已经阅读了针对Android的Google Drive API文档,并且我达到了一个我丢失的地步,它正在使用文件内容.
根据本指南,从驱动器打开文件的方法是这样的:
DriveFile file = ...
file.open(mGoogleApiClient, DriveFile.MODE_READ_ONLY, null).setResultCallback(contentsOpenedCallback);`
Run Code Online (Sandbox Code Playgroud)
搜索我意识到完整的代码(它们不包括在内):
DriveFile file = Drive.DriveApi.getFile(mGoogleApiClient,DriveId.bg(id));
file.open(mGoogleApiClient, DriveFile.MODE_READ_ONLY, null).setResultCallback(contentsOpenedCallback);`
Run Code Online (Sandbox Code Playgroud)
那么问题是我不知道文件"id".我从谷歌驱动器,像这样(的网站链接试过ID https://drive.google.com/open?ID = 1EafJ-T6H4xI9VaUuUO5FMVb9Y30xyr7OHuISQ53avso&AUTHUSER = 0),但didn't工作.
小智 6
您可以使用DriveAPI Query方法来检索有关特定文件的任何信息.您需要定义一个查询对象,如下所示:
Query query = new Query.Builder()
.addFilter(Filters.eq(SearchableField.TITLE, "HelloWorld.java"))
.build();
Run Code Online (Sandbox Code Playgroud)
并设置一个回调函数来迭代结果:
Drive.DriveApi.query(googleApiClient, query)
.setResultCallback(new OnChildrenRetrievedCallback() {
@Override
public void onChildrenRetrieved(MetadataBufferResult result) {
// Iterate over the matching Metadata instances in mdResultSet
}
});
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到有关该主题的更多信息:https://developers.google.com/drive/android/queries
我找到的解决方案是从应用程序创建文件。使用google Drive api 演示应用程序中的类(“CreateFileActivity.java” )。
使用此类,我将从新文件返回的 Driveid 保存在全局 DriveId 变量中。
final private ResultCallback<DriveFolder.DriveFileResult> fileCallback = new
ResultCallback<DriveFolder.DriveFileResult>() {
@Override
public void onResult(DriveFolder.DriveFileResult result) {
if (!result.getStatus().isSuccess()) {
Log.e("","Error while trying to create the file");
return;
}
Id=result.getDriveFile().getDriveId();
Log.e("","Created a file with content: " + Id);
}
};
Run Code Online (Sandbox Code Playgroud)
然后在另一种方法中使用此 ID 调用该文件并读取它(如果我愿意,我可以从 Google Drive Web 应用程序编辑此文件信息):
public void leer(){
DriveFile file = Drive.DriveApi.getFile(getGoogleApiClient(),Id);
file.open(mGoogleApiClient, DriveFile.MODE_READ_ONLY, null)
.setResultCallback(contentsOpenedCallback);
}
ResultCallback<DriveApi.DriveContentsResult> contentsOpenedCallback =
new ResultCallback<DriveApi.DriveContentsResult>() {
@Override
public void onResult(DriveApi.DriveContentsResult result) {
if (!result.getStatus().isSuccess()) {
Log.e("Error:","No se puede abrir el archivo o no se encuentra");
return;
}
// DriveContents object contains pointers
// to the actual byte stream
DriveContents contents = result.getDriveContents();
BufferedReader reader = new BufferedReader(new InputStreamReader(contents.getInputStream()));
StringBuilder builder = new StringBuilder();
String line;
try {
while ((line = reader.readLine()) != null) {
builder.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
String contentsAsString = builder.toString();
Log.e("RESULT:",contentsAsString);
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8906 次 |
| 最近记录: |