繁体   English   中英

如何在Android中从Kinvey下载文件

[英]How to download file from kinvey in android

尝试从kinvey将可公开访问的文件下载到android应用程序尝试以下代码,

FileOutputStream fos = new FileOutputStream(videoName);
        FileMetaData meta = new FileMetaData(videoName);
        meta.setId(videoName);
        kinveyClient.file().downloadWithTTL(meta.getId(), 1200000, fos, new DownloaderProgressListener() {
            @Override
            public void progressChanged(MediaHttpDownloader downloader) throws IOException {
                Log.i("", "progress updated: " + downloader.getDownloadState());
                final String state = new String(downloader.getDownloadState().toString());

                getActivity().runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        //tProgress.setText((tProgress.getText() == null) ? state : tProgress.getText() + "\n" + state)
                    }
                });
            }

            @Override
            public void onSuccess(Void result) {
            }

            @Override
            public void onFailure(Throwable error) {
            }
        });

获得事件成功,但未接收到数据。 任何想法这将如何工作?

得到这样的错误:

failure com.kinvey.java.core.KinveyJsonResponseException: InsufficientCredentials
                                                          The credentials used to authenticate this request are not authorized to run this operation. Please retry your request with appropriate credentials

根据文档,这就是应该使用从getDownloadState()获得的值的方式。 为了获得下载进度,您需要首先检查downloadState等于DOWNLOAD_IN_PROGRESS值,然后使用download.getProgress()方法获取进度,然后可以使用它来更新进度值滑块,(您不应像上面那样使用toString()方法将这些值转换为字符串。

public void progressChanged(MediaHttpDownloader downloader) throws IOException {
  switch (downloader.getDownloadState()) {
    case DOWNLOAD_IN_PROGRESS:
      //Download in progress
      //Download percentage:  + downloader.getProgress()
      break;
    case DOWNLOAD_COMPLETE:
      //Download Completed!
      break;
  }
}

代码来自此处的文档

娜亚娜

您可能会收到此错误,因为用户没有访问该文件的权限。 您可以尝试以下解决您的问题:

  • 如果您使文件公开可读,则所有通过身份验证的用户都将能够访问该特定文件。
  • 您可以通过为ACL中的几个用户添加读写权限来使文件可访问。

另请参阅访问控制列表的文档: http : //devcenter.kinvey.com/rest/guides/security#entityanduserpermissions

谢谢,Pranav Kinvey支持

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM