0

I am devoleping an application for android.I have AlarmManager.This AlarmManager cannot be stoppable.Everytime(every 2 seconds) checking my list according to random number.Random number check the database and giving to decision to NotificationManager.İf list line is not green.It make it.My problem is when line is green.My notification text doesn"t change.How can I fix it ?

My AlarmManagerReceiver :

 DatabaseHelper mDatabaseHelper;
    ArrayList   listData = new ArrayList<>();
    ArrayList   listDataoran = new ArrayList<>();
    ArrayList   listDataBoya = new ArrayList<>();
    ArrayList   listDataId = new ArrayList<>();
    ArrayList   listDatanumber = new ArrayList<>();
Random secilmiskisi ;
int secilmissayı;


   @Override
    public void onReceive(Context context, Intent intent) {
        mDatabaseHelper = new DatabaseHelper(context);
        Cursor data = mDatabaseHelper.getData();
        while(data.moveToNext()){

            listDataId.add(data.getString(0));

            listData.add(data.getString(1));


            listDatanumber.add(data.getString(2));

            listDataoran.add(data.getString(3));
            listDataBoya.add(data.getString(4));}

 secilmiskisi = new Random();
        secilmissayı = secilmiskisi.nextInt(listDataId.size()) + 0;

        Toast.makeText(context, "Alarm !!!!!!!!!!", Toast.LENGTH_LONG).show();
        cancelAlarm(context);

     //   setalarm(context);


if(!listDataBoya.contains("#1eac02")){



  String table = "people_table";
       ContentValues productDetailsContentValues = new ContentValues();
              productDetailsContentValues.put("boya", "#1eac02");
               String where = " id = " + listDataId.get(secilmissayı);
              mDatabaseHelper.update(table, productDetailsContentValues, where , null);



        Intent yesReceive = new Intent();
        yesReceive.setAction(AppConstant.YES_ACTION);
        PendingIntent pendingIntentYes = PendingIntent.getBroadcast(context, 12345, yesReceive, PendingIntent.FLAG_UPDATE_CURRENT);
Intent intenttt = new Intent(context,AnaMenu.class);
        PendingIntent pIntent = PendingIntent.getActivity(context, 0, intenttt, 0);


        Intent yesReceive2 = new Intent();
        yesReceive2.setAction(AppConstant.STOP_ACTION);
        PendingIntent pendingIntentYes2 = PendingIntent.getBroadcast(context, 12345, yesReceive2, PendingIntent.FLAG_UPDATE_CURRENT);
        // Build notification
        // Actions are just fake
        Notification noti = null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
            noti = new Notification.Builder(context)
                    .setTicker(" size bir bildirim yolladı.")
                    .setContentTitle("")
                    .setContentText(listData.get(secilmissayı)+"   i arama zamanı")
                    .setSmallIcon(R.drawable.familyiiii)

                    .addAction(R.drawable.cal, "Ara", pendingIntentYes)
                    .addAction(R.drawable.se, "Daha Sonra", pendingIntentYes2)

                    .setContentIntent(pIntent).getNotification();
        }
        // .setTicker(" size bir bildirim yolladı.").setSmallIcon(R.drawable.familyiiii)
        //       .setSubText("Bu mesaj ile artık" + isimler.get(random) + " arayacağın bir görevin oldu.")
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
        noti.flags |= Notification.FLAG_AUTO_CANCEL;
        notificationManager.notify(0, noti);
        setalarm(context);

 }else  if (listDataBoya.get(secilmissayı) != "#1eac02"  ){

 String table = "people_table";
       ContentValues productDetailsContentValues = new ContentValues();
              productDetailsContentValues.put("boya", "#1eac02");
           String where = " id = " + listDataId.get(secilmissayı);
            mDatabaseHelper.update(table, productDetailsContentValues, where , null);


        Intent yesReceive = new Intent();
        yesReceive.setAction(AppConstant.YES_ACTION);
        PendingIntent pendingIntentYes = PendingIntent.getBroadcast(context, 12345, yesReceive, PendingIntent.FLAG_UPDATE_CURRENT);


Intent intenttt = new Intent(context, AnaMenu.class);
        PendingIntent pIntent = PendingIntent.getActivity(context, 0, intenttt, 0);


        Intent yesReceive2 = new Intent();
        yesReceive2.setAction(AppConstant.STOP_ACTION);
        PendingIntent pendingIntentYes2 = PendingIntent.getBroadcast(context, 12345, yesReceive2, PendingIntent.FLAG_UPDATE_CURRENT);
        // Build notification
        // Actions are just fake
        Notification noti = null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
            noti = new Notification.Builder(context)
                    .setTicker(" size bir bildirim yolladı.")
                    .setContentTitle("")
                 .setContentText(listData.get(secilmissayı)+"   i arama zamanı")
                    .setSmallIcon(R.drawable.familyiiii)

                    .addAction(R.drawable.cal, "Ara", pendingIntentYes)
                    .addAction(R.drawable.se, "Daha Sonra", pendingIntentYes2)

                    .setContentIntent(pIntent).getNotification();
        }
        // .setTicker(" size bir bildirim yolladı.").setSmallIcon(R.drawable.familyiiii)
        //       .setSubText("Bu mesaj ile artık" + isimler.get(random) + " arayacağın bir görevin oldu.")
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
        noti.flags |= Notification.FLAG_AUTO_CANCEL;
        notificationManager.notify(0, noti);
setalarm(context);

 }while (listDataBoya.get(secilmissayı) == "#1eac02"){////Here , is the problem.
 String table = "people_table";
       ContentValues productDetailsContentValues = new ContentValues();
              productDetailsContentValues.put("boya", "#1eac02");
           String where = " id = " + listDataId.get(secilmissayı);
            mDatabaseHelper.update(table, productDetailsContentValues, where , null);


        Intent yesReceive = new Intent();
        yesReceive.setAction(AppConstant.YES_ACTION);
        PendingIntent pendingIntentYes = PendingIntent.getBroadcast(context, 12345, yesReceive, PendingIntent.FLAG_UPDATE_CURRENT);


Intent intenttt = new Intent(context, AnaMenu.class);
        PendingIntent pIntent = PendingIntent.getActivity(context, 0, intenttt, 0);


        Intent yesReceive2 = new Intent();
        yesReceive2.setAction(AppConstant.STOP_ACTION);
        PendingIntent pendingIntentYes2 = PendingIntent.getBroadcast(context, 12345, yesReceive2, PendingIntent.FLAG_UPDATE_CURRENT);
        // Build notification
        // Actions are just fake
        Notification noti = null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
            noti = new Notification.Builder(context)
                    .setTicker("AYNIKİŞİAYNIKİŞİAYNIKİŞİAYNIKİŞİAYNIKİŞİAYNIKİŞİ")
                    .setContentTitle("AYNIKİŞİAYNIKİŞİAYNIKİŞİAYNIKİŞİAYNIKİŞİ")
                 .setContentText(listData.get(secilmissayı)+"   i arama zamanı")
                    .setSmallIcon(R.drawable.familyiiii)

                    .addAction(R.drawable.cal, "Ara", pendingIntentYes)
                    .addAction(R.drawable.se, "Daha Sonra", pendingIntentYes2)

                    .setContentIntent(pIntent).getNotification();
        }
        // .setTicker(" size bir bildirim yolladı.").setSmallIcon(R.drawable.familyiiii)
        //       .setSubText("Bu mesaj ile artık" + isimler.get(random) + " arayacağın bir görevin oldu.")
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
        noti.flags |= Notification.FLAG_AUTO_CANCEL;
        notificationManager.notify(0, noti);
setalarm(context);




 }

This is the first time activity has created :enter image description here

This is the last time activity :enter image description here

I want to change my notification text when selected number"s line (random number)is green.

  • Have you read the documentation related to changing a notification https://developer.android.com/training/notify-user/managing.html ? – Adinia Aug 18 '17 at 10:01
  • Possible duplicate of [Update text of notification, not entire notification](https://stackoverflow.com/questions/14885368/update-text-of-notification-not-entire-notification) – Adinia Aug 18 '17 at 10:02

2 Answers2

1
    String subtext[]={"text one","text two","text three","text four"......};


    int ran=new Random().nextInt(4);

android.app.Notification notif = new android.app.Notification.Builder(getApplicationContext())
                .setContentTitle("M-Educate welcomes you the Digital era of learning")
                .setSubText(subtext[ran])
                .setSmallIcon(R.drawable.icn_app_icon)
                .setLargeIcon(icon)
                .setContentIntent(pendingIntent)
                .setSound(alarmSound)
                .build();
        NotificationManager notificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(0, notif);

Note : set your texts as in a array and set the random text each time you fire notification

Sai Jayant
  • 366
  • 2
  • 14
0

Try this code, replacing your existing one:

DatabaseHelper mDatabaseHelper;
        ArrayList   listData = new ArrayList<>();
        ArrayList   listDataoran = new ArrayList<>();
        ArrayList   listDataBoya = new ArrayList<>();
        ArrayList   listDataId = new ArrayList<>();
        ArrayList   listDatanumber = new ArrayList<>();
        Random secilmiskisi ;
        int secilmissayı;


@Override
public void onReceive(Context context, Intent intent) {
        mDatabaseHelper = new DatabaseHelper(context);
        Cursor data = mDatabaseHelper.getData();
        while(data.moveToNext()){

        listDataId.add(data.getString(0));

        listData.add(data.getString(1));


        listDatanumber.add(data.getString(2));

        listDataoran.add(data.getString(3));
        listDataBoya.add(data.getString(4));}

//        secilmiskisi = new Random();
//        secilmissayı = secilmiskisi.nextInt(listDataId.size()) + 0;
//        As you have declare the random number globaly it wont cahnge

        Toast.makeText(context, "Alarm !!!!!!!!!!", Toast.LENGTH_LONG).show();
        cancelAlarm(context);

        //   setalarm(context);


        if(!listDataBoya.contains("#1eac02")){

        secilmiskisi = new Random();
        secilmissayı = secilmiskisi.nextInt(listDataId.size()) + 0;
//        Place the random thing in local

        String table = "people_table";
        ContentValues productDetailsContentValues = new ContentValues();
        productDetailsContentValues.put("boya", "#1eac02");
        String where = " id = " + listDataId.get(secilmissayı);
        mDatabaseHelper.update(table, productDetailsContentValues, where , null);



        Intent yesReceive = new Intent();
        yesReceive.setAction(AppConstant.YES_ACTION);
        PendingIntent pendingIntentYes = PendingIntent.getBroadcast(context, 12345, yesReceive, PendingIntent.FLAG_UPDATE_CURRENT);
        Intent intenttt = new Intent(context,AnaMenu.class);
        PendingIntent pIntent = PendingIntent.getActivity(context, 0, intenttt, 0);


        Intent yesReceive2 = new Intent();
        yesReceive2.setAction(AppConstant.STOP_ACTION);
        PendingIntent pendingIntentYes2 = PendingIntent.getBroadcast(context, 12345, yesReceive2, PendingIntent.FLAG_UPDATE_CURRENT);
        // Build notification
        // Actions are just fake
        Notification noti = null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
        noti = new Notification.Builder(context)
        .setTicker(" size bir bildirim yolladı.")
        .setContentTitle("")
        .setContentText(listData.get(secilmissayı)+"   i arama zamanı")
        .setSmallIcon(R.drawable.familyiiii)

        .addAction(R.drawable.cal, "Ara", pendingIntentYes)
        .addAction(R.drawable.se, "Daha Sonra", pendingIntentYes2)

        .setContentIntent(pIntent).getNotification();
        }
        // .setTicker(" size bir bildirim yolladı.").setSmallIcon(R.drawable.familyiiii)
        //       .setSubText("Bu mesaj ile artık" + isimler.get(random) + " arayacağın bir görevin oldu.")
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
        noti.flags |= Notification.FLAG_AUTO_CANCEL;
        notificationManager.notify(0, noti);
        setalarm(context);

        }else  if (listDataBoya.get(secilmissayı) != "#1eac02"  ){
        secilmiskisi = new Random();
        secilmissayı = secilmiskisi.nextInt(listDataId.size()) + 0;
//and here also
        String table = "people_table";
        ContentValues productDetailsContentValues = new ContentValues();
        productDetailsContentValues.put("boya", "#1eac02");
        String where = " id = " + listDataId.get(secilmissayı);
        mDatabaseHelper.update(table, productDetailsContentValues, where , null);


        Intent yesReceive = new Intent();
        yesReceive.setAction(AppConstant.YES_ACTION);
        PendingIntent pendingIntentYes = PendingIntent.getBroadcast(context, 12345, yesReceive, PendingIntent.FLAG_UPDATE_CURRENT);


        Intent intenttt = new Intent(context, AnaMenu.class);
        PendingIntent pIntent = PendingIntent.getActivity(context, 0, intenttt, 0);


        Intent yesReceive2 = new Intent();
        yesReceive2.setAction(AppConstant.STOP_ACTION);
        PendingIntent pendingIntentYes2 = PendingIntent.getBroadcast(context, 12345, yesReceive2, PendingIntent.FLAG_UPDATE_CURRENT);
        // Build notification
        // Actions are just fake
        Notification noti = null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
        noti = new Notification.Builder(context)
        .setTicker(" size bir bildirim yolladı.")
        .setContentTitle("")
        .setContentText(listData.get(secilmissayı)+"   i arama zamanı")
        .setSmallIcon(R.drawable.familyiiii)

        .addAction(R.drawable.cal, "Ara", pendingIntentYes)
        .addAction(R.drawable.se, "Daha Sonra", pendingIntentYes2)

        .setContentIntent(pIntent).getNotification();
        }
        // .setTicker(" size bir bildirim yolladı.").setSmallIcon(R.drawable.familyiiii)
        //       .setSubText("Bu mesaj ile artık" + isimler.get(random) + " arayacağın bir görevin oldu.")
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
        noti.flags |= Notification.FLAG_AUTO_CANCEL;
        notificationManager.notify(0, noti);
        setalarm(context);

        }while (listDataBoya.get(secilmissayı) == "#1eac02"){////Here , is the problem.
        String table = "people_table";
        ContentValues productDetailsContentValues = new ContentValues();
        productDetailsContentValues.put("boya", "#1eac02");
        String where = " id = " + listDataId.get(secilmissayı);
        mDatabaseHelper.update(table, productDetailsContentValues, where , null);


        Intent yesReceive = new Intent();
        yesReceive.setAction(AppConstant.YES_ACTION);
        PendingIntent pendingIntentYes = PendingIntent.getBroadcast(context, 12345, yesReceive, PendingIntent.FLAG_UPDATE_CURRENT);


        Intent intenttt = new Intent(context, AnaMenu.class);
        PendingIntent pIntent = PendingIntent.getActivity(context, 0, intenttt, 0);


        Intent yesReceive2 = new Intent();
        yesReceive2.setAction(AppConstant.STOP_ACTION);
        PendingIntent pendingIntentYes2 = PendingIntent.getBroadcast(context, 12345, yesReceive2, PendingIntent.FLAG_UPDATE_CURRENT);
        // Build notification
        // Actions are just fake
        Notification noti = null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
        noti = new Notification.Builder(context)
        .setTicker("AYNIKİŞİAYNIKİŞİAYNIKİŞİAYNIKİŞİAYNIKİŞİAYNIKİŞİ")
        .setContentTitle("AYNIKİŞİAYNIKİŞİAYNIKİŞİAYNIKİŞİAYNIKİŞİ")
        .setContentText(listData.get(secilmissayı)+"   i arama zamanı")
        .setSmallIcon(R.drawable.familyiiii)

        .addAction(R.drawable.cal, "Ara", pendingIntentYes)
        .addAction(R.drawable.se, "Daha Sonra", pendingIntentYes2)

        .setContentIntent(pIntent).getNotification();
        }
        // .setTicker(" size bir bildirim yolladı.").setSmallIcon(R.drawable.familyiiii)
        //       .setSubText("Bu mesaj ile artık" + isimler.get(random) + " arayacağın bir görevin oldu.")
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
        noti.flags |= Notification.FLAG_AUTO_CANCEL;
        notificationManager.notify(0, noti);
        setalarm(context);




        }

You have declared the random number globally, so it won't change throughout the process.

Adinia
  • 3,722
  • 5
  • 40
  • 58
Sai Jayant
  • 366
  • 2
  • 14