Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73

"Ошибка при синтаксическом анализе пакета" при скачивании файла

14.08.2016, 21:02. Показов 3590. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь сделать обновление в своем приложении. Должно быть так: скачивается файл приложения и устанавливается. только вот скачивается он всего на 193 байта и начинается установка, естественно выдает "ошибка при синтаксическом анализе пакета." Почему файл не полностью скачивается?
вот сам код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
public class MainActivity extends Activity {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        UpdateApp atualizaApp = new UpdateApp();
        atualizaApp.setContext(getApplicationContext());
        atualizaApp.execute("http://mysite.ru/update.apk");
    }
        public class UpdateApp extends AsyncTask<String,Void,Void>{
                private Context context;
                public void setContext(Context contextf){
                        context = contextf;
                }
 
                @Override
                protected Void doInBackground(String... arg0) {
                        try {
                                URL url = new URL(arg0[0]);
                                HttpURLConnection c = (HttpURLConnection) url.openConnection();
                                c.setRequestMethod("GET");
                                c.setDoOutput(true);
                                c.connect();
 
                                String PATH = "/mnt/sdcard/Download/";
                                File file = new File(PATH);
                                file.mkdirs();
                                File outputFile = new File(file, "update.apk");
                                if(outputFile.exists()){
                                        outputFile.delete();
                                }
                                FileOutputStream fos = new FileOutputStream(outputFile);
 
                                InputStream is = c.getInputStream();
 
                                byte[] buffer = new byte[1024];
                                int len1 = 0;
                                while ((len1 = is.read(buffer)) != -1) {
                                        fos.write(buffer, 0, len1);
                                }
                                fos.close();
                                is.close();
 
                                Intent intent = new Intent(Intent.ACTION_VIEW);
                                intent.setDataAndType(Uri.fromFile(new File("/mnt/sdcard/Download/update.apk")), "application/vnd.android.package-archive");
                                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
                                context.startActivity(intent);
 
 
                        } catch (Exception e) {
                                Log.e("UpdateAPP", "Update error! " + e.getMessage());
                        }
                        return null;
                }}
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.08.2016, 21:02
Ответы с готовыми решениями:

При синтаксическом анализе пакета возникла неполадка
Приложения которое я создавал в эклипсе, на эмуляторе работает спокойно! а на телефоне говорит: &quot;При синтаксическом анализе пакета...

Сборка мобильного приложения. Ошибка при синтаксическом анализе пакета.
Встретил непонятный косяк при сборке моб. приложения. После сборки отказывается запускаться приложение, если указано хоть одно разрешение...

внутренняя ошибка при синтаксическом анализе формулы
Раньше я пользовался Экселем, потом аналогом немецким. Сейчас перешел на пакер Р7-овис. обратил внимание, что начали появляться ошибки...

7
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
14.08.2016, 21:11
naven, не пробовали смотреть содержимое полученного файла? Может, там html-страница с ответом.
Java
1
"/mnt/sdcard/Download/"
Так путь не указывают. Надо так: http://stackoverflow.com/quest... in-android с правами на запись в карту памяти.
Сделайте по шагам, посмотрите, какие строчки передаются в цикле.
0
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
14.08.2016, 21:36  [ТС]
Цитата Сообщение от CoolMind Посмотреть сообщение
Может, там html-страница с ответом.
ну сохраняется как apk файл.
Цитата Сообщение от CoolMind Посмотреть сообщение
Так путь не указывают.
Разве так нельзя? https://gist.github.com/lifuzu/9958640
Цитата Сообщение от CoolMind Посмотреть сообщение
с правами на запись в карту
ну в манифесте пермишн прописан
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
14.08.2016, 22:04
Цитата Сообщение от naven Посмотреть сообщение
ну сохраняется как apk файл.
Когда в браузере скачиваете файл и сохраняете как .jpg или .zip, не факт, что откроете. Может быть, что сохранится html-страница с ошибкой внутри.
Цитата Сообщение от naven Посмотреть сообщение
Разве так нельзя? https://gist.github.com/lifuzu/9958640
Любой код содержит ошибки. Разбираться в чужом ... мне не хочется. Просто знайте, что в Андроиде нельзя прописывать абсолютные пути к сохраняемым файлам (только разве что к системным можно), поскольку от производителя к производителю они могут меняться.
0
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
14.08.2016, 23:35  [ТС]
Цитата Сообщение от CoolMind Посмотреть сообщение
в Андроиде нельзя прописывать абсолютные пути к сохраняемым файлам
А как правильно сделать?
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
15.08.2016, 10:24
naven, я выше ссылку дал. Там как раз указывается путь к папке Download. Либо поищите в google по ключевым словам. И ещё надо проверять, что карта памяти доступна для записи.
0
 Аватар для petruchodd
129 / 126 / 22
Регистрация: 23.06.2009
Сообщений: 700
16.08.2016, 03:43
хм. а то что он не дождавшись окончания загрузки файла - пытается его открыть ... это не есть проблема?
1
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
17.08.2016, 00:16  [ТС]
Вот нашёл пример похожиий. Но только тут тоже файл не скачивается. файл создается но он не качается. Размер 0 байт.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
public class MainActivity extends Activity {
 
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                Button load = new Button(this);
                load.setText("Load file");
                load.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                                downloadFile("http://wapfile.ru/mp3/64/10325.mp3");
                        }
                });
                setContentView(load, new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
        }
 
 
        private void downloadFile(String url) {
                final Context context = this.getApplicationContext();
                final ProgressDialog progressDialog = new ProgressDialog(this);
 
                new AsyncTask<String, Integer, File>() {
                        private Exception m_error = null;
 
                        @Override
                        protected void onPreExecute() {
                                progressDialog.setMessage("Downloading ...");
                                progressDialog.setCancelable(false);
                                progressDialog.setMax(100);
                                progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                                progressDialog.show();
                        }
 
                        @Override
                        protected File doInBackground(String... params) {
 
                                URL url;
                                HttpURLConnection urlConnection;
                                InputStream inputStream;
                                int totalSize;
                                int downloadedSize;
                                byte[] buffer;
                                int bufferLength;
 
                                File filen = null;
                                FileOutputStream fos = null;
 
                                try {
                                        url = new URL(params[0]);
                                        urlConnection = (HttpURLConnection) url.openConnection();
 
                                        urlConnection.setRequestMethod("GET");
                                        urlConnection.setDoOutput(true);
                                        urlConnection.connect();
                                        filen = File.createTempFile("music", ".mp3", context.getCacheDir());
                                        fos = new FileOutputStream(filen);
                                        inputStream = urlConnection.getInputStream();
                                        totalSize = urlConnection.getContentLength();
                                        downloadedSize = 0;
                                        buffer = new byte[1024];
                                        bufferLength = 0;
                                        // читаем со входа и пишем в выход,
                                        // с каждой итерацией публикуем прогресс
                                        while ((bufferLength = inputStream.read(buffer)) > 0) {
                                                fos.write(buffer, 0, bufferLength);
                                                downloadedSize += bufferLength;
                                                publishProgress(downloadedSize, totalSize);
                                        }
                                        fos.close();
                                        inputStream.close();
 
                                        return filen;
                                } catch (MalformedURLException e) {
                                        e.printStackTrace();
                                        m_error = e;
                                } catch (IOException e) {
                                        e.printStackTrace();
                                        m_error = e;
                                }
 
                                return null;
                        }
 
                        // обновляем progressDialog
                        protected void onProgressUpdate(Integer... values) {
                                progressDialog.setProgress((int) ((values[0] / (float) values[1]) * 100));
                        };
 
                        @Override
                        protected void onPostExecute(File filen) {
                                // отображаем сообщение, если возникла ошибка
                                if (m_error != null) {
                                        m_error.printStackTrace();
                                        return;
                                }
                                progressDialog.hide();
                         }
                }.execute(url);
        }
}
Добавлено через 4 часа 13 минут
Всё, нашёл ошибку
Цитата Сообщение от naven Посмотреть сообщение
c.setDoOutput(true);
должен быть false.
Всем спасибо.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.08.2016, 00:16
Помогаю со студенческими работами здесь

Ошибка при скачивании языкового пакета для VS 2019
не могу скачать языковой пакет для VS 2019. Стоит английский, качаю русский. выдает несколько окон с ошибками одного типа(приложу к...

Ошибка ssis пакета (vs2008) при загрузке .csv файла в БД при запуске VS2015
SSIS пакет создан в vs2008. Работал. Сменился MS Server на 2015 и vs2015. Загружаю. Выдает ошибку ] Ошибка: Ошибка при обработке...

Ошибка при скачивании файла
доброе время суток. Проблема в том что при парсинге ( с ранее заявленным условием) находятся файлы( в данном случаем картинки), но при...

Ошибка при скачивании файла
Уважаемые Гуру! Из silverlight приложения использую сервис скачивания файла. Для маленьких файлов (например, 15 кб) - файл скачивается ...

Ошибка при скачивании файла
Здравствуйте! При загрузке файла большого размера (более 5-10мб) в браурере, а именно Mozilla Firefox, обрывается загрузка с сообщением...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru