NotificationManager.notify无法正常工作

时间:2019-01-04 16:15:29

标签: android notifications

我正在制作的应用程序具有文件传输功能,并且我会在通知中显示其进度,并提供停止传输的选项。 问题在于,每次调用NotificationManager.notify时(每次更改进度时都必须调用它),播放系统通知声音(这会导致大量垃圾邮件),以及用于停止传输的按钮变得无法使用。

不更新进度条允许按下“停止传送”按钮。 我注意到的另一件事是,Android 8.x上存在垃圾邮件,而5.x上没有。

创建通知

mBuilder = new NotificationCompat.Builder(cont, "default")
            .setSmallIcon(R.drawable.file)
            .setContentTitle("File transfer app")
            .setContentText((down ? "Downloading " : "Uploading ") + fileName)
            .setAutoCancel(false)
            .setProgress(100, 0, indeterminate);
    Intent notifyButton = new Intent();
    notifyButton.setAction("STOP_TRANSFER");
    notifyButton.putExtra("id", notifId);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(cont, notifId, notifyButton, PendingIntent.FLAG_UPDATE_CURRENT);
    mBuilder.addAction(R.drawable.close, "Stop transfer", pendingIntent);
    all.add(this);
    mNotificationManager.notify(notifId, mBuilder.build());

更新进度:

mBuilder.setProgress(this.max, progress, indeterminate);
mNotificationManager.notify(notifId, mBuilder.build());

我希望进度条在每次移动时都不会发出声音,因此可以正常更新,并允许我随时取消传输。

我在这里做错什么了吗?

1 个答案:

答案 0 :(得分:0)

如果您的更新通知不断地只是为了通知进度,则可能需要调用mNotificationManager.cancel()。

    <script>
    var floder = '<?php echo $item; ?>';
    var path = `images/${folder}/`;

    $.ajax({
        async: false,
        url : path,
        success: function (data) {
          $(data).find("a").attr("href", function (i, val) {
              var imageFolder = val.split("_");
              imageFolder = imageFolder[0].toUpperCase();
              if( val.match(/\.(jpe?g|png|gif)$/) && imageFolder == folder) { 
                  $(".prodfx").append( "<img src='"+ folder + val +"'>" );
              } 
          });
        }
    });
    </script>