我正在开发一个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);
}
我想在所选号码的“行(随机数)为绿色时更改我的通知文本。”
答案 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);
}
您已全局声明了随机数,因此在整个过程中不会更改。