Уведомление не работает в LOLLIPOP
Вот мой код уведомления. Я создал класс UDPService, который расширяет класс IntentService, и для получения уведомления после завершения работы приложения я создал 2 метода onBind и onStartCommand, которые приведены в приведенном ниже коде, еще один созданный метод, называемый задачей уведомления, которая в основном получает команду STS (статус) и всякий раз, когда эта команда получает уведомление всплывает. Это уведомление работает на всех устройствах Android, но не работает в Android 5.1(LOLLIPOP). После удаления задачи уведомление прекращается только в LOLLIPOP.
public class UDPService extends IntentService {
public UDPService() {
super("UDPService");
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
return START_STICKY;
}
protected JSONObject doInBackground(Void[] params) {
try {
SharedPreferences preferences = getSharedPreferences(NOTIFICATION, MODE_PRIVATE);
boolean scheduleNotifyState = preferences.getBoolean("schedule_notify",true);
boolean scheduleVibrationState = preferences.getBoolean("schedule_vibration",true);
boolean scheduleNotifyToneState = preferences.getBoolean("schedule_notify_tone", true);
if (object.getString("cmd").equals(Cmd.STS)) {
String deviceMainId = object.getString("slave");
String nodeNumber = object.getString("node");
String fromDeviceSwitchV = object.getString("val");
Notification.Builder notification = new Notification.Builder(getApplicationContext());
if(object.getString("tag").equalsIgnoreCase("schedule")) {
String[] switchData = databaseHandler.getSwitchData(deviceMainId, nodeNumber);
int value = Integer.parseInt(nodeNumber);
String x = fromDeviceSwitchV.substring(value -1,value);
String data = null;
if(x.equalsIgnoreCase("0")){
data = "Off";
}else if(x.equalsIgnoreCase("A")){
data = "On";
}
boolean isSwitchAdded = databaseHandler.isSwitchAdded(nodeNumber,deviceMainId);
Log.e("Switch added", String.valueOf(isSwitchAdded));
if(isSwitchAdded){
if(scheduleNotifyState){
String LongText = "Group Name: "+ switchData[1] + "\nSwitch Name :"+switchData[0] + " is "+ data;
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(),
0, intent, 0);
if(scheduleNotifyToneState){
Ringtone r;
Uri notification_tone;
try {
notification_tone = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
r = RingtoneManager.getRingtone(getApplicationContext(), notification_tone);
r.play();
} catch (Exception e) {
e.printStackTrace();
}
notification.setContentTitle("Schedule Executed")
.setContentText(switchData[0] + " from "+ switchData[1] + " group is "+ data)
.setSmallIcon(R.drawable.logo2)
.setLargeIcon(BitmapFactory.decodeResource(getApplicationContext()
.getResources(), R.drawable.logo2))
.setContentIntent(pendingIntent)
.setAutoCancel(true)
.setLights(Color.WHITE, 3000, 3000)
.setStyle(new Notification.BigTextStyle().bigText(LongText))
.setPriority(NotificationManager.IMPORTANCE_HIGH);
}else{
notification.setContentTitle("Schedule Executed")
.setContentText(switchData[0] + " from "+ switchData[1] + " group is "+ data)
.setSmallIcon(R.drawable.logo2)
.setLargeIcon(BitmapFactory.decodeResource(getApplicationContext().getResources(),
R.drawable.logo2))
.setContentIntent(pendingIntent)
.setAutoCancel(true)
.setLights(Color.WHITE, 3000, 3000)
.setStyle(new Notification.BigTextStyle()
.bigText(LongText))
.setPriority(NotificationManager.IMPORTANCE_HIGH);
}
if(scheduleVibrationState){
notification.setContentTitle("Schedule Executed")
.setContentText(switchData[0] + " from "+ switchData[1] + " group is "+ data)
.setSmallIcon(R.drawable.logo2)
.setLargeIcon(BitmapFactory.decodeResource(getApplicationContext().getResources(),
R.drawable.logo2))
.setContentIntent(pendingIntent)
.setAutoCancel(true)
.setLights(Color.WHITE, 3000, 3000)
.setVibrate(new long[]{500, 500, 500, 500, 500})
.setStyle(new Notification.BigTextStyle()
.bigText(LongText))
.setPriority(NotificationManager.IMPORTANCE_HIGH);
}else {
notification.setContentTitle("Schedule Executed")
.setContentText(switchData[0] + " from "+ switchData[1] + " group is "+ data)
.setSmallIcon(R.drawable.logo2)
.setLargeIcon(BitmapFactory.decodeResource(getApplicationContext().getResources(),
R.drawable.logo2))
.setContentIntent(pendingIntent)
.setAutoCancel(true)
.setLights(Color.WHITE, 3000, 3000)
.setStyle(new Notification.BigTextStyle()
.bigText(LongText))
.setPriority(NotificationManager.IMPORTANCE_HIGH);
}
}
}
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(schedule_notification_id++, notification.build());
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
}