Получить URL-адрес файла Google Drive после его загрузки — Android

#android #url #google-drive-api #android-bitmap #google-drive-android-api

#Android #url #google-drive-api #android-растровое изображение #google-drive-android-api

Вопрос:

В моем приложении мне нужно сделать снимок и управлять его хранилищем. У меня есть два варианта: сохранить фотографию в локальной памяти или на Google Диске, и я должен отслеживать любую фотографию в базе данных SQLite. Мое приложение работает очень хорошо, но у меня большая проблема:

Если я решу сохранить фотографию на Google Диске, когда я нажму OK в результате действия Google Диска (где вы выбираете имя файла и папку на диске) Мне нужно получить URL-адрес файла, который я только что загрузил в своей учетной записи Google Drive. Как я могу это сделать? Я полагаю, мне нужно что-то сделать в onActivityResult методе.

Я оставил свой текущий код приложения, который отлично работает! ПРИМЕЧАНИЯ: Растровое newPhoto изображение содержит фотографию, сделанную камерой 😉

Спасибо вам за ваши ответы!

 private void saveFileToDrive() {

    //Start creating new content and setting a callback
    Log.i(TAG, "Creating new Content");

    final Bitmap image = newPhoto;

    Drive.DriveApi.newDriveContents(mGoogleApiClient)
            .setResultCallback(new ResultCallback<DriveContentsResult>() {

                @Override
                public void onResult(@NonNull DriveContentsResult result) {

                    //if operation was not successful we cannot do anything
                    //and ust fail
                    if (!result.getStatus().isSuccess()) {
                        Log.i(TAG, "Fail to create new content");
                        return;
                    }

                    // otherwise, we can write our data to the new content
                    Log.i(TAG, "New content created");

                    //creation of an outputstream for the new content
                    OutputStream outputStream = result.getDriveContents().getOutputStream();
                    //Write the bitmap data from it
                    ByteArrayOutputStream bitmapStream = new ByteArrayOutputStream();
                    image.compress(Bitmap.CompressFormat.PNG, 100, bitmapStream);

                    try {
                        outputStream.write(bitmapStream.toByteArray());
                    } catch (IOException e1) {
                        Log.i(TAG, "Unable to write file contents");
                    }

                    // Create the initial metadata (Type non title)
                    // NB: user is able to change the title
                    MetadataChangeSet metadataChangeSet = new MetadataChangeSet.Builder()
                            .setMimeType("image/jpeg")
                            .setTitle(imageFileName   ".jpg").build();

                    // Create an intent for the file chooser
                    IntentSender intentSender = Drive.DriveApi
                            .newCreateFileActivityBuilder()
                            .setInitialMetadata(metadataChangeSet)
                            .setInitialDriveContents(result.getDriveContents())
                            .build(mGoogleApiClient);

                    try {
                        startIntentSenderForResult(intentSender, DRIVE_REQUEST, null, 0, 0, 0);
                    } catch (SendIntentException e) {
                        Log.i(TAG, "Fail to lauch file chooser");
                    }
                }
            });

}
  

После того, как сделайте снимок

Результат работы Google Диска

Комментарии:

1. image.compress(Bitmap.CompressFormat.PNG, 100, bitmapStream); . Измените image.compress(Bitmap.CompressFormat.PNG, 100, outputStream); и устраните поток вывода массива байтов.

2. // Create an intent for the file chooser . Не понимаю этого. Вы только что сохранили содержимое на Google Диске. Почему вы выбрали файл сейчас?

3. Я согласен с вашим первым ответом. спасибо за второе, я хочу предоставить пользователю возможность изменить имя файла и выбрать другую папку, в которую загружается изображение. Не знаете, как получить URL-адрес?