【发布时间】:2014-09-17 17:15:13
【问题描述】:
我正在使用此处找到的演示作为我的应用程序的指南:
我首先使用 PickFolderWithOpenerActivity.java 来检索 Google Drive 文件夹 responseID。我希望用户首先向下钻取并选择一个文件夹,然后显示该文件夹中的所有文件(并且可以选择)
OpenFileActivityBuilder 在我的应用程序中打开正常,然后我可以浏览文件夹结构,然后按“选择”按钮以选择该文件夹。
在 PickFolderWithOpenerActivity.java 中,我用 responseID 覆盖 EXISTING_FOLDER_ID(此响应 ID 与驱动器文件夹 URL 匹配,即粗体部分:https://drive.google.com/?authuser=0#folders/0AwbfSlc3Y1XYUXpZU0Vac1JXY28) :
所以本质上,EXISTING_FOLDER_ID = 0AwbfSlc3Y1XYUXpZU0Vac1JXY28
DriveId driveId = (DriveId) data.getParcelableExtra(
OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID);
EXISTING_FOLDER_ID = driveId.getResourceId();
然后我调用“ListFilesInFolderActivity.java”:
public class ListFilesInFolderActivity extends BaseActivity {
private ListView mResultsListView;
private ResultsAdapter mResultsAdapter;
//private static DriveId sFolderId = DriveId.decodeFromString(EXISTING_FOLDER_ID); // this causes error
@Override
public void onConnected(Bundle connectionHint) {
super.onCreate(connectionHint);
setContentView(R.layout.activity_listfiles);
mResultsListView = (ListView) findViewById(R.id.listViewResults);
mResultsAdapter = new ResultsAdapter(this);
mResultsListView.setAdapter(mResultsAdapter);
showMessage("EXISTING_FOLDER_ID:" + EXISTING_FOLDER_ID);
Drive.DriveApi.fetchDriveId(getGoogleApiClient(), EXISTING_FOLDER_ID)
.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);
}
};
final private ResultCallback<MetadataBufferResult> metadataResult = new
ResultCallback<MetadataBufferResult>() {
@Override
public void onResult(MetadataBufferResult result) {
if (!result.getStatus().isSuccess()) {
showMessage("Problem while retrieving files");
return;
}
mResultsAdapter.clear();
mResultsAdapter.append(result.getMetadataBuffer());
showMessage("Successfully listed files.");
Intent intent2 = new Intent(ListFilesInFolderActivity.this, ListFilesActivity.class);
startActivity(intent2);
}
};
}
当我收到以下消息时,这就完成了:
showMessage("Successfully listed files.");
然后我调用我认为正在填充 ListView 的 ListFilesInFolderActivity(当我说调用时,我正在使用新的意图来显示活动)。
但问题是 ListView 中只列出了顶级文件夹和文件。不是所选文件夹中的文件。
我的意图是显示该“选择”文件夹中的所有文件并使其可选择(多选)。
我尝试使用“PickFileWithOpenerActivity”,但它只允许您从谷歌驱动器中选择一个文件。我希望能够在一个文件夹中选择多个文件。 (我认为没有办法改变)
有人可以看一下示例代码,让我知道是否需要更改任何内容以使 ListView 填充 所有 SELECTED 文件夹中的文件,(并使列表多选)?
我不应该使用 responseID 吗?我应该只使用 driveId 吗?
谢谢
【问题讨论】:
-
谁能帮忙解决这个问题,也许是 Cheryl Simon?谢谢
-
如果有人可以提供帮助,仍然需要帮助。
标签: java android google-drive-api