【发布时间】:2017-03-25 18:10:28
【问题描述】:
目前我正在设置一个警报,当它被激活时会向用户显示通知。
我现在可以将我的 SQL 中的文本设置为我的通知,但它每次只是我数据库中的第一行。现在我想出了两种可能的解决方案,它们只是理论上的。
有没有一种方法可以在每次调用数据库时通知通知它会移动到下一个结果?
如上所述,我正在设置闹钟,当闹钟响起时,它会调用通知。现在,在我待定的警报意图中,我给它一个 id,你可以看到它作为 id 有没有办法将它提供给我的通知 ID,然后设置一个语句,如果通知 ID 等于或在列表中我的警报 ID 存储在我的 SQL 中,然后它将搜索要输入的正确文本。
待定意图....
pendingIntent = PendingIntent.getBroadcast(v.getContext(), id, receiver,PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.set(AlarmManager.RTC_WAKEUP, myCalendar.getTimeInMillis(), pendingIntent);
intentArrayList.add(pendingIntent);
广播....
MyDatabaseHandler myDatabaseHandler = new MyDatabaseHandler(context, null, null, 1);
Cursor cursor = myDatabaseHandler.getAllProducts();
// Information we are trying to acquire but can only get first result
String name = cursor.getString(cursor.getColumnIndexOrThrow("alarm_name"));
String date = cursor.getString(cursor.getColumnIndexOrThrow("alarm_date"));
// Alarm ID FROM SQL which we want to match with the NOTIFICATION ID.....
String alarm_request_code = cursor.getString(cursor.getColumnIndexOrThrow("alarm_code"));
////
Log.i("The reciever is working", "perfect");
//create an intent to service
Intent service_Intent = new Intent(context, MessageService.class);
context.startService(service_Intent);
//Notification
NotificationManager notificationManager = (NotificationManagercontext.getSystemService(context.NOTIFICATION_SERVICE);
Intent moveActivity = new Intent(context, AlarmActivity.class);
moveActivity.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// Works with moveActivity to move the user back to main application.
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,moveActivity, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setContentIntent(pendingIntent)
.setContentTitle(name)
.setContentText(date)
.setSmallIcon(R.mipmap.ic_launcher)
.setAutoCancel(true);
notificationManager.notify(Integer.valueOf(alarm_request_code), builder.build());
}
}
//////////////////////////////
解决一些问题
当前,每当我的闹钟响起时,都会向用户发送带有静态名称和描述的通知。
我想要完成的是,当此警报响起时,我的通知要么被赋予一个与警报匹配的 ID,要么查找警报,然后用活动警报详情。
-
这是我当前的布局在我的 SQLiteOpenHelper 中的样子
private static final String DATABASE_NAME = "alarmList.db"; public static final String TABLE_NAME = "alarm_list"; public static final String COLUMN_ID = "_id"; public static final String COLUMN_ALARMTIME = "alarm_time"; public static final String COLUMN_AlARMDATE = "alarm_date"; public static final String COLUMN_ALARMNAME = "alarm_name"; // Alarm request code column for working with switch and public static final String COLUMN_ALARMRC = "alarm_code";
默认遵循 oncreate 和 update 方法
【问题讨论】:
标签: android sql android-intent notifications android-pendingintent