0
我有三種不同的操作通知。即通話,短信,貪睡。但是每當通知來到時,我點擊任何動作,然後只有主要活動打開,但沒有動作執行。但如果應用程序是開放的,那麼行動就會得到執通知操作需要點擊兩次才能執行操作
如果應用打開:操作將獲得執行並通知關閉。
如果應用程序未打開:應用程序將打開,無操作執行並且通知將停留在那裏。
這裏是我的ReminderService.java
Intent intentCall = new Intent(this, MainActivity.class);
intentCall.setAction(Constants.NOTIFY_CALL);
intentCall.putExtra("rowId", rowId);
intentCall.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntentCall = PendingIntent.getActivity(this, (int)rowId, intentCall, PendingIntent.FLAG_UPDATE_CURRENT);
//Maybe intent
Intent intentSMS = new Intent(this, MainActivity.class);
intentSMS.setAction(Constants.NOTIFY_SMS);
intentSMS.putExtra("rowId", rowId);
intentSMS.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntentSms = PendingIntent.getActivity(this, (int)rowId, intentSMS, PendingIntent.FLAG_UPDATE_CURRENT);
Intent snoozeIntent = new Intent(this, MainActivity.class);
snoozeIntent.setAction(Constants.NOTIFY_SNOOZE);
snoozeIntent.putExtra("rowId", rowId);
snoozeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntentSnooze = PendingIntent.getActivity(this, (int)rowId, snoozeIntent, PendingIntent.FLAG_UPDATE_CURRENT);
//Initialize NotificationManager using Context.NOTIFICATION_SERVICE
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
//Prepare Notification Builder
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
if(notes.length() <= 0){
notificationBuilder.setContentText("Do you want to call or sms to "+name);
notificationBuilder.setStyle(new NotificationCompat.BigTextStyle()
.bigText("Do you want to call or sms to "+name));
} else {
notificationBuilder.setContentText(notes);
notificationBuilder.setStyle(new NotificationCompat.BigTextStyle()
.bigText(notes));
}
notificationBuilder.setContentTitle(name);
notificationBuilder.setSmallIcon(getNotificationIcon());
notificationBuilder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
notificationBuilder.addAction(R.mipmap.ic_stat_call, "", pendingIntentCall);
notificationBuilder.addAction(R.mipmap.ic_stat_sms, "", pendingIntentSms);
notificationBuilder.addAction(R.mipmap.ic_stat_snooze, "", pendingIntentSnooze);
notificationBuilder.setAutoCancel(true);
notificationManager.notify((int)rowId, notificationBuilder.build());
這裏是MainActivity.java
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
executeNotification(intent);
}
private void executeNotification(Intent intent) {
LogFile.appendLog(" In Execute Notification : " + intent.getExtras().getLong("rowId"));
long rowId;
if (intent.getExtras() != null) {
if (intent.getExtras().getLong("rowId") > 0) {
LogFile.appendLog("Row Id received : -" + intent.getExtras().getLong("rowId"));
rowId = intent.getExtras().getLong("rowId");
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.cancel((int) rowId);
RemindersDbAdapter mDBHelper = new RemindersDbAdapter(this);
mDBHelper.open();
Cursor cursor = mDBHelper.fetchReminder(rowId);
String Number = cursor.getString(cursor.getColumnIndex(RemindersDbAdapter.KEY_NUMBER));
if (intent.getAction() != null) {
if (intent.getAction().equalsIgnoreCase(Constants.NOTIFY_CALL)) {
LogFile.appendLog("executeNotification() : received notification Call time:" + " rowId : " + rowId);
makeReminderCall(Number);
} else if (intent.getAction().equalsIgnoreCase(Constants.NOTIFY_SMS)) {
LogFile.appendLog("executeNotification() : received notification SMS :" + " rowId : " + rowId);
sendReminderSMS(Number);
} else if (intent.getAction().equalsIgnoreCase(Constants.NOTIFY_SNOOZE)) {
LogFile.appendLog("executeNotification() : received notification SNOOZE :" + " rowId : " + rowId);
snoozeReminder((int) rowId);
}
}
}
}
}
所以我需要點擊兩次執行操作,點擊打開應用程序,第二執行操作。
請讓我知道我在做什麼錯。