【发布时间】:2016-02-06 17:36:55
【问题描述】:
看来,DownloadManager 没有正确解析带有国际字符的 URL。
private DownloadManager mTestDl;
public void downloadTest() {
mTestDl = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
BroadcastReceiver br = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Long referenceId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
DownloadManager.Query q = new DownloadManager.Query();
q.setFilterById(referenceId);
Cursor c = mTestDl.query(q);
if (!c.moveToFirst()) {
Log.i(TAG, "No downloaded file");
}
else {
c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));
for (String cn : c.getColumnNames()) {
String value = c.getString(c.getColumnIndex(cn));
int intValue = c.getInt(c.getColumnIndex(cn));
Log.i(TAG, "XColumn: " + cn + ". Value: " + value + ". int value: " + intValue);
}
}
}
};
registerReceiver(br, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
Uri uri = Uri.parse("http://media.sample.com/video/[요기요]_11월_냠냠냠.mp4");
DownloadManager.Request request = new DownloadManager.Request(uri);
long dlid = mTestDl.enqueue(request);
Log.v(TAG, "download ID: " + dlid);
}
结果是:
XColumn: _id. Value: 4141. int value: 4141
XColumn: local_filename. Value: null. int value: 0
XColumn: mediaprovider_uri. Value: null. int value: 0
XColumn: destination. Value: 2. int value: 2
XColumn: title. Value: . int value: 0
XColumn: description. Value: . int value: 0
XColumn: uri. Value: http://media.sample.com/video/[요기요]_11월_냠냠냠.mp4. int value: 0
XColumn: status. Value: 403. int value: 16
XColumn: hint. Value: null. int value: 0
XColumn: media_type. Value: null. int value: 0
XColumn: total_size. Value: -1. int value: -1
XColumn: last_modified_timestamp. Value: 1446747064114. int value: -656914638
XColumn: bytes_so_far. Value: 0. int value: 0
XColumn: allow_write. Value: 0. int value: 0
XColumn: local_uri. Value: content://downloads/my_downloads/4141. int value: 0
XColumn: reason. Value: placeholder. int value: 403
通常,HTTP 状态 403 表示“未经授权的访问”。在这种情况下,虽然托管是 Amazon S3,但它在尝试列出文件夹的内容时会给出 403。因此,假设 URL 不正确。
DownloadManager 是否支持下载具有国际名称的文件?
编辑:标题
【问题讨论】:
-
请更改您帖子的主题,因为它不是文件,而是包含它们的网址。
标签: android amazon-s3 amazon android-download-manager