Android DownloadManager Ошибка загрузки требует сети - PullRequest
2 голосов
/ 21 декабря 2011

Я использую DownloadManager, чтобы поставить в очередь некоторые загружаемые мной файлы, но сталкиваюсь с этой проблемой, когда я специально пытаюсь использовать соединение Mobile / 4G. Я использую телефон Android 2.3.4. Мой код использует API 2.3.3.

Я делаю следующую команду (я хочу, чтобы соединение использовало 4G / 3G)

request.setAllowedNetworkTypes(Request.NETWORK_MOBILE);

Однако, когда бы он ни пытался загрузить, он помещает загрузку в список DownloadManager, но он всегда остается в статусе «Выполняется», а в верхней части списка указывается имя файла и ошибка «Загрузка требует сети».

Когда я продолжаю расследование и подключаю свое устройство для просмотра журналов в 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  

Есть идеи, что это может быть? Я все еще не получил разрешение? Есть ли другой параметр, которым мне нужно управлять, чтобы указать только использование сетевого подключения?

EDIT: Я пробовал это на совершенно новом планшете Galaxy, и это поведение, которое я замечаю при использовании этого устройства: когда Wi-Fi включен и подключен, он не загружается при указании использования NETWORK_MOBILE. Если Wi-Fi выключен или не подключен, у него нет проблем с использованием соединения 4G. Я думаю, что это функция безопасности, выполняемая устройством, это может быть переопределено?

Ответы [ 2 ]

1 голос
/ 18 января 2012

Эта ошибка возникает, когда у вас нет подключения к данным (не имеет значения, подключены ли вы к Wi-Fi). Вам разрешено указывать NETWORK_MOBILE само по себе , но вы получите сообщение об ошибке «Загрузка требует сети», если оно попытается выполнить загрузку, когда ваше подключение для передачи данных в данный момент не работает.

Мой совет, чтобы снова установить соединение для передачи данных, - ходить до тех пор, пока вы не получите соединение снова. Я могу сказать, когда у меня есть подключение для передачи данных на моем телефоне Droid Bionic, потому что верхняя полоса значков, которая говорит 4G LTE и 4 бара поворот синий вместо белого ,

1 голос
/ 22 декабря 2011

Я не знаю, как вы настраиваете свой менеджер загрузок, но именно так я и использовал его на проходе.

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);
}
...