【发布时间】:2017-08-02 19:35:09
【问题描述】:
我需要获取我上传到谷歌驱动器的视频的链接,以便我可以在网络浏览器中打开视频,我可以将视频文件上传到谷歌驱动器,还可以使用以下方法获取文件 ID代码:
private void UploadFile(final DriveId driveId)
{
Drive.DriveApi.newDriveContents(mGoogleApiClient).setResultCallback(new ResultCallback<DriveApi.DriveContentsResult>() {
@Override
public void onResult(@NonNull DriveApi.DriveContentsResult driveContentsResult)
{
if (!driveContentsResult.getStatus().isSuccess())
{
Log.e(TAG, "Error while trying to create new file contents");
return;
}
OutputStream outputStream = driveContentsResult.getDriveContents().getOutputStream();
Toast.makeText(context, "Uploading to drive....", Toast.LENGTH_LONG).show();
final File theFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/VideoFiles/testVideo.mkv");
try
{
FileInputStream fileInputStream = new FileInputStream(theFile);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fileInputStream.read(buffer)) != -1)
{
outputStream.write(buffer, 0, bytesRead);
}
} catch (IOException e1)
{
Log.i(TAG, "Unable to write file contents.");
}
MetadataChangeSet changeSet = new MetadataChangeSet.Builder().setTitle(theFile.getName()).setMimeType("video/mkv").setStarred(false).build();
DriveFolder folder = driveId.asDriveFolder();
folder.createFile(mGoogleApiClient, changeSet, driveContentsResult.getDriveContents()).setResultCallback(new ResultCallback<DriveFolder.DriveFileResult>() {
@Override
public void onResult(@NonNull DriveFolder.DriveFileResult driveFileResult)
{
if (!driveFileResult.getStatus().isSuccess())
{
Log.e(TAG, "Error while trying to create the file");
return;
}
Log.v(TAG, "Created a file: " + driveFileResult.getDriveFile().getDriveId());
}
});
}
});
}
我尝试使用以下代码获取视频网址:
DriveFile file = Drive.DriveApi.getFile(googleApiClient,driveId);
DriveResource.MetadataResult mdRslt = file.getMetadata(googleApiClient).await();
if (mdRslt != null && mdRslt.getStatus().isSuccess()) {
String link = mdRslt.getMetadata().getWebContentLink();
Log.d("LINK", link);
}
但后来我得到“无法解析符号 'googleApiClient' 请问有什么建议吗?
【问题讨论】:
-
这是因为
googleApiClient没有定义。你应该使用mGoogleApiClient,就像你在代码中的其他地方一样。 -
感谢重播,但我注意到我从 driveFileResult.getDriveFile().getDriveId() 获得的文件 ID 未完成:“DriveId:CAESABiwayCK16yy6VAoAA==" 这对我来说很奇怪吗?如果我正确,那么我可以通过添加一些以drive.google.com/......File ID 开头的字符串来构建 url .....
-
这里有一个线索。您的代码显示“正在上传到驱动器....”,但您使用的是 GDAA,因此您没有上传到驱动器。您所做的只是将文件保存在本地。一段时间后,Play 服务会将您的文件同步到云端硬盘。
标签: google-drive-api google-drive-android-api