2017-05-25 186 views
0

因此,我有一个闹钟应用程序...当接收器从报警类获取意图,它会创建一个通知,并建立它..但我似乎无法弄清楚如何到onclick事件添加到button..i希望它实现的功能不只是得到一个意向添加点击事件通知按钮

这是我的接收机

public class AlarmReceiver extends BroadcastReceiver { 


@Override 
public void onReceive(Context arg0, Intent arg1) { 
    Context context= arg0; 
    Intent intent = new Intent(context,MainActivity.class); 
    PendingIntent pendingIntent=PendingIntent.getActivity(context,0,intent,0); 

    NotificationCompat.Builder mBuilder = 
      (NotificationCompat.Builder) new NotificationCompat.Builder(context) 
        .setSmallIcon(R.drawable.mini) 
        .setContentTitle(context.getResources().getString(R.string.message_box_title)) 
        .setContentText(context.getResources().getString(R.string.message_timesheet_not_up_to_date)) 
        .addAction(R.drawable.bell,"snooze",pendingIntent); 
    Intent resultIntent = new Intent(context, MainActivity.class); 
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); 
    stackBuilder.addParentStack(MainActivity.class); 
    stackBuilder.addNextIntent(resultIntent); 
    PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 
    mBuilder.setContentIntent(resultPendingIntent); 
    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    mNotificationManager.notify(1, mBuilder.build()); 







    Toast.makeText(arg0, "Alarm received!", Toast.LENGTH_LONG).show(); 

    Integer get_your_alarm_choice = arg1.getExtras().getInt("alarm_choice"); 
    Log.e("alarm choice is",get_your_alarm_choice.toString()); 
} 

任何帮助将非常感激

+0

添加resultIntent .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);让我知道它的工作与否 –

+0

但我应该在哪里添加我希望按钮所做的代码? @ msh,nayan – spyder3anz

+0

Intent intent = new Intent(context,MainActivity.class);在此行后添加intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 稍后您可以编写Intent resultIntent = new Intent(context,MainActivity.class);在此行后添加resultIntent .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); –

回答

0

我想你想要在通知中添加自定义按钮并且想要点击它。

请尝试以下代码,如果你需要的一样:

你必须使用RemoteViews这一点。

我创建了一个名为notification_normal_view.xml的自定义布局。

在我的notification_normal_view,我有一个TextView ietxtSnooze和点击我想打开SnoozeActivity,如果我点击通知的任何其他部分我想打开MainActivity。

因此,在您接收器:

// Using RemoteViews to bind custom layouts into Notification 
RemoteViews notificationView = new RemoteViews(context.getPackageName(), R.layout.notification_normal_view); 

Intent snoozeIntent = new Intent(context, SnoozeActivity.class); 
snoozeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
       | Intent.FLAG_ACTIVITY_CLEAR_TASK | Notification.FLAG_AUTO_CANCEL); 

PendingIntent pSnoozeIntent = PendingIntent.getBroadcast(context,NOTIFICATION_ID,snoozeIntent,PendingIntent.FLAG_UPDATE_CURRENT); 

Intent intent = new Intent(context, ExoVideoPlayer.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_CLEAR_TASK | Notification.FLAG_AUTO_CANCEL); 
PendingIntent pIntent = PendingIntent.getActivity(context, NOTIFICATION_ID,intent, PendingIntent.FLAG_UPDATE_CURRENT); 

notificationView.setOnClickPendingIntent(R.id.txt_snooze, pSnoozeIntent); 

Notification notificationBuilder = new Notification.Builder(context) 
       .setSound(soundUri) 
       .setSmallIcon(icon) 
       .setAutoCancel(true) 
       .build(); 

//set your view to notification 
notificationBuilder.contentView = notificationView; 
notificationBuilder.flags = Notification.FLAG_AUTO_CANCEL; 
notificationBuilder.icon = R.mipmap.ic_launcher; 
notificationBuilder.contentIntent = pIntent; 

NotificationManager mNotificationManager = 
     (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 

mNotificationManager.notify(NOTIFICATION_ID, notificationBuilder); 
+0

,您认为它非常有帮助......最后一件事情..你知道我怎么可以让通知按钮打盹闹钟吗?你的代码可以让我在使用按钮时发送一个待处理的意图...我希望能够点击它并让它像一个功能一样......在我的情况下打盹闹钟@PatrickR – spyder3anz