我正在尝试创建一个Android应用程序,以便用户可以从Google Drive中浏览和选择文件。使用Google Drive API - 如何显示根文件夹中的文件夹列表
我完全是Android的新手,我一直在尝试使用这些示例。 当我在手机上运行APK时,身份验证似乎可以正常工作,但我不确定如何检索并显示云端硬盘文件夹。
- 它们如何被检索?
- 它们应该在(
ListView
?)中显示什么,以便用户可以导航到文件?
我onConnected代码工作正常,但我认为问题是与DriveId没有正确填充。
@Override
public void onConnected(Bundle connectionHint) {
Log.i(TAG, "API client connected.");
super.onCreate(connectionHint);
setContentView(R.layout.activity_listfiles);
mResultsListView = (ListView) findViewById(R.id.listViewResults);
mResultsAdapter = new ResultsAdapter(this);
mResultsListView.setAdapter(mResultsAdapter);
Drive.DriveApi.fetchDriveId(getGoogleApiClient(), EXISTING_FOLDER_ID)
.setResultCallback(idCallback);
}
我有一个名为“activity_listfiles.xml”的布局。在该布局上,它只是一个ListView:@ id/listViewResults
代码进入此方法,因为我得到DriveID错误消息:无法找到DriveId。您有权查看此文件吗?
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());
folder.listChildren(getGoogleApiClient())
.setResultCallback(metadataResult);
}
};
任何人都可以指向正确的方向吗?我使用的是以下内容作为指南: https://github.com/googledrive/android-demos/tree/master/src/com/google/android/gms/drive/sample/demo
这里是ResultsAdapter Java文件,我不知道它做什么,或者我需要改变它:
public class ResultsAdapter extends DataBufferAdapter<Metadata> {
public ResultsAdapter(Context context) {
super(context, android.R.layout.simple_list_item_1);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = View.inflate(getContext(),
android.R.layout.simple_list_item_1, null);
}
Metadata metadata = getItem(position);
TextView titleTextView =
(TextView) convertView.findViewById(android.R.id.text1);
titleTextView.setText(metadata.getTitle());
return convertView;
}
}
我要补充的是,字符串EXISTING_FOLDER_ID处于BaseActivity.java和代码行的样子:
public static final String EXISTING_FOLDER_ID = "0B2EEtIjPUdX6MERsWlYxN3J6RU0";
我需要它,我需要一个ID以某种方式来填充呢?
我试着使用:
EXISTING_FOLDER_ID = Drive.DriveApi.getRootFolder(getGoogleApiClient()).getDriveId().toString();
showMessage(EXISTING_FOLDER_ID);
Drive.DriveApi.fetchDriveId(getGoogleApiClient(),EXISTING_FOLDER_ID)
.setResultCallback(idCallback);
的showMessage程序会显示一个ID - 因此,它是取根文件夹ID,但由于某种原因它仍然显示“无法找到驱动器Id”消息。
所以fetchDriveID失败?
我试过了。我用chrome浏览我的驱动器文件夹,然后从URL中获取文件夹ID。我对这个值进行了硬编码,并且仍然有相同的错误。当然,必须有一种方法来列出用户文件夹? – user3437721
我也试图通过尝试获取根文件夹的ID,如下所示来动态设置值:EXISTING_FOLDER_ID = Drive.DriveApi.getRootFolder(getGoogleApiClient())。getDriveId()。toString(); – user3437721
由于您有“Drive.File”范围,您的应用程序需要有权访问该文件夹才能查看该文件夹。因此,我建议为应用程序创建一个新文件。或者,您可以使用Android OpenFileDialog使用您的应用选择一个文件夹。 –