目录
1.了解Notification
2.提出要求
点击发出通知触发发送通知事件
点击取消通知触发取消通知事件
点击通知进入通知界面,退出后通知关闭
3.编写主布局资源文件
实现两个按钮
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="sendNotification"
android:text="发出通知">
</Button>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="cacelNotification"
android:text="取消通知">
</Button>
</LinearLayout>
效果显示
4.编写主界面代码
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
private NotificationManager manager;
private Notification notification;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
//这里的id需要与下面的channelId:保持一致 name可以随便这就相当于弹出时的提示
NotificationChannel channel = new NotificationChannel("lu", "测试通知", NotificationManager.IMPORTANCE_HIGH);
manager.createNotificationChannel(channel);
}
//创建意图
Intent intent = new Intent(this, NotificationActivity.class);
//创建PendingIntent
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
notification = new NotificationCompat.Builder(this, "lu")
.setContentTitle("官方通知") // 必须要
.setContentText("梧高凤必至花香蝶自来")//内容
.setSmallIcon(R.drawable.ic_launcher_foreground) // 必须要不带颜色的图片
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.cherry))//设置大图标
.setColor(Color.parseColor("#ff000000")) //设置小图标颜色
.setContentIntent(pendingIntent) // 设置点击通知后自动清除通知
.setAutoCancel(true) //点击后自动取消
.build();
}
public void sendNotification(View view) {
manager.notify(1, notification);
}
public void cacelNotification(View view) {
manager.cancel(1);
}
}
局部分析
主要方法
5.创建跳转界面
import android.app.Activity;
import android.os.Bundle;
import androidx.annotation.Nullable;
public class NotificationActivity extends Activity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}