android - 使用 Google Drive API - 如何显示根文件夹中的文件夹列表

标签 android google-drive-api

我正在尝试创建一个 Android 应用程序,以便用户可以从他们的 Google Drive 浏览和选择文件。

我是 Android 的新手,我主要尝试使用示例。 当我在手机上运行 APK 时,身份验证似乎工作正常,但我不确定如何检索和显示云端硬盘文件夹。

  1. 如何检索它们?
  2. 它们应该显示在什么地方(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 失败了?

最佳答案

请在此处查看 README 的需要 https://github.com/googledrive/android-demos/blob/master/README.md

您需要更改 EXISTING_FOLDER_ID 以指向您的应用程序有权访问的云端硬盘文件夹的资源 ID。例如,您可以创建一个新文件夹,然后使用该 ID。

关于android - 使用 Google Drive API - 如何显示根文件夹中的文件夹列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22507244/

相关文章:

javascript - 简单语音合成 js 使 Chrome 崩溃并显示 Aw Snap 屏幕

android - 三星 Galaxy S7 (Camera2) 上的 YUV_420_888 解读

google-api - Google Drive API - 查询每个共享文件(与我共享或我与其他人共享)

google-apps-script - 从 Google App Script 服务器代码将文件写入附加组件上的应用程序数据文件夹

google-apps-script - 列出并复制 Google 表格文件的特定命名版本

java - 每次我在按钮的 Onclick 监听器中运行此 "if else"条件语句时,Android 应用程序都会关闭

javascript - 在AVD(android studio)中运行的 native android浏览器中调试网站

Android 对话框仅在第二次单击时关闭。为什么?

android - 使用 ParseFacebookUtil.login() 登录 facebook 返回空用户和异常无效日期

android - Google Drive REST API : java. lang.IllegalArgumentException:名称不能为空:null