使用setOnClickPendingIntent的Android自定义通知在低于3.0的版本上不起作用。是否有工作使它工作?

时间:2013-02-19 18:36:17

标签: android notifications android-pendingintent android-2.2-froyo

我正在播放通知,但我无法创建一个自定义布局的通知,该布局适用于Froyo(或低于3.0的其他Android版本),就像在ICS上一样。

问题在于我想将待处理的意图与任何单个视图相关联。

在我看来有一个解决方法,因为应用程序Notification Toggles会这样做,但我不知道如何。

请帮帮我。

此致

3 个答案:

答案 0 :(得分:1)

  

我正在播放通知,但我无法创建一个自定义布局的通知,该布局适用于Froyo(或低于3.0的其他Android版本),就像在ICS上一样。

您可以在以前的版本上创建自定义布局,但无法可靠地响应其点击事件。

  

问题在于我想将待处理的意图与任何单个视图相关联。

在Android 4.1中添加的富通知之前,不支持此功能。由于制造商的修改,它可能适用于某些设备,但它不适用于所有设备。

  

在我看来有一个解决方法,因为应用程序Notification Toggles执行此操作但我不知道如何

“Notification Toggles”是设备固件(操作系统或制造商的修改)的一部分,而不是SDK应用程序的一部分。

答案 1 :(得分:1)

通知Toggles使用完全不同的方式触发Android 3.0以下的内容。我也必须自己解决这个问题。

他们的方式(我也使用过)是创建一个不可见的1x1像素系统窗口,它拦截所有点击,包括窗口外的点击,抓住他们的X坐标,然后传递click事件不变:

public boolean onTouch(View v, MotionEvent event) {
    x = event.getRawX();
    return false;
}

然后,当某些点击触发您的ContentIntent(并且您知道该点击的X坐标)时,您将计算该做什么。

答案 2 :(得分:0)

GingerBread期待ContentIntent。所以我添加了一个假的待定意图,如:

        pi = PendingIntent.getBroadcast(this, 0, new Intent(), PendingIntent.FLAG_UPDATE_CURRENT);
        Notification notification =  new NotificationCompat.Builder(this).setAutoCancel(true)
                                        .setContentTitle(userString)
                                        .setContentText("Queued")
                                        .setContentIntent(pi)
                                        .setSmallIcon(R.drawable.stat_sys_download_done)
                                        .setWhen(System.currentTimeMillis())
                                        .setTicker(tickerText)
                                        .build();