(无通知不适用)XXXService extends Service 当你使用 startForegroundService 方法启动一个前台服务时, 你必须在短时间内(通常是5秒内)调用。 虽然可以创建一个不可见的通知,但用户手动设置通知显示等等配置后,代码设置的不可见的通知依然显示,那么怎么办呢?
public class UploadService extends Service {
private static final String CHANNEL_ID = "hidden_channel_id";
@Override
public void onCreate() {
super.onCreate();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// 创建通知通道
initNotificationChannel(CHANNEL_ID, "隐藏通知");
}
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (null == intent) {
return super.onStartCommand(intent, flags, startId);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
/**
* 当你使用 startForegroundService 方法启动一个前台服务时,
* 你必须在短时间内(通常是5秒内)调用 startForeground 方法。
* 这是为了确保服务在前台运行,并且用户能够看到相关的通知。
*/
// 创建一个不可见的通知
Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.trans_bg) // 使用一个透明的图标
.setContentTitle("") // 空标题
.setContentText("") // 空内容
.setSound(null) // 设置声音为空
.setVibrate(new long[]{0L}) // 设置震动模式为空
.setLights(Color.TRAN