在Android应用中显示存储在Google云端硬盘中的文件夹和文件

时间:2017-07-30 18:31:35

标签: android google-drive-android-api

我已经阅读了很多关于上述主题的演示和纪录片。但在这里我想要一些不同的东西如果我创建一个名为A的常见谷歌驱动器,那么拥有我的应用程序的人应该能够阅读文档,并且我想使用文本视图在驱动器A中显示内容。 如果你知道答案,请告诉我这些步骤或方法。

非常感谢。 :)

2 个答案:

答案 0 :(得分:0)

您可以查看此Google Drive Android API Demos,其中说明了使用Google Play Services中提供的界面与Drive服务对话的所有可能方式。

RetrieveContentsActivity.java活动说明了如何检索和读取文件内容。然后,ListFilesInFolderActivity.java活动说明了如何列出文件夹中的文件。

另外,请注意permission授予用户,组,域或世界对文件或文件夹层次结构的访问权。

希望这有帮助!

答案 1 :(得分:0)

按照以下代码获取保存在应用程序数据中的所有数据

private void listFiles() {
        Query query =
                new Query.Builder()
                        .addFilter(Filters.or(Filters.eq(SearchableField.MIME_TYPE, "text/html"),
                                Filters.eq(SearchableField.MIME_TYPE, "text/plain")))
                        .build();
        getDriveResourceClient()
                .query(query)

                .addOnSuccessListener(this,

                        new OnSuccessListener<MetadataBuffer>() {
                            @Override
                            public void onSuccess(MetadataBuffer metadataBuffer) {

                                for (int i = 0; i <metadataBuffer.getCount() ; i++) {
                                    retrieveContents(metadataBuffer.get(i).getDriveId().asDriveFile());
                                }
                            }
                        }

                )
                .addOnFailureListener(this, new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Log.e(TAG, "Error retrieving files", e);
                        MainActivity.this.finish();
                    }
                });

    }

现在按照代码

获取已保存在Google驱动器中的所有数据。
 public void retrieveContents(DriveFile file) {

        Task<DriveContents> openFileTask =
                getDriveResourceClient().openFile(file, DriveFile.MODE_READ_ONLY);



        openFileTask.continueWithTask(new Continuation<DriveContents, Task<Void>>() {
            @Override
            public Task<Void> then(@NonNull Task<DriveContents> task) throws Exception {
                DriveContents contents = task.getResult();

                try (BufferedReader reader = new BufferedReader(
                        new InputStreamReader(contents.getInputStream()))) {
                    StringBuilder builder = new StringBuilder();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        builder.append(line).append("\n");
                    }

                    Log.e("result ", builder.toString());
                }

                Task<Void> discardTask = MainActivity.this.getDriveResourceClient().discardContents(contents);

                return discardTask;
            }
        })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {

                    }
                });


    }