究竟如何使用Notification.Builder

Saa*_*iko 99 api notifications android deprecated

我发现我使用了一种不赞成使用的方法(notification.setLatestEventInfo())

它说使用Notification.Builder.

  • 我该如何使用它?

当我尝试创建一个新实例时,它告诉我:

Notification.Builder cannot be resolved to a type
Run Code Online (Sandbox Code Playgroud)

Rab*_*abi 151

Notification.Builder API 11NotificationCompat.Builder API 1

这是一个用法示例.

Intent notificationIntent = new Intent(ctx, YourClass.class);
PendingIntent contentIntent = PendingIntent.getActivity(ctx,
        YOUR_PI_REQ_CODE, notificationIntent,
        PendingIntent.FLAG_CANCEL_CURRENT);

NotificationManager nm = (NotificationManager) ctx
        .getSystemService(Context.NOTIFICATION_SERVICE);

Resources res = ctx.getResources();
Notification.Builder builder = new Notification.Builder(ctx);

builder.setContentIntent(contentIntent)
            .setSmallIcon(R.drawable.some_img)
            .setLargeIcon(BitmapFactory.decodeResource(res, R.drawable.some_big_img))
            .setTicker(res.getString(R.string.your_ticker))
            .setWhen(System.currentTimeMillis())
            .setAutoCancel(true)
            .setContentTitle(res.getString(R.string.your_notif_title))
            .setContentText(res.getString(R.string.your_notif_text));
Notification n = builder.build();

nm.notify(YOUR_NOTIF_ID, n);
Run Code Online (Sandbox Code Playgroud)

  • NotificationBuilder.build()需要API级别16或更高级别.API级别11和15之间的任何内容都应该使用NotificationBuilder.getNotification(). (26认同)
  • 我看到有一种技术可以在v4支持包中完成:NotificationCompat.Builder (13认同)
  • 我想有人应该告诉谷歌他们在"Notification.Builder"文档页面中有严重的错别字.我正在做他们说的话,但这没有任何意义.我来到这里,看到它是不同的.我非常感谢你的回答,因为它让我意识到了文档上的错误. (6认同)
  • 文档说"builder.getNotification()"已被弃用.它说你应该使用`builder.build()`. (5认同)
  • @MrTristan:正如文档中所写,`setSmallIcon()`,`setContentTitle()`和`setContentText()`是最低要求. (4认同)

Fem*_*emi 86

是在API 11中,因此如果您正在开发3.0之前的任何内容,则应继续使用旧API.

更新:NotificationCompat.Builder类已添加到支持包中,因此我们可以使用它来支持API级别v4及更高版本:

http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html

  • 是的:在我看来,弃用警告有点为时过早,但我知道什么. (15认同)

ANe*_*ati 70

除了选定的答案,这里还有NotificationCompat.Builder来自Source Tricks的类的一些示例代码:

// Add app running notification  

    private void addNotification() {



    NotificationCompat.Builder builder =  
            new NotificationCompat.Builder(this)  
            .setSmallIcon(R.drawable.ic_launcher)  
            .setContentTitle("Notifications Example")  
            .setContentText("This is a test notification");  

    Intent notificationIntent = new Intent(this, MainActivity.class);  
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent,   
            PendingIntent.FLAG_UPDATE_CURRENT);  
    builder.setContentIntent(contentIntent);  

    // Add as notification  
    NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);  
    manager.notify(FM_NOTIFICATION_ID, builder.build());  
}  

// Remove notification  
private void removeNotification() {  
    NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);  
    manager.cancel(FM_NOTIFICATION_ID);  
}  
Run Code Online (Sandbox Code Playgroud)

  • 使用实际工作的新Compat构建器的第一个代码.做得好! (5认同)