4 votes

Mise à jour de la barre de progression des téléchargements dans la zone de notification à partir d'AsynTask

J'ai implémenté une tâche asynchrone dans un service. Voici l'initialisation de la Notification de progression, que j'appelle de onPreExecute .

mProgressNotificationManager = (NotificationManager) this
            .getSystemService(Context.NOTIFICATION_SERVICE);

    CharSequence tickerText = "Download";

    mProgressNotification = new Notification(R.drawable.ic_launcher, tickerText, System.currentTimeMillis());
    context = this.getApplicationContext();

    Intent mNotificationIntent = new Intent(context, ActivityClass.class);
    PendingIntent mPendingIntent = PendingIntent.getActivity(context, 0, mNotificationIntent, 0);
    //mProgressNotification.flags |= Notification.FLAG_AUTO_CANCEL;
    mProgressNotification.flags = mProgressNotification.flags | Notification.FLAG_ONGOING_EVENT;
    CharSequence title = "Downloading initializing...";
    RemoteViews contentView = new RemoteViews(getPackageName(),
            R.layout.noti);
    contentView.setImageViewResource(R.id.status_icon,
            R.drawable.ic_launcher);
    contentView.setTextViewText(R.id.status_text, title);
    contentView.setProgressBar(R.id.status_progress, 100, 0, false);
    mProgressNotification.contentView = contentView;
    mProgressNotification.contentIntent = mPendingIntent;
    mProgressNotificationManager.notify(STATUS_BAR_NOTIFICATION, mProgressNotification);

Après cela, dans doInBackground J'ai mis en place ma procédure de téléchargement, et ensuite je mets à jour la progression du téléchargement,

@Override
    protected void onProgressUpdate(Integer... progress) {
        super.onProgressUpdate(progress);

        int mDownloadProgress = progress[0];
        // Log.d(TAG,"AsyncTask : download In progress");           
        CharSequence title =  "fileName" +":  "  + mDownloadProgress + "%";
        mProgressNotification.contentView.setTextViewText(R.id.status_text, title);
        mProgressNotification.contentView.setProgressBar(R.id.status_progress, 100,
                mDownloadProgress, false);
        mProgressNotificationManager.notify(STATUS_BAR_NOTIFICATION, mProgressNotification);            

    }

Il fonctionne bien. Il se met à jour correctement, mais le problème est que la barre de notification est suspendue. Je ne peux pas monter ou descendre la barre de notification. Je veux mettre à jour la barre de notification comme si je téléchargeais une application du marché Google (Play).

Merci...

2voto

FabianCook Points 5075

Ce qui semble se passer, c'est que vous remplacez la notification, ce qui signifie qu'il y a une nouvelle notification à afficher.

Ce que vous devez faire, c'est mettre à jour la notification et non la remplacer.

Jetez un coup d'œil à ceci :)

http://developer.Android.com/guide/topics/ui/notifiers/notifications.html#Updating

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X