Android 特定于API级别的通知代码给出了所需最低API级别的错误
我正在尝试让我的应用程序发出通知,但由于最小api级别为11,我必须使用以下代码:Android 特定于API级别的通知代码给出了所需最低API级别的错误,android,notifications,Android,Notifications,我正在尝试让我的应用程序发出通知,但由于最小api级别为11,我必须使用以下代码: if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { // call something for API Level 16+ Notification noti; noti = new Notification.Builder(this)
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
// call something for API Level 16+
Notification noti;
noti = new Notification.Builder(this)
.setContentTitle("New Notification from LCD")
.setContentText("content")
.setSmallIcon(R.drawable.ic_launcher)
.setContentIntent(pIntent)
.addAction(R.drawable.ic_launcher, "Option1", pIntent)
.addAction(R.drawable.ic_launcher, "Option2", pIntent)
.addAction(R.drawable.ic_launcher, "Option3",
pIntent).build();
NotificationManager nmanager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// hide notification
noti.flags |= Notification.FLAG_AUTO_CANCEL;
nmanager.notify(0, noti);
}
我还为16以下的API级别设置了另一个,使用.getNotification()而不是.build()
即使在这之后,我仍然得到调用要求API级别16(当前最小值为11)
错误。我能做些什么来解决这个问题
编辑:忘记添加,.getNotification行出现黄色错误,表示类型通知中的方法getNotification().Builder已弃用您应该使用
@SuppressLint(“NewApi”)
注释。
例如,以下方法检测设备是否具有物理菜单按钮:
@SuppressLint("NewApi")
public static boolean hasMenuButton(Context ctx) {
return (
Build.VERSION.SDK_INT <= 10 ||
(Build.VERSION.SDK_INT >= 14 && ViewConfiguration.get(ctx).hasPermanentMenuKey())
);
}
哇,谢谢,真管用!所以,它所做的一切就是阻止它检查这种类型的错误?当然,它是这样做的:)是的,确实如此。这是一种告诉编译器您知道自己在做什么的方法。
@SuppressWarnings("deprecation")
private void initializeSurfaceHolder() {
final SurfaceHolder holder = getHolder();
holder.addCallback(this);
if (Build.VERSION.SDK_INT < 11) {
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
}