在Android 8.1及更高版本中,无法使用自定义LED通知颜色,因为Google在这个版本中限制了对LED灯的访问。下面是一个解决方法,使用NotificationCompat来设置通知的颜色:
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.graphics.Color;
import android.os.Build;
import androidx.core.app.NotificationCompat;
public class NotificationUtils {
private static final String CHANNEL_ID = "channel_id";
private static final String CHANNEL_NAME = "channel_name";
public static void showNotification(Context context, String title, String message, int color) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel notificationChannel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(notificationChannel);
}
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(title)
.setContentText(message)
.setColor(color)
.setAutoCancel(true);
notificationManager.notify(0, builder.build());
}
}
这里的showNotification方法将会创建一个通知并显示出来。你可以通过调用这个方法,并传入要显示的标题、消息和颜色来创建通知。
请注意,在Android 8.0及更高版本中,还需要创建一个通知渠道(Notification Channel)并将其分配给通知。这个示例代码中创建了一个默认的通知渠道,并在创建通知时将其指定为通知的一部分。
同时,你需要在AndroidManifest.xml文件中声明对应的通知图标:
...
...
这里的ic_notification是一个自定义的通知图标,你可以根据自己的需求进行替换。
使用上述代码示例,你将能够在Android 8.1及更高版本中显示具有自定义颜色的通知。注意,仅在Android 8.0及更高版本中才需要创建通知渠道,低于这个版本的Android系统不需要这样做。