コードを機能させるのに苦労しています。
ドライブのルート フォルダーにあるすべてのフォルダー (およびファイル) を (ボタンがクリックされたときに) アプリで表示する必要があります。しかし、Ouath2 を使用してアプリを承認したにもかかわらず、アプリはユーザーが選択したファイルとフォルダーにしかアクセスできないため、これは不可能のようです。
フォルダー ピッカーが開いたときに、内容がフォルダーである場合にのみ、そのフォルダーの内容が一覧表示されるという点で、動作は奇妙です。ファイルはまったくリストされません。
専門家が私のコードを見て、どこが間違っているのか教えてください。
PickFolderWithOpener
driveId を取得するために、アクティビティを使用しています。ピッカーからのユーザーの選択に基づいて、ドライブ 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())
ファイルもリストしないのですか!?
うまくいけば、これは私が見逃している明らかなものです。