Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Google drive android / 17 сообщений из 17, страница 1 из 1
22.04.2015, 11:49
    #38942334
Елдос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google drive android
Я смог авторизоваться в 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
22.04.2015, 12:46
    #38942438
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google drive android
Елдосно как я могу создавать файл в google drive
Запись файла в драйв и есть по сути создание файла.

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

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

по этой документации не совсем понятно как и где указывать файл
DriveFile file = ...
file.open(mGoogleApiClient, DriveFile.MODE_READ_ONLY, null)
.setResultCallback(contentsOpenedCallback);
и что здесь писать вместо ... как создавать DriveFile я так понимаю что это файл который будет в облаке.
...
Рейтинг: 0 / 0
22.04.2015, 16:17
    #38942755
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google drive android
Может демки помогут? https://github.com/googledrive/android-demos
...
Рейтинг: 0 / 0
23.04.2015, 08:05
    #38943137
Елдос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google drive android
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
23.04.2015, 08:50
    #38943168
Елдос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google drive android
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
23.04.2015, 09:12
    #38943180
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google drive android
В какой строке ошибка?
...
Рейтинг: 0 / 0
23.04.2015, 11:40
    #38943351
Елдос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google drive android
wadman,

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


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

проблема оказывается в другом я вызывал создание файла еще тогда когда не создалась папка,
Код: 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
23.04.2015, 13:08
    #38943491
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google drive android
Я с драйвом не работал, но почти уверен, что ты демки до конца не посмотрел. Там судя по всему есть все этапы работы. Посмотри еще раз: https://github.com/googledrive/android-demos
...
Рейтинг: 0 / 0
23.04.2015, 13:31
    #38943521
Елдос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google drive android
wadman,

да я смотрел эти записи там просто нет такой записи где можно брать драйвайди папки, там используется готовый драйвайди который они сами вручную прописали
...
Рейтинг: 0 / 0
23.04.2015, 14:47
    #38943620
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google drive android
Лучшеб весь код показывал (в спойлере и с тэгом 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
24.04.2015, 05:47
    #38944077
Елдос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google drive android
wadman,

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

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

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

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


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