Я пытаюсь реализовать функциональность резервного копирования Google Drive в моем приложении Android, написанном в Java, но при вызове execute () код в режиме отладки не продолжается и продолжает работать на неопределенное время, как будто он потеряно в эфире. < /p>
Это мой метод: < /p>
private static boolean isFilePresentInAppDataFolder(Drive driveService, String fileName) {
try {
String query = "'appDataFolder' in parents and name = '" + fileName + "'";
List result = driveService.files().list()
.setQ(query)
.setSpaces("appDataFolder")
.setFields("files(id, name)")
.setPageSize(1);
FileList executed = result.execute();
if (executed.getFiles().isEmpty()) {
return false;
} else {
return true;
}
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
}
< /code>
он добавляется в другой поток с исполнителями. Google Drive API активирован. Кроме того, я не вижу никакой активности на панели панели Cloud Console Google, предполагая, что из моего приложения не регистрируются никакие попытки подключения. Несмотря на отладку процессов аутентификации и разрешения, выполнение застряло без четкой ошибки. Я не уверен, связано ли это с запуском приложения в режиме отладки, так как журналы системы не дают много понимания того, что может пройти. Я пытался выделить журналы Google, но еще не определил никаких конкретных проблем, и я ищу предложения о том, как устранить это более эффективно. Правильно см. Моя учетная запись Google: < /p>
public static void singIn(Activity activity, int reqCode){
GoogleSignInOptions signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestScopes(new Scope(DriveScopes.DRIVE_APPDATA))
.build();
GoogleSignInClient googleSignInClient = GoogleSignIn.getClient(activity, signInOptions);
Intent signInIntent = googleSignInClient.getSignInIntent();
activity.startActivityForResult(signInIntent, reqCode);
}
< /code>
Кроме того, это мой метод для получения службы диска: < /p>
public static Drive getDriveService(Context ctx) throws GeneralSecurityException, IOException {
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(ctx);
if (account == null) {
throw new IllegalStateException("Utente non loggato su Google. Chiamare signIn() prima di accedere a Drive.");
}
GoogleAccountCredential credential =
GoogleAccountCredential.usingOAuth2(ctx, Arrays.asList(DriveScopes.DRIVE_APPDATA))
.setBackOff(new ExponentialBackOff());
credential.setSelectedAccount(account.getAccount());
HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
return new Drive.Builder(transport, jsonFactory, request -> {
credential.initialize(request);
request.setLoggingEnabled(true);
}).setApplicationName(Tools.APP_NAME /*my app name*/).build();
}
Я пытаюсь реализовать функциональность резервного копирования Google Drive в моем приложении Android, написанном в Java, но при вызове execute () код в режиме отладки не продолжается и продолжает работать на неопределенное время, как будто он потеряно в эфире. < /p> Это мой метод: < /p> [code]private static boolean isFilePresentInAppDataFolder(Drive driveService, String fileName) { try {
String query = "'appDataFolder' in parents and name = '" + fileName + "'"; List result = driveService.files().list() .setQ(query) .setSpaces("appDataFolder") .setFields("files(id, name)") .setPageSize(1);
} catch (IOException e) { e.printStackTrace(); return false; } } } < /code> он добавляется в другой поток с исполнителями. Google Drive API активирован. Кроме того, я не вижу никакой активности на панели панели Cloud Console Google, предполагая, что из моего приложения не регистрируются никакие попытки подключения. Несмотря на отладку процессов аутентификации и разрешения, выполнение застряло без четкой ошибки. Я не уверен, связано ли это с запуском приложения в режиме отладки, так как журналы системы не дают много понимания того, что может пройти. Я пытался выделить журналы Google, но еще не определил никаких конкретных проблем, и я ищу предложения о том, как устранить это более эффективно. Правильно см. Моя учетная запись Google: < /p> public static void singIn(Activity activity, int reqCode){
GoogleSignInOptions signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .requestScopes(new Scope(DriveScopes.DRIVE_APPDATA)) .build();
Intent signInIntent = googleSignInClient.getSignInIntent(); activity.startActivityForResult(signInIntent, reqCode); } < /code> Кроме того, это мой метод для получения службы диска: < /p> public static Drive getDriveService(Context ctx) throws GeneralSecurityException, IOException {
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(ctx); if (account == null) { throw new IllegalStateException("Utente non loggato su Google. Chiamare signIn() prima di accedere a Drive."); }
HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport(); JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
return new Drive.Builder(transport, jsonFactory, request -> { credential.initialize(request); request.setLoggingEnabled(true); }).setApplicationName(Tools.APP_NAME /*my app name*/).build(); } [/code] Что я могу попробовать дальше?