簡體   English   中英

如何在 Android Oreo 或更高版本的設備中為通知着色?

[英]How to colorized notification in Android Oreo or higher device?

我只是想將我的應用程序支持到 Android O。我只是喜歡與此類似的稱為彩色通知的概念。

我想實現如下圖所示:

在此處輸入圖片說明

這是我目前正在做的事情:

import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
Button bt;
String channelID="channelID";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bt=findViewById(R.id.button);
        bt.setOnClickListener(new View.OnClickListener() {
            @RequiresApi(api = Build.VERSION_CODES.O)
            @Override
            public void onClick(View view) {
                Notification notification=new Notification.Builder(MainActivity.this)
                        .setContentTitle("This is an title")
                        .setContentText("This is an long text")
                        .setChannelId(channelID)
                        .setOngoing(true)
                        .setColor(getResources().getColor(R.color.blue))
                        .setColorized(true)
                        .setSmallIcon(R.drawable.ic_launcher_foreground)
                        .build();
                NotificationManager manager= (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                NotificationChannel channel= null;
                if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
                    channel = new NotificationChannel(channelID,"Popup notification channel", NotificationManager.IMPORTANCE_HIGH);
                    channel.setLightColor(getResources().getColor(R.color.blue));
                    channel.setShowBadge(true);
                    manager.createNotificationChannel(channel);
                }
                manager.notify(0,notification);
            }
        });
    }
}

您必須使用 NotificationCompat.Builder,然后設置 MediaStyle。

NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this)
    .setStyle(new NotificationCompat.MediaStyle()
              // Attach our MediaSession token
            .setMediaSession(mediaSession.getSessionToken())
            // Show our playback controls in the compat view
           .setShowActionsInCompactView(0, 1, 2))

現在運行並檢查android O

在此處輸入圖片說明

如果您使用的是 android x

    MediaSessionCompat mediaSessionCompat = new MediaSessionCompat(this, "tag");



androidx.media.app.NotificationCompat.MediaStyle mediaStyle = null;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            mediaStyle = new 
androidx.media.app.NotificationCompat.MediaStyle();
            mediaStyle.setShowCancelButton(true);
            mediaStyle.setShowActionsInCompactView(2,3,4); //index of actions 
 // shown when notif is collapsed
        mediaStyle.setMediaSession(mediaSessionCompat.getSessionToken()); // without this notif won't get colorized

            }



 Notification notification = notificationCompatBuilder
            .setStyle(mediaStyle)
            .setContentTitle("title")
            .setContentText("text")
            .setSmallIcon(R.drawable.notif_icon)
            .setColorized(true)
            .setColor(getResources().getColor(R.color.red))
            .setLargeIcon(BitmapFactory.decodeResource(
                    getResources(),
                    R.drawable.artwork))
            .setContentIntent(notifyPendingIntent)
            .addAction(R.drawable.ic_music_note_black_24dp,"music note", null)
            .addAction(R.drawable.ic_notifications_paused_black_24dp,"pause", 
null)
            .addAction(R.drawable.ic_skip_previous_black_24dp,"skip", null)
            .addAction(R.drawable.ic_pause_black_24dp,"pause", null)
            .addAction(R.drawable.ic_skip_next_black_24dp,"next", null)
            .setSubText("Song name")
            .setDefaults(NotificationCompat.DEFAULT_ALL)
            // Set primary color (important for Wear 2.0 Notifications))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM