gpt4 book ai didi

android - 如果 APK 已签名,Google Drive REST API AppDataFolder 将无法正常工作

转载 作者:行者123 更新时间:2023-11-29 02:22:21 25 4
gpt4 key购买 nike

由于 Google Drive Android API 已弃用,我已迁移到 Google Drive REST API。

在我的调试版本中一切正常。
文件夹和文件在根文件夹或隐藏的“appDataFolder”中创建。
但是一旦我创建了一个签名的 APK,它就不再工作了。

登录并正在请求权限。
但是如果我想创建一个文件夹或文件,我不会得到一个文件 ID。
并且始终在 Google Drive 的根目录中(无论我是否使用 appDataFolder)都会创建一个名为“Untitled”的 0kb 文件。

经过几个小时的搜索,我没有找到它在签名的 APK 中不起作用的原因。

使用范围创建登录:

GoogleSignInOptions signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestScopes(new Scope(DriveScopes.DRIVE_APPDATA), new Scope(DriveScopes.DRIVE_FILE))
.build();
return GoogleSignIn.getClient(context, signInOptions);

GoogleAccountCredential:

// Use the authenticated account ot sign in to the Drive service
List<String> scopes = new ArrayList<>(2);
scopes.add(DriveScopes.DRIVE_FILE);
scopes.add(DriveScopes.DRIVE_APPDATA);
GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(context, scopes);
credential.setSelectedAccount(googleSignInAccount.getAccount());

Drive googleDriveService = new Drive.Builder(AndroidHttp.newCompatibleTransport(),
new GsonFactory(), credential)
.setApplicationName("Test Application")
.build();

文件夹的创建:

File fileMetadata = new File();
fileMetadata.setName("Testfolder");

// Add parent folder
fileMetadata.setParents(Collections.singletonList("appDataFolder"));
fileMetadata.setMimeType("application/vnd.google-apps.folder");

File file;
try {
file = mDriveService.files().create(fileMetadata)
.setFields("id")
.execute();
} catch (IOException e) {
Log.e(TAG, "Can't create folder " + folderName, e);
return "";
}

Log.i(TAG, "Folder " + folderName + " ID: " + file.getId());
return file.getId();

最佳答案

问题是 ProGuard!
如果我不使用 ProGuard,它工作正常。

将这两行添加到 ProGuard 规则文件中:

-keep,allowshrinking class com.google.api.services.drive.model.** { *;}
-keep,allowshrinking class com.google.api.services.drive.** { *;}

之后它就开始工作了!

如果您仍有问题,您可以使用以下解决方案: Google Drive Rest API: Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup

关于android - 如果 APK 已签名,Google Drive REST API AppDataFolder 将无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54580176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com