如何使用Android API下载Google驱动器文件

马诺吉

以下程序将显示来自Google驱动器的“与您共享的文件”。我在listView中显示所有文件,在这里我想每当用户单击列表项时下载google驱动器文件,并且我编写了代码以获取文件的驱动器ID。

这就是我在以下代码中所做的。

每当用户使用Google Drive Android API单击列表项时,请帮助我从Google Drive下载文件。

public class MainActivity extends BaseDemoActivity{ 
private static final String TAG = "MainActivity";
private ListView mResultsListView;
private ResultsAdapter mResultsAdapter;
private ProgressBar mProgressBar;
private DriveId mSelectedFileDriveId;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mResultsListView = (ListView) findViewById(R.id.listViewSamples);
    mResultsAdapter = new ResultsAdapter(this);
    mResultsListView.setAdapter(mResultsAdapter);

    mResultsListView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
                 if (mSelectedFileDriveId != null) {
                        open();
                        return;
                    }
            }


    });
}
private void open() {
    showMessage("Select files drive id = "+mSelectedFileDriveId);
    // Reset progress dialog back to zero as we're
    // initiating an opening request.
   // mProgressBar.setProgress(0);
    DownloadProgressListener listener = new DownloadProgressListener() {
        @Override
        public void onProgress(long bytesDownloaded, long bytesExpected) {
            // Update progress dialog with the latest progress.
            int progress = (int)(bytesDownloaded*100/bytesExpected);
            Log.d(TAG, String.format("Loading progress: %d percent", progress));
            mProgressBar.setProgress(progress);
        }
    };

    Drive.DriveApi.getFile(getGoogleApiClient(), mSelectedFileDriveId)
        .open(getGoogleApiClient(), DriveFile.MODE_READ_WRITE, listener)
        .setResultCallback(driveContentsCallback);
    mSelectedFileDriveId = null;

}

private ResultCallback<DriveContentsResult> driveContentsCallback =
        new ResultCallback<DriveContentsResult>() {
    @Override
    public void onResult(DriveContentsResult result) {
        if (!result.getStatus().isSuccess()) {
            showMessage("Error while opening the file contents");
            return;
        }
        showMessage("File contents opened");       
    }
};

/**
 * Clears the result buffer to avoid memory leaks as soon as the activity is no longer
 * visible by the user.
 */
@Override
protected void onStop() {
    super.onStop();
    mResultsAdapter.clear();
}

@Override
public void onConnected(Bundle connectionHint) {
    super.onConnected(connectionHint); 
   Drive.DriveApi.requestSync(getGoogleApiClient())
   .setResultCallback(statusCallback);
    showMessage("Connecting ...");
}

final private ResultCallback<Status> statusCallback =
        new ResultCallback<Status>() {
            @Override
            public void onResult(Status arg0) {
                // TODO Auto-generated method stub
             showMessage("Fetching...");
             if(arg0.getStatus().isSuccess()){
                 Query query = new Query.Builder()
                    .addFilter(Filters.sharedWithMe())
                    .build();

                 Drive.DriveApi.query(getGoogleApiClient(), query)
                 .setResultCallback(metadataCallback);
             }else{
                 showMessage("Error = "+arg0);
             }
        }
};

final private ResultCallback<DriveApi.MetadataBufferResult> metadataCallback = 
        new ResultCallback<DriveApi.MetadataBufferResult>() {
            @Override
            public void onResult(DriveApi.MetadataBufferResult result) {
                // TODO Auto-generated method stub
                showMessage("onResult ...");
                if (!result.getStatus().isSuccess()) {
                    showMessage("Problem while retrieving results");
                    return;
                }
                mResultsAdapter.clear();
                mResultsAdapter.append(result.getMetadataBuffer());
                MetadataBuffer buffer = result.getMetadataBuffer();
                Metadata meta = buffer.get(0);
                Log.v(TAG,"WEB CONTENT LINK = "+meta.getWebContentLink());
                mSelectedFileDriveId = (DriveId) meta.getDriveId();
                showMessage("Count = "+mResultsAdapter.getCount());
            }
        };  

}

里韦罗

由于API中没有直接下载文件的特定方法,因此有两种解决方法来完成此任务:

a)通过调用getFile()方法创建一个DriveFile对象。然后,使用java.io.InputStream库打开文件,并将此流转换为本地文件。有关此资源的更多信息:https : //developers.google.com/drive/android/files

b)使用元数据WebContentLink,可以通过浏览器上的意图或通过WebView访问该URL。您可能需要再次进行身份验证。在浏览器中打开文件应提示下载请求。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

python:如何使用api从Google驱动器下载文件

来自分类Dev

使用没有Google API的C#从Google驱动器下载文件

来自分类Dev

Google Drive Android API-从驱动器下载数据库文件

来自分类Dev

Python:使用网址从Google驱动器下载文件

来自分类Dev

使用wget从Google驱动器下载文件

来自分类Dev

使用Android Studio中的Google Drive API从驱动器下载文件以上传到另一个驱动器

来自分类Dev

如何使用 DriveApi 从谷歌驱动器下载选定的文件?

来自分类Dev

如何通过Bash中的curl从Google驱动器下载大文件?

来自分类Dev

当我使用Java从Google驱动器下载文件时,出现符号

来自分类Dev

使用javascript和mvc3从Google驱动器下载文件

来自分类Dev

Google Drive API-Android-如何获取驱动器文件ID?

来自分类Dev

使用Google Apps脚本将文件从Google驱动器上传到外部API

来自分类Dev

如何复制Google驱动器文件夹并删除Google驱动器关联?

来自分类Dev

如何通过API在Google驱动器中获取“与我共享”文件?

来自分类Dev

如何通过API在Google驱动器中获取“与我共享”文件?

来自分类Dev

使用PHP API获取Google驱动器上的文件列表

来自分类Dev

使用PHP API获取Google驱动器上的文件列表

来自分类Dev

结合使用Google Drive API和Java,如何仅列出“驱动器”部分/文件夹中的文件

来自分类Dev

在API级别19以下的Android中选择文件或图像时,如何限制Google驱动器选项不出现?

来自分类Dev

如何从GTLDriveFile获取URL到Google驱动器文件?

来自分类Dev

如何在Python中使用Google API v3使驱动器文件夹“对网络公开”?

来自分类Dev

如何使用 Google Drive API V3 将文件上传到 Group Drive(共享驱动器)?

来自分类Dev

在google-api-services-drive中使用共享驱动器的fileId时,为什么“找不到文件”?

来自分类Dev

使用python,我无法从Google Drive API v3访问共享驱动器文件夹

来自分类Dev

谷歌驱动器的pydrive库未使用请求以请求的格式下载文件

来自分类Dev

PHP 使用外部磁盘驱动器下载文件

来自分类Dev

如何使用Google App脚本列出Google驱动器文件的注释?

来自分类Dev

当下载文件夹位于D:上时,Chrome使用C:驱动器上的空间进行下载。

来自分类Dev

使用Google Colab时如何将文件写入本地驱动器?

Related 相关文章

  1. 1

    python:如何使用api从Google驱动器下载文件

  2. 2

    使用没有Google API的C#从Google驱动器下载文件

  3. 3

    Google Drive Android API-从驱动器下载数据库文件

  4. 4

    Python:使用网址从Google驱动器下载文件

  5. 5

    使用wget从Google驱动器下载文件

  6. 6

    使用Android Studio中的Google Drive API从驱动器下载文件以上传到另一个驱动器

  7. 7

    如何使用 DriveApi 从谷歌驱动器下载选定的文件?

  8. 8

    如何通过Bash中的curl从Google驱动器下载大文件?

  9. 9

    当我使用Java从Google驱动器下载文件时,出现符号

  10. 10

    使用javascript和mvc3从Google驱动器下载文件

  11. 11

    Google Drive API-Android-如何获取驱动器文件ID?

  12. 12

    使用Google Apps脚本将文件从Google驱动器上传到外部API

  13. 13

    如何复制Google驱动器文件夹并删除Google驱动器关联?

  14. 14

    如何通过API在Google驱动器中获取“与我共享”文件?

  15. 15

    如何通过API在Google驱动器中获取“与我共享”文件?

  16. 16

    使用PHP API获取Google驱动器上的文件列表

  17. 17

    使用PHP API获取Google驱动器上的文件列表

  18. 18

    结合使用Google Drive API和Java,如何仅列出“驱动器”部分/文件夹中的文件

  19. 19

    在API级别19以下的Android中选择文件或图像时,如何限制Google驱动器选项不出现?

  20. 20

    如何从GTLDriveFile获取URL到Google驱动器文件?

  21. 21

    如何在Python中使用Google API v3使驱动器文件夹“对网络公开”?

  22. 22

    如何使用 Google Drive API V3 将文件上传到 Group Drive(共享驱动器)?

  23. 23

    在google-api-services-drive中使用共享驱动器的fileId时,为什么“找不到文件”?

  24. 24

    使用python,我无法从Google Drive API v3访问共享驱动器文件夹

  25. 25

    谷歌驱动器的pydrive库未使用请求以请求的格式下载文件

  26. 26

    PHP 使用外部磁盘驱动器下载文件

  27. 27

    如何使用Google App脚本列出Google驱动器文件的注释?

  28. 28

    当下载文件夹位于D:上时,Chrome使用C:驱动器上的空间进行下载。

  29. 29

    使用Google Colab时如何将文件写入本地驱动器?

热门标签

归档