我想使用Google Drive android Api在Google云端硬盘上制作".ppt"文件的本地副本(外部存储).
我正在读一个字节并将其写入我的本地文件.但是当我试图打开它时显示该文件已损坏.请帮我解决我的问题.
final DriveFile file = Drive.DriveApi.getFile(getClient(), fileid);
final Metadata[] metadata = new Metadata[1];
file.getMetadata(getClient())
.setResultCallback(new ResultCallback<DriveResource.MetadataResult>() {
@Override
public void onResult(DriveResource.MetadataResult metadataResult) {
metadata[0] = metadataResult.getMetadata();
L.b(EditorWindow.this, metadata[0].getMimeType(), 0);
}
});
file.open(getClient(), DriveFile.MODE_READ_ONLY, null)
.setResultCallback(new ResultCallback<DriveApi.DriveContentsResult>() {
@Override
public void onResult(DriveApi.DriveContentsResult result) {
if (!result.getStatus().isSuccess()) {
L.c("Error in creating new file");
return;
}
DriveContents contents = result.getDriveContents();
String filename = metadata[0].getTitle();
File localFile = new File(Environment.getExternalStorageDirectory(), filename);
OutputStream out = null;
InputStream in = null;
try …Run Code Online (Sandbox Code Playgroud) android google-api google-api-java-client google-drive-android-api
我尝试了许多示例,但没有找到任何好的解决方案。
我想将我的应用程序的数据存储在sqlite数据库中,然后将其与安装该应用程序的用户的google驱动器帐户进行同步。
还有一个按钮,将显示来自Google驱动器的数据,用户可以编辑和更新数据,以便将更新后的数据存储在Google驱动器中。我是Android开发的新手,请帮助我。
我也应用了以下示例,但未成功。 https://github.com/seanpjanson/GDAADemo 使用GDAA(适用于Android的Google Drive Api)创建/编辑/检索DB文件 Google Drive Android API中DriveId.getResourceId()的意外结果 https://github.com/googledrive/ android-quickstart
谢谢
当我从 Google 驱动器中删除其他人与我共享的文件时,它向我显示了一条消息,例如“协作者仍然可以访问一个已删除的文件”。
它不再出现在该文件夹中,但会显示在“与我共享”中吗?我怎样才能彻底删除它?
应用程序发布在 Play 商店中,它使用“应用程序数据文件夹”使用Drive API进行备份-恢复。一切正常。但是,根据 Google 的公告,该 API 即将在 2019 年 12 月 6 日被拒绝。因此,为了支持现有用户,我一直根据迁移指南和官方示例应用程序迁移到最新的 API 。
我可以使用下面的代码(来自官方链接)成功进行身份验证。
GoogleSignInOptions signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestScopes(new Scope(DriveScopes.DRIVE_APPDATA))
.build();
GoogleSignInClient client = GoogleSignIn.getClient(this, signInOptions);
// The result of the sign-in Intent is handled in onActivityResult.
startActivityForResult(client.getSignInIntent(), REQUEST_CODE_SIGN_IN);
Run Code Online (Sandbox Code Playgroud)
我也在使用正确的范围 - DriveScopes.DRIVE_APPDATA如官方文档中所述。
我还在里面看到了“电子邮件”和“授予范围”的正确值 onActivityResult()
if (requestCode == REQUEST_CODE_SIGN_IN && resultCode == RESULT_OK) {
GoogleSignIn.getSignedInAccountFromIntent(data).addOnSuccessListener(new OnSuccessListener<GoogleSignInAccount>() {
@Override
public void onSuccess(GoogleSignInAccount googleSignInAccount) {
Log.e("TAG", "Email - " …Run Code Online (Sandbox Code Playgroud) 假设我使用Google Drive API来选择要打开的文件.我有这样的代码:
// Getting the drive ID for the file
DriveId driveId = (DriveId) data
.getParcelableExtra(OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID);
// Getting the selected file
DriveFile googleDriveFile = Drive.DriveApi.getFile(googleApiClient,
driveId);
googleDriveFile.open(googleApiClient, DriveFile.MODE_READ_ONLY,
null).setResultCallback(
new ResultCallback<DriveContentsResult>() {
@Override
public void onResult(DriveContentsResult result) {
if (result.getStatus().isSuccess()) {
Run Code Online (Sandbox Code Playgroud)
有什么办法让我得到这个文件的文件名吗?(不是驱动器ID,而是它的实际名称?)
我正在尝试验证所选文件(通过检查其名称中的类型),除了获取名称之外,我想不出一种方法可以做到这一点.类型是.cblite,Couchbase Lite数据库文件.通常我只是按MIME类型过滤驱动器选择器,但.cblite(据我所知)不是这些选项之一.相反,我试图通过文件名验证.
有没有办法做到这一点?(或者有没有办法通过杂项/未识别的类型过滤MIME类型?)
我一整天都没有运气就与这段代码作斗争.我开始关注Google的代码示例.
问题是文件夹是成功创建的但是在onResult()中,我总是得到一个无效或不完整的DriveId或resourceId.这意味着我无法在我创建的文件夹中创建文件.这是我正在使用的代码:
public class CreateFolderActivity extends BaseDemoActivity {
@Override
public void onConnected(Bundle connectionHint) {
super.onConnected(connectionHint);
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle("MyAppFolder").build();
Drive.DriveApi.getRootFolder(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;
}
// this value is always invalid with ending == operators
Log.d("DRIVEID", "Created a folder: " + result.getDriveFolder().getDriveId());
}
};
}
Run Code Online (Sandbox Code Playgroud)
每当我运行此代码时,我会得到以下不完整的ID:
CAESABi2VyCCzdWOuVMoAQ==
Run Code Online (Sandbox Code Playgroud)
我不知道这里发生了什么!
我已经谷歌了,并阅读添加听众来听取完成事件,但似乎没有一个工作.
我在这方面看到了几乎类似的问题,但它们都不适用于我.
在应用程序创建后,我通过浏览器手动复制FolderId,然后粘贴到我的android代码,应用程序成功创建了一个文件.但这不是事情应该如何运作. …
首先我是法国学生,请原谅我的英语..
我已经启动了一个拍照的应用程序,现在我希望它能在GoogleDrive上保存这些照片.我跟着谷歌教程,我现在有一个我无法解释的错误,我不知道如何解决它:
400 Bad Request {"code":400,"errors":[{"domain":"global","location":"fields","locationType":"parameter","message":"无效的字段选择项" ,"reason":"invalidParameter"}],"message":"无效的字段选择项"}
此链接可能有助于https://developers.google.com/drive/v3/web/handle-errors,即使我真的不明白它是如何帮助的.
当然,我做了google问的所有事情:https://developers.google.com/drive/quickstart/android
这是存在错误的活动.
我希望你能理解我的问题,如果你这样做并帮助解决它,我只需要说谢谢(即使你刚读完)..
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.api.client.extensions.android.http.AndroidHttp;
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential;
import com.google.api.client.googleapis.extensions.android.gms.auth.GooglePlayServicesAvailabilityIOException;
import com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.client.util.ExponentialBackOff;
import com.google.api.services.drive.DriveScopes;
import com.google.api.services.drive.model.*;
import android.accounts.AccountManager;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.text.TextUtils;
import android.text.method.ScrollingMovementMethod;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView; …Run Code Online (Sandbox Code Playgroud) 大家好,我已经在Android的Google Drive Api上工作了一周,我同时使用了Android Drive SDK和Java的Drive Rest Api,但找不到如何直接获取文件下载链接的方法(所有人都可以阅读)。我已经尝试过如何获取要在Android中下载的Google驱动器文件的网址,但是它不起作用。请帮我。谢谢。
Google云端硬盘允许存储数据并在设备之间共享.但是我想在这里存储用户的照片.我在" 存储应用程序数据"网页上找不到有关限制的任何信息.
所以.有关Google云端硬盘应用数据文件夹大小限制的任何信息?
我只是想为Android Drive API进行身份验证.
我从Android Studio生成签名APK.该帐户经过身份验证,Google Drive API身份验证与此生成的APK完美配合.
现在,当我将相同的APK上传到Play Console中的内部测试时.然后验证失败.
__现在这就是我完成这一切的方式___
1)在Android Manifest中添加了以下内容
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
Run Code Online (Sandbox Code Playgroud)
2)像这样实现了身份验证
public abstract class AuthActivityStackOverflow extends BaseActivity {
protected static final int GOOGLE_SIGN_IN_REQUEST_CODE = 1;
public void signIn() {
startActivityForResult( getGoogleSignInClient().getSignInIntent(), GOOGLE_SIGN_IN_REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == GOOGLE_SIGN_IN_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
onSignInSuccess(GoogleSignIn.getLastSignedInAccount(this), requestCode);
showMessage("Account Linked Successfully");
} else { onSignInFailed(); }
}
}
protected GoogleSignInClient getGoogleSignInClient(){
GoogleSignInOptions signInOptions …Run Code Online (Sandbox Code Playgroud) java authentication android oauth-2.0 google-drive-android-api