1
看來,DownloadManager沒有正確解析URL中的國際字符。無法從使用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支持下載具有國際名稱的文件?
編輯:標題
請更改您的文章的主題,因爲它不是文件,而是包含它們的網址。 – greenapps