//创建普通通知
     String channelId = "测试渠道";
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            Notification notification = new Notification.Builder(getApplicationContext(),channelId)
                    .setContentTitle("测试通知标题")
                    .setContentText("测试通知文本")
                    .setWhen(System.currentTimeMillis())
                    .setSmallIcon(R.drawable.chips)
                    .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.chips))
                    .build();
            NotificationManager notificationManager = (NotificationManager)getApplicationContext().getSystemService(NOTIFICATION_SERVICE);
            NotificationChannel channel = new NotificationChannel(channelId,"测试渠道名称", NotificationManager.IMPORTANCE_DEFAULT);
            notificationManager.createNotificationChannel(channel);
            notificationManager.notify((int)Math.random(), notification);
        }

 //创建自定义布局的通知:

MainActivity:

    private static final String CHANNEL_ID = "channelID";

    private void customNotification() {
        // Get the layouts to use in the custom notification
        RemoteViews rv = new RemoteViews(getPackageName(), R.layout.custom_notification);
        // Apply the layouts to the notification
        Notification customNotification = new NotificationCompat.Builder(this, CHANNEL_ID)
                .setSmallIcon(R.drawable.chips)
                .setCustomContentView(rv)
                .build();
        NotificationManager notificationManager = (NotificationManager) this.getSystemService(NOTIFICATION_SERVICE);
        NotificationChannel channel = null;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            channel = new NotificationChannel(CHANNEL_ID, "测试渠道名称", NotificationManager.IMPORTANCE_DEFAULT);
            notificationManager.createNotificationChannel(channel);
        }

        // adding action to left button(添加点击事件)
        Intent rightIntent = new Intent(this, NotificationIntentService.class);
        rightIntent.setAction("left");
        rv.setOnClickPendingIntent(R.id.button2, PendingIntent.getService(this, 1, rightIntent, PendingIntent.FLAG_UPDATE_CURRENT));

        notificationManager.notify((int) Math.random(), customNotification);
    }

布局:(注意:不可以使用constraint布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    >
    <Button
        android:layout_marginRight="5dp"
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="show"
        />

    <Button
        android:layout_marginLeft="5dp"
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="hide"
        />
</LinearLayout>

AndroidManifest.xml(注册service)

<service android:name=".NotificationIntentService"></service>

获取点击事件:

public class NotificationIntentService extends IntentService {
    public NotificationIntentService() {
        super("notificationIntentService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        switch (intent.getAction()){
            case "left":
                android.os.Handler leftHandler = new android.os.Handler(Looper.getMainLooper());
                leftHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(getBaseContext(),
                                "You clicked the left button", Toast.LENGTH_LONG).show();
                    }
                });
                break;
        }
    }
}

 

 posted on 2022-10-06 14:47  laremehpe  阅读(28)  评论(0编辑  收藏  举报