2017-08-18 27 views
0

私はandroid.AのアプリケーションをdevolepingしていますAlarmManager.This AlarmManagerはstoppable.Everytime(2秒ごとに)乱数に応じて私のリストをチェックしています。ランダム番号は、データベースを確認し、NotificationManager.İfリストラインgreen.Itしないit.Myラインがgreen.My通知テキストがt change.Howが、私はそれを修正することができます」のdoesnされたときに通知テキストを変更するにはどうすればよいですか?

私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

Thi最後のアクティビティ:enter image description here

選択した番号の行(ランダム番号)が緑色の場合、通知テキストを変更したいと思います。

+0

通知の変更に関する文書をお読みになりましたかhttps://developer.android.com/training/notify-user/managing.html? – Adinia

+0

[通知のテキストを更新し、通知全体を更新する]の可能な複製(https://stackoverflow.com/questions/14885368/update-text-of-notification-not-entire-notification) – Adinia

答えて

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

注:通知

+0

それは動作しません。私の問題ループがグリーンになったときにループが働いていません。テキストを表示しません。 –

0

を発射するたびに、既存を置き換える、このコードを試してみてください、配列のようにあなたの文章を設定すると、ランダムなテキストを設定1:

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




     } 

あなたは乱数をグローバルに宣言していますので、処理中は変更されません。

+0

あなたは何を意味するのか分かりません。ランダムなものをローカルに置きます。そしてあなたのコードを私のブロードキャストレシーバーにコピーしました。まだループしていません。 –

+0

乱数ジェネレータはif文の中に入れてください –

+0

あなたのコードをリフレッシュしましたか?それは意味ですか?それはうまくいきません。私は間違っています。私は放送レシーバーで初心者です。 –

関連する問題