Android- status bar notification with progress bar

懵懂的女人 提交于 2019-12-13 02:09:40

问题


I currently have a status bar notification that goes off when an mp3 is downloaded from a url. It launches fine (and the file does download fine), however, the progress bar doesn't progress. It simply stays still. I'm not sure where to put the code so it notify's the progress of the download. Any ideas?

Thanks.

Here is part of my code:

public class DownloadFile extends AsyncTask<String, Integer, String>{
        @Override
        protected String doInBackground(String... url) {
            try {
                URL url2 = new URL(sdrUrl);
                HttpURLConnection c = (HttpURLConnection) url2.openConnection();
                c.setRequestMethod("GET");
                c.setDoOutput(true);
                c.connect();

                int lengthOfFile = c.getContentLength();

                String PATH = Environment.getExternalStorageDirectory()
                        + "/download/";
                Log.v("", "PATH: " + PATH);
                File file = new File(PATH);
                file.mkdirs();

                String [] path = url2.getPath().split("/");
                String mp3 = path [path.length-1];
                String sdrMp3 = mp3.replace("%20", "");

                File outputFile = new File(file, sdrMp3);
                FileOutputStream fos = new FileOutputStream(outputFile);

                InputStream is = c.getInputStream();

                byte[] buffer = new byte[1024];
                int len1 = 0;
                while ((len1 = is.read(buffer)) != -1) {
                    publishProgress((int)(len1*100/lengthOfFile));
                    fos.write(buffer, 0, len1);
                }
                fos.close();
                is.close();

                }catch (IOException e) {
                       e.printStackTrace();
                }


            return null;
        }

        @Override
        public void onProgressUpdate(Integer... values) {


            super.onProgressUpdate(values);
        }



    }

    public void DownloadNotification(){

        Intent intent = new Intent(this, BlogActivity.class);
        final PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);

        final Notification notification = new Notification(R.drawable.sdricontest, "Downloading...", System
               .currentTimeMillis());
        notification.flags = notification.flags | Notification.FLAG_ONGOING_EVENT;
        notification.contentView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.notification_layout);
        notification.contentIntent = pendingIntent;
        notification.contentView.setImageViewResource(R.id.download_icon, R.drawable.sdricontest);
        notification.contentView.setTextViewText(R.id.download_text, "simulation in progress");
        notification.contentView.setProgressBar(R.id.download_progress, 100, progress, false);

        getApplicationContext();
        final NotificationManager notificationManager = (NotificationManager) getApplicationContext().getSystemService(
                Context.NOTIFICATION_SERVICE);
        notificationManager.notify(42, notification);
    }

}

回答1:


Try the following -

    public class DownloadFile extends AsyncTask<String, Integer, String>{
    ProgressDialog pd;

    public DownloadFile() {
    super();
    pd = ProgressDialog.show(context, "Loading..", "Doing Stuff", true,false);
    }

    @Override
    protected String doInBackground(String... url) {
        //stuff
    }


    @Override
    protected void onPostExecute (Boolean result){

    pd.dismiss();

    }


}



回答2:


http://developer.android.com/training/notify-user/display-progress.html

This will work for you until the app is running on foreground. If the app stops the progress bar gets stuck. Its better to download using a service



来源:https://stackoverflow.com/questions/6865907/android-status-bar-notification-with-progress-bar

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!