如何检索已单击的操作按钮的标题?

时间:2018-01-29 11:34:47

标签: android notifications android-notifications

我目前正在构建一个Android应用程序,需要通过通知栏的操作按钮。

我添加了通知栏和操作按钮。我还添加了一个BroadcastReceiver来执行按钮点击操作。我的问题是,操作是根据单击的操作按钮的标题执行的。请指导我如何获得点击按钮的标题。

这是我的通知创建代码:

 Intent intent = new Intent();
    intent.setAction(AppConstants.YES_ACTION);

    // Open receiver
    PendingIntent pIntent = PendingIntent.getBroadcast(this, 0, intent,
            PendingIntent.FLAG_UPDATE_CURRENT);

    //Create Notification using NotificationCompat.Builder
    NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
            // Set Icon
            .setSmallIcon(R.mipmap.ic_launcher)
            // Set Ticker Message
            // .setTicker(getString(R.string.notificationticker))
            // Set Title
            .setContentTitle(getString(R.string.app_name))
            // Set Text
            .setContentText(getString(R.string.notificationtext))
            // Add an Action Button below Notification
            .addAction(R.mipmap.ic_launcher, "Action Button", pIntent)
            // Set PendingIntent into Notification
            .setContentIntent(pIntent)
            // Dismiss Notification
            .setAutoCancel(true);

    for(int l = 0; l<btnNames.length; l++){
        if(!btnNames[l].isEmpty()){
            builder.addAction(R.mipmap.ic_launcher, btnNames[l],pIntent);
       //     intent.putExtra("Btn"+(l+1), btnNames[1]);
        }
    }

    // Create Notification Manager
    NotificationManager notificationmanager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    // Build Notification with Notification Manager
    notificationmanager.notify(0, builder.build());

以下是广播接收者代码:

public class notificationReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        String notificationAction = intent.getAction();

        //the title retrieval code goes here

        if(notificationAction.equals(AppConstants.YES_ACTION)){
            //some work is done here
        }

    }
}

1 个答案:

答案 0 :(得分:2)

第1步:将所有$http.get('rest/client/authentifier/'+$scope.nouveauClient.numerocompte+$scope.nouveauClient.mdp).then(function(data){ alert(data.data); }) / Intent / PendingIntent创建逻辑移到循环中

步骤2:将操作按钮的标识符作为额外添加到用于Notification的{​​{1}}

步骤3:为Intent方法的第二个参数的每个PendingIntent使用一个不同的数字,这样每个

PendingIntent个实例就会有所不同

步骤#4:让getBroadcast()读取额外内容以确定点击的操作

或者...

第1步:将所有PendingIntent / BroadcastReceiver / Intent创建逻辑移到循环中

步骤2:在每个PendingIntent对象

中使用唯一的操作字符串

步骤3:让Notification读取操作字符串以确定点击的操作

或者...

步骤1:为每个操作按钮使用不同的Intent