देता है डाउनलोड मैनेजर एक ऐप के लिए सही विकल्प प्रतीत होता है जिसमें फ्लैकी मोबाइल इंटरनेट कनेक्शन पर बहुत सारे पृष्ठभूमि डाउनलोड होते हैं।एंड्रॉइड डाउनलोड मैनेजर: डाउनलोड विफल रहता है, लेकिन COLUMN_REASON केवल "प्लेसहोल्डर"
वेब पर पाया ट्यूटोरियल कोड का उपयोग करना, एप्लिकेशन तो जैसे सिस्टम के डीएम से एक डाउनलोड का अनुरोध करने में सक्षम है:
// in onCreate()
dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
// in requestData()
Uri u = Uri.parse("http://server:8000/feed/data");
Request dreq = new Request(u);
dreq.setNotificationVisibility(Request.VISIBILITY_HIDDEN);
downloadID = dm.enqueue(dreq);
कि कोड में URL एक स्थानीय कंप्यूटर पर एक परीक्षण सर्वर है। यूआरएल काम करता है, एंड्रॉइड एमुलेटर में ब्राउजर पेज को पुनर्प्राप्त कर सकता है और सर्वर HTTP कोड 200 लौटाता है जब मेरा ऐप डाउनलोड मैनेजर और उपरोक्त उद्धृत कोड के माध्यम से उस पृष्ठ का अनुरोध करता है।
यह ACTION_DOWNLOAD_COMPLETE ब्रॉडकास्ट रिसीवर में प्रासंगिक कोड है जिसे डीएम ने फ़ाइल पुनर्प्राप्त करने पर बुलाया जाता है।
Query q = new Query();
q.setFilterById(downloadID);
Log.i("handleData()", "Handling data");
Cursor c = dm.query(q);
if (c.moveToFirst()) {
Log.i("handleData()", "Download ID: " + downloadID + "/" + c.getInt(c.getColumnIndex(DownloadManager.COLUMN_ID)));
Log.i("handleData()", "Download Status: " + c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS)));
if (c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS)) == DownloadManager.STATUS_SUCCESSFUL) {
String uriString = c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));
Log.i("handleData()", "Download URI: " + uriString);
} else if (c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS)) == DownloadManager.STATUS_FAILED) {
Log.i("handleData()", "Reason: " + c.getString(c.getColumnIndex(DownloadManager.COLUMN_REASON)));
}
}
अजीब परिणाम यह है:
DOWNLOAD_STATUS 16 (या STATUS_FAILED), लेकिन कारण "प्लेसहोल्डर" है।
वह क्यों है? जब सर्वर 200 स्टेटस कोड लौटाता है तो यह विफल क्यों होता है? और DownloadManager द्वारा कोई कारण क्यों नहीं दिया गया है?
जहां मैं देख सकता हूं कि – Nick
क्या है [डाउनलोड मैनेजर एपीआई दस्तावेज़] में सूचीबद्ध कई संभावित मान हैं (http://developer.android.com/reference/android/app/DownloadManager.html) - " उस पृष्ठ पर COLUMN_REASON का मान "। – hez