Android compileSdk 27 启动服务自动显示通知
Android compileSdk 27 start service automatically show notification
我有一个启动服务的应用程序。我知道 Android Oreo 有一些限制,所以我用这个代码开始我的服务:
context.startForegroundService(new Intent(context.getApplicationContext(), BeaconService.class));
在 BeaconService class 的 onCreate() 方法中,我调用了 startForeground() 方法。
我是这样做的:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(CHANNEL_ID,
"MyApp",
NotificationManager.IMPORTANCE_HIGH);
try {
((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).createNotificationChannel(channel);
} catch (Exception e){
e.printStackTrace();
}
Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID).build();
startForeground(1, notification);
}
我的问题是,当此服务启动时,我收到一个空通知,提示我的应用程序 运行。为什么?当我的应用 运行 在前台时,我不想要此通知。
一旦服务启动,startForegroundService
隐式调用 startForeground (int id, Notification notification)
。您看到的通知是因为这个隐式调用。
我有一个启动服务的应用程序。我知道 Android Oreo 有一些限制,所以我用这个代码开始我的服务:
context.startForegroundService(new Intent(context.getApplicationContext(), BeaconService.class));
在 BeaconService class 的 onCreate() 方法中,我调用了 startForeground() 方法。 我是这样做的:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(CHANNEL_ID,
"MyApp",
NotificationManager.IMPORTANCE_HIGH);
try {
((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).createNotificationChannel(channel);
} catch (Exception e){
e.printStackTrace();
}
Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID).build();
startForeground(1, notification);
}
我的问题是,当此服务启动时,我收到一个空通知,提示我的应用程序 运行。为什么?当我的应用 运行 在前台时,我不想要此通知。
startForegroundService
隐式调用 startForeground (int id, Notification notification)
。您看到的通知是因为这个隐式调用。