1. 创建 NotificationBuilder
你需要使用 NotificationCompat.Builder 类创建一个 Notification 对象。以下是一个简单的示例:
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.os.Build;
import androidx.core.app.NotificationCompat;
public class NotificationHelper {
private static final String CHANNEL_ID = "my_channel_01";
private static final CharSequence CHANNEL_NAME = "My Channel";
public static Notification createNotification(Context context, String title, String content) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(title)
.setContentText(content)
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
createNotificationChannel(context);
}
return builder.build();
}
private static void createNotificationChannel(Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(
CHANNEL_ID,
CHANNEL_NAME,
NotificationManager.IMPORTANCE_DEFAULT
);
NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
}
}
}
2. 触发 Notification
在你的活动(Activity)或服务(Service)中,当需要触发通知时,可以调用 NotificationManager:
import android.app.NotificationManager;
import android.content.Context;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;
public class MainActivity extends AppCompatActivity {
private static final int NOTIFICATION_ID = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 触发通知
triggerNotification();
}
private void triggerNotification() {
// 创建 Notification 对象
Notification notification = NotificationHelper.createNotification(
this,
"Title of Notification",
"Content of Notification"
);
// 获取 NotificationManager
NotificationManager notificationManager = getSystemService(NotificationManager.class);
// 显示通知
notificationManager.notify(NOTIFICATION_ID, notification);
}
}
3. 自定义 Notification 行为
你可以为通知添加行为,比如点击通知后跳转到某个活动。以下是一个添加点击行为的示例:
// 在 createNotification 方法中添加点击行为
public static Notification createNotification(Context context, String title, String content) {
// ...
// 创建一个 Intent,用于指定点击通知时跳转到的活动
Intent intent = new Intent(context, YourTargetActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
context,
0,
intent,
PendingIntent.FLAG_UPDATE_CURRENT
);
// 将 PendingIntent 设置为通知的点击行为
builder.setContentIntent(pendingIntent);
// ...
}
在这个示例中,点击通知后会跳转到 YourTargetActivity。你需要替换 YourTargetActivity 为你想要跳转的活动。
请注意,为了在 Android 8.0 及更高版本上显示通知,你还需要创建一个通知渠道(Notification Channel),这是上面代码中 createNotificationChannel 方法的作用。通知渠道是 Android 8.0 引入的新概念,用于对通知进行分类和分组。
转载请注明出处:http://www.pingtaimeng.com/article/detail/15154/Android