android – 使用Google Drive API – 如何在根文件夹中显示文件夹列表
作者:互联网
我正在尝试创建Android应用,以便用户可以浏览并选择其Google云端硬盘中的文件.
我是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”的布局.在那个布局上它只是一个名为:@id / listViewResults的ListView
当我收到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,但由于某种原因它仍然显示“无法找到DriveID”消息.
那么fetchDriveID失败了吗?
解决方法:
请在https://github.com/googledrive/android-demos/blob/master/README.md看到自述文件的需要
您需要更改EXISTING_FOLDER_ID以指向您的应用程序有权访问的Drive文件夹的资源ID.例如,您可以创建一个新文件夹,然后使用该ID.
标签:android,google-drive-sdk 来源: https://codeday.me/bug/20190703/1365405.html