powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Google drive android
17 сообщений из 17, страница 1 из 1
Google drive android
    #38942334
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я смог авторизоваться в google drive сейчас по примеру просто сохраняю изображение по найденному примеру,
но как я могу создавать файл в google drive и копировать файл оттуда, может быть у кого то какой нибудь пример

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
    private void saveFileToDrive() {
        // Start by creating a new contents, and setting a callback.
        Log.i(tag, "Creating new contents.");
        Toast.makeText(context,"Creating new contents.", Toast.LENGTH_LONG).show();
        String fileName = mSettings.getString("directory", "") + "/" + Fragment_main.dateFormat.format(new Date());
        File file = new File(fileName + ".jpg");
        BitmapFactory.Options bmOptions = new BitmapFactory.Options();

//        Bitmap bitmap = BitmapFactory.decodeFile(jpg.getAbsolutePath(),bmOptions);

        if(file.exists())
            image =BitmapFactory.decodeFile(file.getAbsolutePath(),bmOptions);
      else
            return;
        Drive.DriveApi.newDriveContents(mGoogleApiClient).setResultCallback(new ResultCallback<DriveApi.DriveContentsResult>() {

            @Override
            public void onResult(DriveApi.DriveContentsResult result) {

                if (!result.getStatus().isSuccess()) {
                    Log.i(tag, "Failed to create new contents.");
                    Toast.makeText(context,"Failed to create new contents.", Toast.LENGTH_LONG).show();

                    return;
                }
                // Otherwise, we can write our data to the new contents.
                Log.i(tag, "New contents created.");
                Toast.makeText(context,"New contents created. ", Toast.LENGTH_LONG).show();

                // Get an output stream for the contents.
                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.");
                    Toast.makeText(context,"Unable to write file contents.", Toast.LENGTH_LONG).show();

                }
                // Create the initial metadata - MIME type and title.
                // Note that the user will be able to change the title later.
                MetadataChangeSet metadataChangeSet = new MetadataChangeSet.Builder()
                        .setMimeType("image/jpeg").build();
                // Create an intent for the file chooser, and start it.
                IntentSender intentSender = Drive.DriveApi.newCreateFileActivityBuilder()
                        .setInitialMetadata(metadataChangeSet)
                        .setInitialDriveContents(result.getDriveContents())
                        .build(mGoogleApiClient);
                try {
                    startIntentSenderForResult(intentSender, REQUEST_CODE_CREATOR, null, 0, 0, 0);
                } catch (Exception e) {
                    Log.i(tag, "Failed to launch file chooser.");
                }
            }
        });
    }

...
Рейтинг: 0 / 0
Google drive android
    #38942438
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосно как я могу создавать файл в google drive
Запись файла в драйв и есть по сути создание файла.

А читать почти так же, только вместо OutputStream нужно использовать InputStream.

Подробнее https://developers.google.com/drive/android/files
...
Рейтинг: 0 / 0
Google drive android
    #38942574
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

по этой документации не совсем понятно как и где указывать файл
DriveFile file = ...
file.open(mGoogleApiClient, DriveFile.MODE_READ_ONLY, null)
.setResultCallback(contentsOpenedCallback);
и что здесь писать вместо ... как создавать DriveFile я так понимаю что это файл который будет в облаке.
...
Рейтинг: 0 / 0
Google drive android
    #38942755
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может демки помогут? https://github.com/googledrive/android-demos
...
Рейтинг: 0 / 0
Google drive android
    #38943137
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

не могу сохранить driveid после создания папки , выводит exception NullPointer
хотя папка в облаке создается и создается она даже каждый раз при обращении, то есть там уже несколько папок с одним именем
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
   public void createFolder(){

        final ResultCallback<DriveFolder.DriveFolderResult> callback = new ResultCallback<DriveFolder.DriveFolderResult>() {
            @Override
            public void onResult(DriveFolder.DriveFolderResult result) {
                if (!result.getStatus().isSuccess()) {
                    Toast.makeText(context, "Error while trying to create the folder", Toast.LENGTH_LONG).show();

                    return;
                }
                folderid = result.getDriveFolder().getDriveId();
                toast("Created a folder: " + folderid.encodeToString());
                log("id  " + folderid.encodeToString());
            }
        };
        MetadataChangeSet changeSet = new MetadataChangeSet.Builder().setTitle("fold").build();
        Drive.DriveApi.getRootFolder(mGoogleApiClient).createFolder(mGoogleApiClient, changeSet).setResultCallback(callback);

    }
...
Рейтинг: 0 / 0
Google drive android
    #38943168
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

предущая проблема решилась
сейчас проблема пытаюсь создать файл в в уже созданной папке, создаю папку узнать driveid хочу создать файл выдает ошибку java.lang.IllegalArgumentException driveid я беру из только что созданной папки

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
ResultCallback<DriveApi.DriveIdResult> idCallback = new ResultCallback<DriveApi.DriveIdResult>() {
    @Override
    public void onResult(DriveApi.DriveIdResult result) {
        if (!result.getStatus().isSuccess()) {
            toast("Cannot find DriveId. Are you authorized to view this file?");
            return;
        }
        mFolderDriveId = result.getDriveId();
        Drive.DriveApi.newDriveContents(mGoogleApiClient).setResultCallback(driveContentsCallback);
    }
};
public void createFile(){

    log(stringFolderId);

    Drive.DriveApi.fetchDriveId(mGoogleApiClient, stringFolderId)
            .setResultCallback(idCallback);
}





04-23 11:37:40.444 28336-28336/kz.tanikin.ph5 E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: kz.tanikin.ph5, PID: 28336
java.lang.IllegalArgumentException
at com.google.android.gms.internal.jx.L(Unknown Source)
at com.google.android.gms.drive.DriveId.<init>(Unknown Source)
at com.google.android.gms.drive.DriveId.<init>(Unknown Source)
at com.google.android.gms.drive.DriveId.bi(Unknown Source)
at com.google.android.gms.drive.internal.p$3.a(Unknown Source)
at com.google.android.gms.drive.internal.p$3.a(Unknown Source)
at com.google.android.gms.common.api.BaseImplementation$a.b(Unknown Source)
at com.google.android.gms.common.api.c.a(Unknown Source)
at com.google.android.gms.common.api.c.b(Unknown Source)
at com.google.android.gms.common.api.c.a(Unknown Source)
at com.google.android.gms.drive.internal.p.fetchDriveId(Unknown Source)
at kz.tanikin.p5.Drawer_layout.createFile(Drawer_layout.java:913)
at kz.tanikin.p5.Drawer_layout.createFolder(Drawer_layout.java:865)
at kz.tanikin.p5.Drawer_layout.onConnected(Drawer_layout.java:761)
at com.google.android.gms.internal.jm.f(Unknown Source)
at com.google.android.gms.common.api.c.gJ(Unknown Source)
at com.google.android.gms.common.api.c.d(Unknown Source)
at com.google.android.gms.common.api.c$2.onConnected(Unknown Source)
at com.google.android.gms.internal.jm.f(Unknown Source)
at com.google.android.gms.internal.jm.dU(Unknown Source)
at com.google.android.gms.internal.jl$h.b(Unknown Source)
at com.google.android.gms.internal.jl$h.g(Unknown Source)
at com.google.android.gms.internal.jl$b.hy(Unknown Source)
at com.google.android.gms.internal.jl$a.handleMessage(Unknown Source)
...
Рейтинг: 0 / 0
Google drive android
    #38943180
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В какой строке ошибка?
...
Рейтинг: 0 / 0
Google drive android
    #38943351
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

Код: java
1.
Drive.DriveApi.fetchDriveId(mGoogleApiClient, stringFolderId)


вот сюда mGoogleApiClient рабочий, им же создаю папку, stringFolderId тоже рабочий сразу от созданной папки получаю айди.
...
Рейтинг: 0 / 0
Google drive android
    #38943437
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдос,

проблема оказывается в другом я вызывал создание файла еще тогда когда не создалась папка,
Код: java
1.
2.
3.
4.
       
 Drive.DriveApi.getRootFolder(mGoogleApiClient).createFolder(mGoogleApiClient, changeSet).setResultCallback(callback);
        // CAESABi8AiCEtfOUiVI=
    createFile();


сейчас обрадаюсь к созданию файла внутри callback
но в итоге ему не нравится Driveid пишет
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    ResultCallback<DriveApi.DriveIdResult> idCallback = new ResultCallback<DriveApi.DriveIdResult>() {

        @Override
        public void onResult(DriveApi.DriveIdResult result) {
            if (!result.getStatus().isSuccess()) {
                toast("Cannot find DriveId. Are you authorized to view this file?");
                return;
            }
            mFolderDriveId = result.getDriveId();
            Drive.DriveApi.newDriveContents(mGoogleApiClient).setResultCallback(driveContentsCallback);
        }
    };


выдает Cannot find DriveId,
ему не нравится DriveId папки, а ведь я его беру так folderid = result.getDriveFolder().getDriveId();
...
Рейтинг: 0 / 0
Google drive android
    #38943491
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я с драйвом не работал, но почти уверен, что ты демки до конца не посмотрел. Там судя по всему есть все этапы работы. Посмотри еще раз: https://github.com/googledrive/android-demos
...
Рейтинг: 0 / 0
Google drive android
    #38943521
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

да я смотрел эти записи там просто нет такой записи где можно брать драйвайди папки, там используется готовый драйвайди который они сами вручную прописали
...
Рейтинг: 0 / 0
Google drive android
    #38943620
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучшеб весь код показывал (в спойлере и с тэгом SRC), а то показываешь участки, которые в итоге к проблеме не относятся, т.к. находишь проблемы в других местах.

Там вроде все просто:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
package com.google.android.gms.drive.sample.demo;

import android.os.Bundle;

import com.google.android.gms.common.api.ResultCallback;
import com.google.android.gms.drive.Drive;
import com.google.android.gms.drive.DriveApi.DriveIdResult;
import com.google.android.gms.drive.DriveFolder;
import com.google.android.gms.drive.DriveFolder.DriveFolderResult;
import com.google.android.gms.drive.MetadataChangeSet;

/**
 * An activity to create a folder inside a folder.
 */
public class CreateFolderInFolderActivity extends BaseDemoActivity {

    @Override
    public void onConnected(Bundle connectionHint) {
        super.onConnected(connectionHint);
        Drive.DriveApi.fetchDriveId(getGoogleApiClient(), EXISTING_FOLDER_ID)
                .setResultCallback(idCallback);
    }

    final ResultCallback<DriveIdResult> idCallback = new ResultCallback<DriveIdResult>() {
        @Override
        public void onResult(DriveIdResult result) {
            if (!result.getStatus().isSuccess()) {
                showMessage("Cannot find DriveId. Are you authorized to view this file?");
                return;
            }
            DriveFolder folder = Drive.DriveApi
                    .getFolder(getGoogleApiClient(), result.getDriveId());
            MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
                    .setTitle("MyNewFolder").build();
            folder.createFolder(getGoogleApiClient(), changeSet)
                    .setResultCallback(createFolderCallback);
        }
    };

    final ResultCallback<DriveFolderResult> createFolderCallback = new
            ResultCallback<DriveFolderResult>() {

        @Override
        public void onResult(DriveFolderResult result) {
            if (!result.getStatus().isSuccess()) {
                showMessage("Problem while trying to create a folder");
                return;
            }
            showMessage("Folder successfully created");
        }
    };
}

...
Рейтинг: 0 / 0
Google drive android
    #38944077
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

да тут все просто и понятно кроме одного где мне взять EXISTING_FOLDER_ID, это driveid который вбит заранее я то не могу такое делать, к примеру я хочу взять driveid который папки которая уже есть в google drive
...
Рейтинг: 0 / 0
Google drive android
    #38944145
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосда тут все просто и понятно
Если-бы было просто, то была-бы тема? :)

Сделай тестовую активность и в ней всю работу с драйвом. Что и где не получается, выкладывай сюда. Но весь код , а не то место, где по твоему мнению ошибка.
...
Рейтинг: 0 / 0
Google drive android
    #38944573
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

да была бы тема, если бы так просто
я так и не понял где была ошибка, я создаю файл по другому, использую Folder.createFolder так работает,
и еще один вопрос выходит что для того чтобы узнать есть ли папка нужно знать DriveId а driveid всегда одинаковый для одного имени папки, к примеру у папки nameFolder будет id DriveId:CAESABiuAyCEtfOUiVI= я правильно понимаю
...
Рейтинг: 0 / 0
Google drive android
    #38944614
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдоси еще один вопрос выходит что для того чтобы узнать есть ли папка нужно знать DriveId а driveid всегда одинаковый для одного имени папки, к примеру у папки nameFolder будет id DriveId:CAESABiuAyCEtfOUiVI= я правильно понимаю
Это проверяется просто. Создай и удали несколько раз одну и туже папку и сравни DriveId.
...
Рейтинг: 0 / 0
Google drive android
    #38944656
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

да так и делал но так и не понял этого, бывает айди разный и бывает одинаковый) вот и думаю как с этим быть
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / Google drive android
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]