NotificationCompat.Builder,如何使用addAction获取确切的意图?

时间:2016-07-19 09:06:20

标签: android

我尝试使用2个按钮创建通知操作。 我想用PendingIntent.getActivities执行此操作,其中intents[]作为参数之一。 问题在于mBuilder.addAction,我无法选择用户点击按钮时要运行的意图。 现在每个按钮激活相同的意图。 我确定必须有一些东西我可以选择我想要选择的意图,否则为什么intent[]getActivities()方法的参数之一?

试图寻找解决方案,但没有运气..

以下主要代码向您展示我想要做的事情:

  Intent sendIntent = new Intent();
        sendIntent.setAction(Intent.ACTION_SEND);
        sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
        sendIntent.setType("text/plain");

        Intent[] intents = new Intent[2];
        intents[0] =  new Intent(this,next_activity.class); // the first Intent
        intents[1] = Intent.createChooser(sendIntent, "Share with.."); // the second Intent

        PendingIntent resultPendingIntent = PendingIntent.getActivities(this,0,intents,PendingIntent.FLAG_UPDATE_CURRENT);

// the problem is with resultPendingIntent, need to choose what intent to run from intents array
        mBuilder.addAction(R.mipmap.ic_launcher,"Share",resultPendingIntent) 
                .addAction(R.mipmap.ic_launcher, "Open", resultPendingIntent); 

1 个答案:

答案 0 :(得分:0)

PendingIntent#getActivities

(Context context, int requestCode, Intent[] intents, int flags)
  

与getActivity(Context,int,Intent,int)类似,但允许提供Intent数组。数组中的最后一个Intent被视为PendingIntent的主键,就像给getActivity(Context,int,Intent,int)的单个Intent一样。发送生成的PendingIntent后,所有Intent的启动方式与将它们传递给startActivities(Intent [])的方式相同。

这两个动作都将启动相同的意图。两个意图将在触发任一操作后启动。

解?

检索相应Intent的PendingIntent并将其附加到相应的操作。

PendingIntent sharePendingIntent = PendingIntent.getActivity(this,0,intents[1],PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent openPendingIntent = PendingIntent.getActivity(this,0,intents[0],PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.addAction(R.mipmap.ic_launcher,"Share",sharePendingIntent) 
        .addAction(R.mipmap.ic_launcher, "Open", openPendingIntent);