6

コードを機能させるのに苦労しています。

ドライブのルート フォルダーにあるすべてのフォルダー (およびファイル) を (ボタンがクリックされたときに) アプリで表示する必要があります。しかし、Ouath2 を使用してアプリを承認したにもかかわらず、アプリはユーザーが選択したファイルとフォルダーにしかアクセスできないため、これは不可能のようです。

フォルダー ピッカーが開いたときに、内容がフォルダーである場合にのみ、そのフォルダーの内容が一覧表示されるという点で、動作は奇妙です。ファイルはまったくリストされません。

専門家が私のコードを見て、どこが間違っているのか教えてください。

PickFolderWithOpenerdriveId を取得するために、アクティビティを使用しています。ピッカーからのユーザーの選択に基づいて、ドライブ ID を返します。

 DriveId driveId = (DriveId) data.getParcelableExtra(
                            OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID);

ここで返されるのはフォルダのドライブ ID ですか? 次に、インテントを呼び出す必要がありますListFilesInFolderActivity。インテント コールでこのドライブ ID を渡す必要があると思いますか? DriveID を文字列としてフォーマットして渡すと、「DriveId が見つかりません。このファイルを表示する権限がありますか?」というメッセージが表示されて失敗します。メッセージ。

だから私がやっていることは、ResourceID を渡すことです。

Intent intent = new Intent(this, ListFilesInFolderActivity.class);
                    intent.putExtra("DriveID", driveId.getResourceId());
                    startActivity(intent);

ListFilesInFolderActivity? DriveID または resourceIDで何を使用する必要がありますか? これが私が持っているものですListFilesInFolderActivity?

Bundle extras = getIntent().getExtras();
        folderId= extras.getString("DriveID"); // this is the resourceID
Drive.DriveApi.fetchDriveId(getGoogleApiClient(), folderId)
                .setResultCallback(idCallback);


final private 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());
    showMessage("Result driveId is:  " + result.getDriveId());
    folder.listChildren(getGoogleApiClient())
            .setResultCallback(metadataResult);



 }
};

これはうまくいくようですが、選択したフォルダー内のフォルダーのみをリストします。ファイルは一覧表示されません。なぜfolder.listChildren(getGoogleApiClient())ファイルもリストしないのですか!?

うまくいけば、これは私が見逃している明らかなものです。

4

1 に答える 1

9

新しい SDK では SCOPE_FILE アクセスしか許可されないため、これを行うことはできません。

これがなぜですか??「注: 現在、Google Drive Android API は、drive.file および drive.appdata 承認スコープのみをサポートしています。アプリケーションに、Drive Android API でまだ利用できない追加の権限または機能が必要な場合は、Google API Java クライアントを使用する必要があります。」

于 2014-04-28T12:50:44.573 に答える