【问题标题】:how to use DownloadManager columns如何使用 DownloadManager 列
【发布时间】:2018-11-11 12:40:21
【问题描述】:

我想知道如何使用像COLUMN_ID 这样的DownloadManager 列,因为当我直接使用它时它给了我常量值 我是 android 编程新手(c# 背景),所以我需要一些有关 android 基础知识的帮助,我已经阅读了 android 开发人员指南,但它缺少示例,所以它毫无价值
我想念 C# 指南 ;(
这是我的代码:

fun download(url: String, name: String) {
    //start download request
    var request = DownloadManager.Request(Uri.parse(url))
    request.setVisibleInDownloadsUi(true)
    request.allowScanningByMediaScanner()
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
    request.setDestinationInExternalPublicDir("a destination", "$name.pdf")
    // get download service and enqueue file
    val manager = getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
    manager.enqueue(request)
    var x = (DownloadManager.COLUMN_ID)
    Toast.makeText(applicationContext,x ,Toast.LENGTH_SHORT).show()
    //or 
    //var x = (DownloadManager.COLUMN_TOTAL_SIZE_BYTES)
    //Toast.makeText(applicationContext,x ,Toast.LENGTH_SHORT).show()
}

Toast 文本是:

_id (for COLUMN_ID)             
total_size(for COLUMN_TOTAL_SIZE_BYTES)

【问题讨论】:

    标签: android android-studio download kotlin android-download-manager


    【解决方案1】:

    这个答案是Java,你需要修改它。

    向下载管理器查询已请求的下载。

    Cursor cursor = downloadManager.query(ImageDownloadQuery);
    if (cursor.moveToFirst()) {
        Download(cursor, Image_DownloadId);
    }
    
    private void Download(Cursor cursor, long DownloadId) {
    
            //column for download  columnId
            int columnIndex = cursor.getColumnIndex(DownloadManager.COLUMN_ID);
            int columnId = cursor.getInt(columnIndex);
            Log.d("Tag", "columnId " +columnId);
    }
    

    【讨论】:

      【解决方案2】:

      收到带有下载 id 的广播后,您可以使用该 id 获取与下载相关的详细信息。在您的广播接收器中,您会获得类似intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID 的下载 ID。您获取此 id 并查询下载管理器。

          DownloadManager.Query query = new DownloadManager.Query();
          query.setFilterById(downloadId);
          Cursor cursor = downloadManager.query(query);
      

      一旦你得到光标,你就可以像这样运行一个循环。

           if (cursor.moveToFirst()) {
              if (cursor.getCount() > 0) {
      
                  int statusOfTheDownload = cursor.
              getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS));
                  String fileUri = cursor.
              getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));
      
              }
          }
      

      【讨论】:

        猜你喜欢
        • 2011-11-07
        • 2016-10-07
        • 1970-01-01
        • 2016-02-26
        • 1970-01-01
        • 2014-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多