2011-12-21 64 views
2

我正在使用DownloadManager排列我正在做的一些下載,但是當我專門嘗試使用Mobile/4G連接時遇到此問題。我正在使用Android 2.3.4手機。我的代碼使用2.3.3 API。Android DownloadManager'下載需要網絡'錯誤

我做下面的命令(我想迫使連接使用4G/3G)

request.setAllowedNetworkTypes(Request.NETWORK_MOBILE); 

每當它試圖但是下載,它會將下載的下載管理器上市,但它永遠是在狀態「正在進行」中,並且在頂部的錯誤列出文件名和錯誤「下載需要網絡」。

當我進一步調查,並連接我的設備看到的logcat日誌,我看到下面的錯誤,當它試圖下載:

中止請求下載92:下載請求不使用當前的網絡類型

我有以下權限:

android.permission.WRITE_OWNER_DATA 
android.permission.READ_OWNER_DATA 
android.permission.WRITE_EXTERNAL_STORAGE 
android.permission.INTERNET  
android.permission.ACCESS_NETWORK_STATE 
android.permission.ACCESS_WIFI_STATE 
android.permission.CHANGE_WIFI_MULTICAST_STATE 
android.permission.CHANGE_NETWORK_STATE 
android.permission.CHANGE_WIFI_STATE 

的可能是什麼任何想法?我仍然錯過許可?是否有另一個設置需要控制才能指定僅使用網絡連接?

編輯: 我試過這在一個全新的銀河平板電腦,這是我注意到使用此設備的行爲:當無線開啓和連接,它指定使用NETWORK_MOBILE時無法下載。如果wifi關閉或沒有連接,使用4G連接沒有問題。我認爲這是一個由設備完成的安全功能,是否可以超頻?

+0

你在主線程上使用DownloadManager嗎? – 2011-12-21 20:07:02

+0

我有一個活動叫: Intent i = new Intent(); 012.i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS); startActivity(i); 此外,我已經嘗試做以下事情無濟於事: ConnectivityManager cm =(ConnectivityManager)getBaseContext()。getSystemService(Context.CONNECTIVITY_SERVICE); cm.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE,「enableHIPRI」); – azdragon2 2011-12-21 20:11:31

+0

您的意思是說,自從DownloadManager在Api級別9(2.3薑餅)之前不可用時,您是否使用2.3 api? – 2011-12-21 20:23:19

回答

1

當你沒有數據連接(不管你是否連接到無線網絡無關緊要)時會發生此錯誤。您可以指定NETWORK_MOBILE 本身,但如果它在您的數據連接當前不工作時嘗試進行下載,它會向您發出一條錯誤消息,說「下載需要網絡」。

我的建議是再次獲得數據連接,直到再次獲得連接。我可以告訴我什麼時候在我的Droid Bionic手機上有數據連接,因爲頂部的條形圖標表示4G LTE4條藍色而不是白色。

+0

你的解釋有何參考? – Amir 2016-08-25 16:23:21

1

我不知道你是如何設置你的下載管理器,但這是如何使用它的通行證。

private long enqueue; 
private DownloadManager dm; 

public void onClick(View view) { 
    dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); 
    Request request = new Request(
      Uri.parse("File URL")); 
    enqueue = dm.enqueue(request); 

} 

public void showDownload(View view) { 
    Intent i = new Intent(); 
    i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS); 
    startActivity(i); 
} 
+0

是的,這正是我使用它的方式: dm =(DownloadManager)getSystemService(DOWNLOAD_SERVICE); DownloadManager.Request request = new DownloadManager.Request(resource); request.setAllowedNetworkTypes(Request.NETWORK_MOBILE); long id = dm.enqueue(request); 而我使用相同的確切類型的方法來顯示它。 – azdragon2 2011-12-21 20:17:52

+0

感謝您通過我瀏覽這個。只要我指定:一切正常工作正常從DownloadManager中:request.setAllowedNetworkTypes(Request.NETWORK_WIFI);或request.setAllowedNetworkTypes(Request.NETWORK_MOBILE | Request.NETWORK_WIFI);只是當我嘗試僅使用Request.NETWORK_MOBILE時。 – azdragon2 2011-12-21 20:25:56