Android 修改Notification.Builder progressbar而不使用自定义布局

Android 修改Notification.Builder progressbar而不使用自定义布局,android,notifications,Android,Notifications,有人知道我如何使用Notification.builder,然后更新进度条吗?目前它似乎受到限制。我知道我可以访问notification.contentView,但是从这里更新progressView需要视图ID,它是android内部类的一部分(我没有访问的范围)。当然,如果通知生成器允许您显示进度条,那么应该有一种方法来更新它吗 我应该补充一点,我希望在不重复调用“getNotification”的情况下执行此操作,因为这似乎效率极低。您可以使用新线程以肮脏的方式执行此操作。然而,通过这种

有人知道我如何使用Notification.builder,然后更新进度条吗?目前它似乎受到限制。我知道我可以访问notification.contentView,但是从这里更新progressView需要视图ID,它是android内部类的一部分(我没有访问的范围)。当然,如果通知生成器允许您显示进度条,那么应该有一种方法来更新它吗


我应该补充一点,我希望在不重复调用“getNotification”的情况下执行此操作,因为这似乎效率极低。

您可以使用新线程以肮脏的方式执行此操作。然而,通过这种方式,您的通知不会结束,直到它自己结束。 这是代码

public void showJobFinishNotification() {
    final String ns = Context.NOTIFICATION_SERVICE;
    final NotificationManager notificationManager = (NotificationManager) getSystemService(ns);
    final Intent notificationIntent = new Intent(this, WillingActivity.class);
    final PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
    final int JOBFINISH_ID = 1;

    new Thread(new Runnable() {
        public void run() {
            for(int progress = 0; progress <= 29; progress++) {
                Notification jobFinishNotification = new NotificationCompat.Builder(getApplication())
                    .setSmallIcon(R.drawable.ic_launcher) //must have small icon, but the large icon is not a must
                    .setContentTitle("Job is finished")
                    .setContentText("Press here to finish your job.")
                    .setProgress(29, progress, false) 
                    .setDefaults(Notification.DEFAULT_SOUND)
                    .setContentIntent(contentIntent)
                    .setAutoCancel(false)
                    .build();
                notificationManager.notify(JOBFINISH_ID, jobFinishNotification);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            notificationManager.cancel(JOBFINISH_ID); //if you want the user to handle the notification.
            //comment the line above. and use setAutoCancel(true) in the above code.
        }
    }).start();
}
public void showJobFinishNotification(){
最终字符串ns=Context.NOTIFICATION\u服务;
最终NotificationManager NotificationManager=(NotificationManager)getSystemService(ns);
最终意图notificationIntent=新意图(this,WillingActivity.class);
final pendingent contentIntent=pendingent.getActivity(this,0,notificationIntent,0);
最终int作业完成_ID=1;
新线程(newrunnable()){
公开募捐{

对于(int progress=0;progress,您可以使用一个新线程以脏的方式执行此操作。但是,通过这种方式,您的通知不会结束,直到它自己结束为止。 这是代码

public void showJobFinishNotification() {
    final String ns = Context.NOTIFICATION_SERVICE;
    final NotificationManager notificationManager = (NotificationManager) getSystemService(ns);
    final Intent notificationIntent = new Intent(this, WillingActivity.class);
    final PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
    final int JOBFINISH_ID = 1;

    new Thread(new Runnable() {
        public void run() {
            for(int progress = 0; progress <= 29; progress++) {
                Notification jobFinishNotification = new NotificationCompat.Builder(getApplication())
                    .setSmallIcon(R.drawable.ic_launcher) //must have small icon, but the large icon is not a must
                    .setContentTitle("Job is finished")
                    .setContentText("Press here to finish your job.")
                    .setProgress(29, progress, false) 
                    .setDefaults(Notification.DEFAULT_SOUND)
                    .setContentIntent(contentIntent)
                    .setAutoCancel(false)
                    .build();
                notificationManager.notify(JOBFINISH_ID, jobFinishNotification);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            notificationManager.cancel(JOBFINISH_ID); //if you want the user to handle the notification.
            //comment the line above. and use setAutoCancel(true) in the above code.
        }
    }).start();
}
public void showJobFinishNotification(){
最终字符串ns=Context.NOTIFICATION\u服务;
最终NotificationManager NotificationManager=(NotificationManager)getSystemService(ns);
最终意图notificationIntent=新意图(this,WillingActivity.class);
final pendingent contentIntent=pendingent.getActivity(this,0,notificationIntent,0);
最终int作业完成_ID=1;
新线程(newrunnable()){
公开募捐{
对于(int progress=0;progress)