通知设置FullScreen活动

时间:2012-08-24 18:38:04

标签: android android-notifications

我有以下代码,假设在通知期间初始化一个新活动,它位于服务类

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。

3 个答案:

答案 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)

您需要遵循以下三个变量:

  1. 颜色
  2. 如果打开LED指示灯
  3. 如果关闭LED已开启
  4. 如果您启用2和3,您的LED将闪烁,如果禁用2和3,LED将被关闭

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context );
    mBuilder.setLights(Color.RED, 1, 1); // will blink