我创建了一个android应用程序。在我的java类代码中,我得到了一些消息:“构造函数Notification(int,CharSequence,long)已被弃用”。应用程序一切正常我尝试运行应用程序时没有问题。 我只是想知道为什么这条消息出现了。 我在java类中的代码是:
public class Notifications extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.notifications);
Button b = (Button) findViewById(R.id.bNotifications);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Notification notify = new Notification(
android.R.drawable.stat_notify_more,
"This is important", System.currentTimeMillis());
Context context = Notifications.this;
CharSequence title = "You have been notified";
CharSequence details = "Continue with what you have doing";
Intent intent = new Intent();
PendingIntent pending = PendingIntent.getActivity(context, 0,
intent, 0);
notify.setLatestEventInfo(context, title, details, pending);
nm.notify(0, notify);
}
});
}
}
答案 0 :(得分:13)
公开通知(int图标,CharSequence tickerText,长时间)
在API级别1中添加在API级别11中弃用了此构造函数。
请改用Notification.Builder。
据我所知,这是对Notification.Builder
的相应调用:
Context context = Notifications.this;
Notification notify = new Notification.Builder(context)
.setTicker("This is important")
.setSmallIcon(android.R.drawable.stat_notify_more)
.setWhen(System.currentTimeMillis())
.build();
正如您所看到的,Notification.Builder在设置各种通知属性方面提供了更大的灵活性,并提高了代码的可读性,这可能是不推荐使用Notification构造函数的原因。
答案 1 :(得分:3)
有时,方法被弃用的事实并不意味着您不会需要它也不会使用它。因此,毕竟,您需要支持较旧的设备(不是最早的设备,如Android Donut或之前的设备),您将需要使用新的方式和不赞成使用的方式。在这种情况下,我实现如下:
Notification notification;
String title = context.getString(R.string.app_name);
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN){
notification = new Notification(icon, message, when);
}else{
notification = new Notification.Builder(context)
.setContentTitle(title)
.setContentText(message)
.setSmallIcon(R.drawable.ic_launcher)
.build();
}
希望它有所帮助!
答案 2 :(得分:1)
由于不再建议使用API级别11 Notification(int icon, CharSequence tickerText, long when)
,因为存在替代方案。请改用Notification.Builder。
来源:http://developer.android.com/reference/android/app/Notification.html#Notification(int,java.lang.CharSequence,long)