我有以下简单的类,我想用它来通知用户传入的消息(我将在应用程序进行时进化)。但就目前而言,在最后一行中,存在以下错误,我无法运行它:
无法解析方法build()
以下是代码:
import android.app.Activity;
import android.app.NotificationManager;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
public class UserNotificationActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void triggerNoti() {
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("My notification")
.setContentText("Hello World!");
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(001, mBuilder.build());
}
}
我已经尝试了这个solution,但没有做出任何改变
我做错了什么?!
P.S。:目标(& min)sdk = 21
答案 0 :(得分:1)
在支持V4及API级别19以上,通知方法有所改变 。您可以尝试以下代码块。
public void sendNotification(String message, String title, Intent intent, int not_id) {
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notification;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
notification
= new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.app_icon)
.setStyle(new NotificationCompat.BigTextStyle().bigText(message))
.setContentTitle(title)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setContentText(message)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
} else {
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.app_icon);
notification
= new NotificationCompat.Builder(this)
.setContentTitle(title)
.setSmallIcon(R.drawable.small_icon)
.setStyle(new NotificationCompat.BigTextStyle().bigText(message))
.setContentText(message)
.setAutoCancel(true)
//.setColor(Color.parseColor("#1a4994"))
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setLargeIcon(bitmap)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
}
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(not_id, notification.build());
}
public void initChannels(Context context) {
if (Build.VERSION.SDK_INT < 26) {
return;
}
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel channel = new NotificationChannel("default",
"Channel name",
NotificationManager.IMPORTANCE_DEFAULT);
channel.setDescription("Channel description");
notificationManager.createNotificationChannel(channel);
}
答案 1 :(得分:0)
private void createNotification(){
Intent intent = new Intent(this,NotificationReceive.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,(int) System.currentTimeMillis(),intent,0);
Notification notification = new Notification.Builder(this)
.setContentTitle("Message");
.setContentText("this is a tittle")
.setSmallIcon(R.drawable.schollo)
.setContentIntent(pendingIntent);
.build();
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notification.flags = notification.FLAG_AUTO_CANCEL;
notificationManager.notify(0,notification);
}