我正在使用通知,但我无法使用适用于 Froyo(或低于 3.0 的其他 android 版本)的自定义布局创建通知,就像它适用于 ICS 一样。
问题是我想将待处理的意图与任何单个视图相关联。
在我看来,有一个解决方法,因为应用程序通知切换可以做到这一点,但我不知道怎么做。
请帮我。
问候
我正在使用通知,但我无法使用适用于 Froyo(或低于 3.0 的其他 android 版本)的自定义布局创建通知,就像它适用于 ICS 一样。
问题是我想将待处理的意图与任何单个视图相关联。
在我看来,有一个解决方法,因为应用程序通知切换可以做到这一点,但我不知道怎么做。
请帮我。
问候
我正在使用通知,但我无法使用适用于 Froyo(或低于 3.0 的其他 android 版本)的自定义布局创建通知,就像它适用于 ICS 一样。
您可以在以前的版本上创建自定义布局,但您无法可靠地响应它们的点击事件。
问题是我想将待处理的意图与任何单个视图相关联。
在 Android 4.1 中添加丰富的通知之前,不支持此功能。由于制造商的修改,它可能适用于某些设备,但不适用于所有设备。
在我看来,有一个解决方法,因为应用程序通知切换可以做到这一点,但我不知道如何
“通知切换”是设备固件(操作系统或制造商修改)的一部分,而不是 SDK 应用程序的一部分。
对于 3.0 以下的 Android,Notification Toggles 使用了一种完全不同的触发方式。我也必须自己解决问题。
他们的方式(我也使用过)是创建一个不可见的 1x1 像素系统窗口,该窗口拦截所有点击,包括窗口外的点击,获取它们的 X 坐标,然后不变地传递点击事件:
public boolean onTouch(View v, MotionEvent event) {
x = event.getRawX();
return false;
}
然后,当某些点击触发您的 ContentIntent(并且您知道该点击的 X 坐标)时,您会计算要做什么。
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();