Обновление Progressbar в панели уведомлений с использованием AsyncTask в службе?

Я пытаюсь загрузить несколько двоичных файлов, используя Сервис, который содержит AsynTask для выполнения фоновой работы. Я могу успешно запустить службу, я зарегистрировал ее в файле манифеста. Я могу загрузить файлы, однако я бы хотел показать индикатор выполнения в панели уведомлений. Я создаю панель уведомлений внутри метода onPreExecute () и устанавливаю панель прогресса и уведомляя NotifactionManager внутри метода onProgressUpdate ().

private class DownloadFileAsync extends AsyncTask<String, String, String> { @Override protected void onPreExecute() { super.onPreExecute(); notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notification = new Notification(R.drawable.icon, "Downloading...", System.currentTimeMillis()); contentView = new RemoteViews(getPackageName(), R.layout.progress_layout); contentView.setProgressBar(R.id.status_progress, 10, 0, false); contentView.setTextViewText(R.id.status_text,currentFile); notification.contentView = contentView; // Toast.makeText(DownloadService.this, "Downloading...!",Toast.LENGTH_SHORT).show(); } @Override protected String doInBackground(String... aurl) { int count; try { //Downloading code goes here } catch (Exception e) {} return null; } protected void onProgressUpdate(String... progress) { Log.d("ANDRO_ASYNC",progress[0]); notification.contentView.setProgressBar(R.id.status_progress, 100, Integer.parseInt(progress[0]), false); // inform the progress bar of updates in progress notificationManager.notify(NOTIFICATION_ID, notification); } @Override protected void onPostExecute(String unused) { Toast.makeText(DownloadService.this, "Download complete!",Toast.LENGTH_SHORT).show(); } } 

Личный класс DownloadFileAsync находится внутри класса DownloadService, который расширяет Service. Я не могу показать или обновить панель уведомлений.

В настоящее время я получаю исключение IllegalArgumentException в строке: notificationManager.notify (NOTIFICATION_ID, уведомление);

Поистине оцените вашу помощь в этом!

EDIT: NOTIFICATION_ID определяется следующим образом: private int NOTIFICATION_ID = R.string.app_name

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

NOTIFICATION_ID должен иметь тип int, потому что первый параметр notify () принимает int, а не строку, как в вашем коде.

Подробнее об уведомлениях и разных его подписях:

http://developer.android.com/reference/android/app/NotificationManager.html#notify(int,android.app.Notification )

Я думаю, вам нужно добавить свое уведомление в диспетчер уведомлений. Я не уверен в этом. Попробуйте и дайте мне знать. Вот мой код:

 notificationManager = (NotificationManager) getApplicationContext().getSystemService( getApplicationContext().NOTIFICATION_SERVICE); notificationManager.notify(10, notification); // simulate progress Thread download = new Thread() { @Override public void run() { for (int i = 1; i < 100; i++) { progress++; notification.contentView.setProgressBar(R.id.status_progress, 100, progress, false); // inform the progress bar of updates in progress notificationManager.notify(id, notification); try { Thread.sleep(125); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }; download.run(); 
Intereting Posts
Проблема в реализации Parcelable, содержащая другие возможности Как разрешить задачу Async Task на Android Как закодировать строку для замены всех специальных символов Android-макеты, чертежи и разрешение, что является лучшим способом? Нет файлов сгенерированных Dagger2 для тестов JUnit Как сохранить экран в Qt для Android? Проблемы при изменении ориентации Ошибка десериализации SimpleXML в Android Android: получение растрового изображения из URL-соединения (graph.facebook.com), который перенаправляет на другой URL-адрес Android-студия Gradle Не удалось найти метод компиляции () Размеры изображений на Android Обнаружение тегов NFC не вызывает onNewIntent, и он запускает из основной активности Как обновить галерею Android после фотографии? Диалоговое окно выбора нескольких файлов / Chooser Используя Canvas Signature pad, который я создал в эмуляторе, он работает нормально, но в устройстве Android два подписи