我有以下代码,假设在通知期间初始化一个新活动,它位于服务类
Intent push = new Intent();
push.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
push.setClass( context, MyActivity.class );
PendingIntent pi = PendingIntent.getActivity( context, 0, push, PendingIntent.FLAG_ONE_SHOT );
long[] vibraPattern = {0, 500, 250, 500 };
Notification noti = new Notification.Builder( getApplicationContext() )
.setVibrate( vibraPattern )
.setDefaults( Notification.DEFAULT_SOUND )
.setFullScreenIntent( pi , true )
.setContentIntent( pi )
.getNotification();
notifMng.notify( 0 , noti );
声音和振动很顺利,因此noti已成功通知,但MyActivity从未创建,即使它是此通知的FullScreenIntent。
答案 0 :(得分:0)
在不同版本之间API变化太大,通知很棘手。您的解决方案针对API级别11+(3.0.x),并且不适用于任何2.x设备。 getNotification()方法也在4.1 ...
中弃用您的通知缺少要显示的内容。它会在收到通知时实际启动活动但不显示通知,因为它没有任何要显示的内容。
如果要在收到推送后立即启动活动,请添加.setFullScreenIntent(pi,true)。
我修改了你的代码以便它可以运行:
Intent push = new Intent();
push.setClass(context, MyActivity.class);
PendingIntent pi = PendingIntent.getActivity(context, 0, push,
PendingIntent.FLAG_ONE_SHOT);
long[] vibraPattern = { 0, 500, 250, 500 };
Notification noti = new Notification.Builder(getApplicationContext())
.setVibrate(vibraPattern)
.setDefaults(Notification.DEFAULT_SOUND)
.setContentIntent(pi)
.setContentTitle("Title")
.setContentText("content text")
.setSmallIcon(R.drawable.ic_launcher)
.getNotification();
NotificationManager notificationManager =
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(0, noti);
答案 1 :(得分:0)
Notification.Builder
需要API 11+。使用NotificationCompat.Builder
代替,仅支持API 4+,并允许在支持的设备上实现新功能(即Jelly Bean中可用的新通知样式),而旧设备则忽略新功能。它使一切变得更加顺畅。
有关详细信息,请参阅此链接:http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html
答案 2 :(得分:-1)
您需要遵循以下三个变量:
如果您启用2和3,您的LED将闪烁,如果禁用2和3,LED将被关闭
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context );
mBuilder.setLights(Color.RED, 1, 1); // will blink