繁体   English   中英

使用Android下载提供程序进行文件下载

[英]File download using Android downloads provider

我正在尝试使用Webview在我的应用程序中下载电子邮件附件。 我遵循默认浏览器应用程序遵循的过程,如下所示:1)编写实现DownloadListener的MyWebViewClient并重写onDownloadStart。 webview调用传递MyWebViewClient实例的setDownloadListener的实例2)要下载,我创建ContentValues实例,并按如下所示填充值:

    ContentValues values = new ContentValues();
    values.put("uri", webAddress.toString());
    values.put("cookiedata", cookies);
    values.put("useragent", userAgent);
    values.put("notificationpackage",
           getPackageName());
    values.put("notificationclass",
            DownloadReceiver.class.getCanonicalName());

    values.put("visibility", 0);
    values.put("mimetype", mimetype);
    values.put("hint", filename);
    values.put("description", webAddress.mHost);
    values.put("is_public_api", Boolean.TRUE);
    values.put("destination", 4);
    if (contentLength > 0) {
        values.put("total_bytes", contentLength);
    }        

    final Uri contentUri =
            getContentResolver().insert(Uri.parse("content://downloads/my_downloads"), values);

请注意,由于我无法导入android.provider.Downloads,因此如上所述,我必须从Downloads.java提供实际的字符串值。 某种程度上下载无法与此代码一起使用。 另外,当程序通过DownloadProvider.java的checkInsertPermissions函数时,我必须放置“ is_public_api”的值,并还要设置“目标”,该函数使用forcelAllowedValues来检查这些值。 我无法将目标放置到要下载的外部sdcard上。 我看到默认的Android浏览器未设置“ is_public_api”和“目的地”的值(请参见BrowserActivity.java)。 默认浏览器如何工作? 如果我不为这些值输入值,则会收到“安全性异常”。

我在清单中设置了“ android.permission.ACCESS_DOWNLOAD_MANAGER”权限。

您还具有写入清单中设置的SD卡的权限吗?

暂无
暂无

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

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