如何更改通知文本?

时间:2017-08-18 09:26:06

标签: android notifications android-alarms

我正在开发一个android的应用程序。我有AlarmManager.This AlarmManager不能stoppable.Everytime(每2秒)根据随机数检查我的列表。随机数检查数据库并给予决定NotificationManager.İf列表行它不是绿色的。它是成功的。我的问题是当线是绿色的时候。我的通知文字没有变化。我该如何解决?

我的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);




 }

这是第一次创建活动:enter image description here

这是最后一次活动:enter image description here

我想在所选号码的“行(随机数)为绿色时更改我的通知文本。”

2 个答案:

答案 0 :(得分:0)

    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);

注意:将文本设置为数组,并在每次触发通知时设置随机文本

答案 1 :(得分:0)

尝试使用此代码,替换现有代码:

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);




        }

您已全局声明了随机数,因此在整个过程中不会更改。