10

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

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 ); 

声音和振动很好,所以通知成功通知,但是 MyActivity 从未创建,即使它是此通知的 FullScreenIntent。

4

3 回答 3

0

Notification.Builder需要 API 11+。改为使用NotificationCompat.Builder,仅支持 API 4+,并允许在受支持的设备上实现新功能(即 Jelly Bean 中可用的新通知样式),而旧设备则忽略新功能。它使一切变得更加顺畅。

有关详细信息,请参阅此链接:http: //developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html

于 2013-02-25T09:03:05.720 回答
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); 
于 2012-08-24T21:47:39.250 回答
-2

您需要以下三个变量才能通过:

  1. 颜色
  2. 如果打开 LED 是打开的
  3. 如果关闭 LED 灯亮

如果您启用 2 和 3,您的 LED 将闪烁,如果您禁用 2 和 3,您的 LED 将关闭

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context );
mBuilder.setLights(Color.RED, 1, 1); // will blink
于 2014-09-04T22:30:42.423 回答