Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
yol
10 / 10 / 0
Регистрация: 13.10.2012
Сообщений: 155
#1

Ошибка при добавлении файла в очередь загрузки (android.app.DownloadManager) - Программирование Android

12.05.2014, 17:12. Просмотров 981. Ответов 6
Метки нет (Все метки)

Пытаюсь загрузить файл с сервера, таким способом:
Java
1
2
3
4
5
6
7
8
9
public void download(Context context, String url)
    {
        String service=Context.DOWNLOAD_SERVICE;
        DownloadManager dm;
        dm=(DownloadManager) context.getSystemService(service);
        Uri uri=Uri.parse(url);
        DownloadManager.Request request=new Request(uri);
        Long reference=dm.enqueue(request);
    }
Реализация находится в отдельном классе (не в MainActivity.java).
Решил выявить источник ошибки (использовал вывод логов); на этапе добавления в очередь (dm.enqueue()) возникает ошибка (в AVD: "the application has stopped unexpectedly"). В чем может быть дело?

Добавлено через 13 минут
Вообще говоря, когда-где... Теперь возникает ошибка на этапе создания request'а.

Java
1
2
3
4
5
6
7
8
9
public void download2(Context context, String url)
    {
        String service=Context.DOWNLOAD_SERVICE;                    Log.d("LOG", "*Step1*");
        DownloadManager dm;                                         Log.d("LOG", "*Step2*");
        dm=(DownloadManager) context.getSystemService(service);     Log.d("LOG", "*Step3*");
        Uri uri=Uri.parse(url);                                     Log.d("LOG", "*Step4*");
        DownloadManager.Request request=new Request(uri);           Log.d("LOG", "*Step5*");
        Long reference=dm.enqueue(request);                         Log.d("LOG", "*Step6*");
    }
Тут лог:
Кликните здесь для просмотра всего текста
05-12 13:09:30.725: D/LOG(463): *Step1*
05-12 13:09:30.725: D/LOG(463): *Step2*
05-12 13:09:30.735: D/LOG(463): *Step3*
05-12 13:09:30.735: D/LOG(463): *Step4*
05-12 13:09:30.735: D/AndroidRuntime(463): Shutting down VM
05-12 13:09:30.735: W/dalvikvm(463): threadid=1: thread exiting with uncaught exception (group=0x40015560)
05-12 13:09:30.745: E/AndroidRuntime(463): FATAL EXCEPTION: main
05-12 13:09:30.745: E/AndroidRuntime(463): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.timetableetu/com.example.timetableetu.MainActivity}: java.lang.IllegalArgumentException: Can only download HTTP URIs: https://timetable-etu.googlecode.com...ta/sources.xls
05-12 13:09:30.745: E/AndroidRuntime(463): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
05-12 13:09:30.745: E/AndroidRuntime(463): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
05-12 13:09:30.745: E/AndroidRuntime(463): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
05-12 13:09:30.745: E/AndroidRuntime(463): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
05-12 13:09:30.745: E/AndroidRuntime(463): at android.os.Handler.dispatchMessage(Handler.java:99)
05-12 13:09:30.745: E/AndroidRuntime(463): at android.os.Looper.loop(Looper.java:123)
05-12 13:09:30.745: E/AndroidRuntime(463): at android.app.ActivityThread.main(ActivityThread.java:3683)
05-12 13:09:30.745: E/AndroidRuntime(463): at java.lang.reflect.Method.invokeNative(Native Method)
05-12 13:09:30.745: E/AndroidRuntime(463): at java.lang.reflect.Method.invoke(Method.java:507)
05-12 13:09:30.745: E/AndroidRuntime(463): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-12 13:09:30.745: E/AndroidRuntime(463): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-12 13:09:30.745: E/AndroidRuntime(463): at dalvik.system.NativeStart.main(Native Method)
05-12 13:09:30.745: E/AndroidRuntime(463): Caused by: java.lang.IllegalArgumentException: Can only download HTTP URIs: https://timetable-etu.googlecode.com...ta/sources.xls
05-12 13:09:30.745: E/AndroidRuntime(463): at android.app.DownloadManager$Request.<init>(DownloadManager.java:349)
05-12 13:09:30.745: E/AndroidRuntime(463): at com.example.timetableetu.DownloadFile.download2(DownloadFile.java:52)
05-12 13:09:30.745: E/AndroidRuntime(463): at com.example.timetableetu.MainActivity.onCreate(MainActivity.java:43)
05-12 13:09:30.745: E/AndroidRuntime(463): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-12 13:09:30.745: E/AndroidRuntime(463): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
05-12 13:09:30.745: E/AndroidRuntime(463): ... 11 more
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
12.05.2014, 18:04     Ошибка при добавлении файла в очередь загрузки (android.app.DownloadManager) #2
Can only download HTTP URIs
С https не загрузит.
yol
10 / 10 / 0
Регистрация: 13.10.2012
Сообщений: 155
12.05.2014, 18:21  [ТС]     Ошибка при добавлении файла в очередь загрузки (android.app.DownloadManager) #3
Цитата Сообщение от Netscape Посмотреть сообщение
Can only download HTTP URIs
С https не загрузит.
Заменил на http. Теперь следующее:
Кликните здесь для просмотра всего текста
05-12 14:20:03.102: D/LOG(363): *Step1*
05-12 14:20:03.102: D/LOG(363): *Step2*
05-12 14:20:03.102: D/LOG(363): *Step3*
05-12 14:20:03.102: D/LOG(363): *Step4*
05-12 14:20:03.102: D/LOG(363): *Step5*
05-12 14:20:03.112: D/AndroidRuntime(363): Shutting down VM
05-12 14:20:03.112: W/dalvikvm(363): threadid=1: thread exiting with uncaught exception (group=0x40015560)
05-12 14:20:03.132: E/AndroidRuntime(363): FATAL EXCEPTION: main
05-12 14:20:03.132: E/AndroidRuntime(363): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.timetableetu/com.example.timetableetu.MainActivity}: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.downloads.DownloadProvider from ProcessRecord{407a2860 363:com.example.timetableetu/10050} (pid=363, uid=10050) requires android.permission.ACCESS_ALL_DOWNLOADS or android.permission.ACCESS_ALL_DOWNLOADS
05-12 14:20:03.132: E/AndroidRuntime(363): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
05-12 14:20:03.132: E/AndroidRuntime(363): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
05-12 14:20:03.132: E/AndroidRuntime(363): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
05-12 14:20:03.132: E/AndroidRuntime(363): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
05-12 14:20:03.132: E/AndroidRuntime(363): at android.os.Handler.dispatchMessage(Handler.java:99)
05-12 14:20:03.132: E/AndroidRuntime(363): at android.os.Looper.loop(Looper.java:123)
05-12 14:20:03.132: E/AndroidRuntime(363): at android.app.ActivityThread.main(ActivityThread.java:3683)
05-12 14:20:03.132: E/AndroidRuntime(363): at java.lang.reflect.Method.invokeNative(Native Method)
05-12 14:20:03.132: E/AndroidRuntime(363): at java.lang.reflect.Method.invoke(Method.java:507)
05-12 14:20:03.132: E/AndroidRuntime(363): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-12 14:20:03.132: E/AndroidRuntime(363): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-12 14:20:03.132: E/AndroidRuntime(363): at dalvik.system.NativeStart.main(Native Method)
05-12 14:20:03.132: E/AndroidRuntime(363): Caused by: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.downloads.DownloadProvider from ProcessRecord{407a2860 363:com.example.timetableetu/10050} (pid=363, uid=10050) requires android.permission.ACCESS_ALL_DOWNLOADS or android.permission.ACCESS_ALL_DOWNLOADS
05-12 14:20:03.132: E/AndroidRuntime(363): at android.os.Parcel.readException(Parcel.java:1322)
05-12 14:20:03.132: E/AndroidRuntime(363): at android.os.Parcel.readException(Parcel.java:1276)
05-12 14:20:03.132: E/AndroidRuntime(363): at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:1882)
05-12 14:20:03.132: E/AndroidRuntime(363): at android.app.ActivityThread.getProvider(ActivityThread.java:3347)
05-12 14:20:03.132: E/AndroidRuntime(363): at android.app.ActivityThread.acquireProvider(ActivityThread.java:3372)
05-12 14:20:03.132: E/AndroidRuntime(363): at android.app.ContextImpl$ApplicationContentResolver.acquireProvider(ContextImpl.java:1648)
05-12 14:20:03.132: E/AndroidRuntime(363): at android.content.ContentResolver.acquireProvider(ContentResolver.java:748)
05-12 14:20:03.132: E/AndroidRuntime(363): at android.content.ContentResolver.insert(ContentResolver.java:598)
05-12 14:20:03.132: E/AndroidRuntime(363): at android.app.DownloadManager.enqueue(DownloadManager.java:750)
05-12 14:20:03.132: E/AndroidRuntime(363): at com.example.timetableetu.DownloadFile.download2(DownloadFile.java:53)
05-12 14:20:03.132: E/AndroidRuntime(363): at com.example.timetableetu.MainActivity.onCreate(MainActivity.java:43)
05-12 14:20:03.132: E/AndroidRuntime(363): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-12 14:20:03.132: E/AndroidRuntime(363): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
05-12 14:20:03.132: E/AndroidRuntime(363): ... 11 more
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
12.05.2014, 18:51     Ошибка при добавлении файла в очередь загрузки (android.app.DownloadManager) #4
yol, в манифест добавьте пермишн android.permission.ACCESS_ALL_DOWNLOADS
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
12.05.2014, 18:54     Ошибка при добавлении файла в очередь загрузки (android.app.DownloadManager) #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Манифест покажите.
Там должны быть пермишены:
XML
1
2
<uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
yol
10 / 10 / 0
Регистрация: 13.10.2012
Сообщений: 155
12.05.2014, 19:17  [ТС]     Ошибка при добавлении файла в очередь загрузки (android.app.DownloadManager) #6
Цитата Сообщение от Netscape Посмотреть сообщение
Манифест покажите.
Там должны быть пермишены:
Код XML
1
2
<uses-permission android:name="android.permission.INTERNET" />
* <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Спасибо, заработало. Странно почему ни где не описывается, что следует заполнить манифест? И на будущее, где об этом можно узнать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2014, 19:45     Ошибка при добавлении файла в очередь загрузки (android.app.DownloadManager)
Еще ссылки по теме:
Android Gradle build finished with 4 error(s). Android Studio. My First App
Как сделать программну оболочку для app Android? Android
Android Как сделать доступ к MainActivity из класса android.app.Instrumentation?
Как открыть проект в Android Studio, состоящий из одного модуля app Android
Ошибка при компиляции Android Studio Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
12.05.2014, 19:45     Ошибка при добавлении файла в очередь загрузки (android.app.DownloadManager) #7
Цитата Сообщение от yol Посмотреть сообщение
И на будущее, где об этом можно узнать?
Ну оно как-то с опытом приходит.
Или просто рассуждать логически:
собираемся что-то качать с интернета? ставь пермишн.
нужно что-то записать на флешку? ставь пермишн.

обычно в логах пишется, что нужно установить, но это не тот случай, потому что DownloadManager как-то коряво написан.
Yandex
Объявления
12.05.2014, 19:45     Ошибка при добавлении файла в очередь загрузки (android.app.DownloadManager)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru