Мобильная сеть
В целях демонстрации в качестве типа сети для загрузки была выбрана мобильная сеть, но можно было указать WiFi (используя вместо NETWORK_MOBILE значение NETWORK_WIFI) либо с помощью операции “ИЛИ” задать два значения, чтобы разрешить любое из них. По умолчанию загрузка разрешена для обеих сетей, и указание NETWORK _ MOBILE означает, что необходимо использовать только мобильную сеть, даже если сеть WiFi доступна.
После настройки объекта запроса создается и регистрируется фильтр для широковещательного приемника. Код широковещательного приемника будет вскоре представлен. Регистрируя приемник, мы обеспечиваем поступление уведомлений о завершении любой загрузки. Это значит, что необходимо отслеживать идентификатор запроса, который возвращается при вызове enqueue () на объекте DownloadManager. Наконец, производится обновление сообщения о состоянии в пользовательском интерфейсе, чтобы отразить факт начала загрузки.
Для функционирования этого приложения понадобится указать пару разрешений (см. файл AndroidManifest.xml в е 15.14), которые позволят приложению получить доступ в Интернет и записать файл на SD-карту. Странность в версии Android 2.3 состоит в том, что если не указать разрешения согласно у 15.14, в LogCat будет зафиксировано сообщение об ошибке, уведомляющее об отсутствии разрешения ACCESS_ALL_DOWNLOADS, которое в принципе в этом примере не требуется.
После запуска приложение отобразит кнопку. Щелчок на этой кнопке инициирует операцию загрузки и вывод сообщения, как показано на рис. 15.3. Обратите внимание на значок загрузки в панели уведомлений в верхнем левом углу экрана. Перетаскивание этого значка вниз приводит к открытию окна уведомлений, которое выглядит примерно так, как показано на рис. 15.4.
Уведомление сообщает о выполнении загрузки в фоновом режиме. По завершении загрузки это уведомление очищается, а в приложении отобразится дополнительное сообщение (рис. 15.5).
В широковещательном приемнике мы опрашиваем намерение на предмет того, завершена ли загрузка. Если она завершена, мы обновляем сообщение о состоянии в пользовательском интерфейсе — и это все, что здесь делается. Вспомните, что внутри широковещательного приемника можно реализовать не так много обработки, потому что возврат из опБесегуеО должен быть произведен быстро. Взамен можно было бы, например, вызвать какую-то службу для обработки загруженного файла. Внутри этой службы для получения содержимого файла мог бы использоваться код, подобный приведенному в е 15.15.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.