Уведомление не работает в 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;
}
}

0 ответов

Другие вопросы по тегам