将行添加到Android摘要通知中

时间:2016-05-09 19:15:08

标签: android push-notification notifications

我是Android开发的新手,所以我真的不知道怎么做/搜索一些东西,如果有一个地方我的问题已经得到解答请告诉我,或者我是不是试着做一些我不应该做的事,谢谢。

所以我的问题是我想用我的应用程序创建不同的通知,每次收到超过1条消息时,我都想读/想要创建一个摘要通知,我没有创建这个问题,但我没有我不知道每次收到新通知时如何更新它。

我也从Android开发人员(http://developer.android.com/intl/pt-br/training/wearables/notifications/stacks.html)中读到,如果我创建一个组并向其添加通知,那么他们应该在堆栈中。这是什么意思?我试过,无论是否有小组,通知都显示为单一。我看到的唯一区别是,当我使用与其他人相同的群组名称调用摘要通知时,他们会消失,这是堆叠的意思吗?

对不起,我的英文不好也许我误会了什么,希望你能帮助我。

这是我写的代码:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    notificationManager =
            NotificationManagerCompat.from(this);
}

final static String GROUP_KEY_EMAILS = "group_key_emails";
NotificationManagerCompat notificationManager;
int n =0;
String sender1="Marco";
String sender2="Michele";
String text1="ci sei?";
String text2="Okk";
public  void btn1(View v)
{

    Notification notif = new NotificationCompat.Builder(this)
            .setContentTitle(sender1)
            .setContentText(text1)
            .setSmallIcon(R.mipmap.ic_launcher)
            .setGroup(GROUP_KEY_EMAILS)
            .build();


    notificationManager.notify(0, notif);
    n++;


    }

    public void btn2(View v)
    {

    Notification notif2 = new NotificationCompat.Builder(this)
            .setContentTitle(sender2)
            .setContentText(text2)
            .setSmallIcon(R.mipmap.ic_launcher)
            .setGroup(GROUP_KEY_EMAILS)
            .build();

    notificationManager.notify(1, notif2);
    n++;
  }

  public void btn3(View v)
  {
    Bitmap largeIcon = BitmapFactory.decodeResource(getResources(),
            R.mipmap.ic_launcher);


    Notification summaryNotification = new NotificationCompat.Builder(this)
            .setContentTitle("MyApp")
            .setSubText(Integer.toString(n)+" nuovi messaggi")
            .setSmallIcon(R.mipmap.ic_launcher)
            .setLargeIcon(largeIcon)
            .setStyle(new NotificationCompat.InboxStyle()
                    .addLine(sender1+"  "+text1)
                    .addLine(sender2+"  "+text2)
                    .setBigContentTitle(Integer.toString(n)+" nuovi messaggi")
                    .setSummaryText("nonsocosascrivere.com"))
            .setGroup(GROUP_KEY_EMAILS)
            .setGroupSummary(true)
            .build();

    notificationManager.notify(3, summaryNotification);



  }
}

1 个答案:

答案 0 :(得分:0)

可以通过提供相同的通知“ID”来更新通知,例如在您的代码中,您的通知ID为“3”:

SELECT UNIX_TIMESTAMP(myDate)-TIMESTAMPDIFF(SECOND, NOW(), UTC_TIMESTAMP()) 
FROM myTable

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

目前,您正在使用notificationManager.notify(3, summaryNotification); ,但由于您提供了相同的通知ID,因此它正在替换内容,而不是“堆叠”通知。

将“新”通知分开ID。提供需要更新相同ID的通知。 (“更新通知”的一个示例可能是提醒您要发布“约会前15分钟” - 如果用户没有将其解雇,您可能会在以后更新它说“10分钟......”但你不希望这个“堆叠” - 用户不需要看到所有的通知,只需要最近的通知。)