其他分享
首页 > 其他分享> > android – 使用Google Drive API – 如何在根文件夹中显示文件夹列表

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