GCM Android - continuously hear sound and vibrate

2019-09-12 10:37发布

问题:

I push notification from GCM Server to all clients. Continuously hear sound and vibrate until I pull down the notification bar.

Here's my code:

private static void generateNotification(Context coNtext, Bundle data)
{
    int icon = R.drawable.launcher;
    long when = System.currentTimeMillis();
    NotificationManager nm = (NotificationManager) coNtext.getSystemService(Context.NOTIFICATION_SERVICE);
    Intent ni = new Intent(coNtext, MainActivity.class);
    ni.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent intent = PendingIntent.getActivity(coNtext, 0, ni, PendingIntent.FLAG_UPDATE_CURRENT);

    Notification noti = new NotificationCompat.Builder(coNtext)
    .setContentTitle(coNtext.getString(R.string.app_name))
    .setContentText(data.getString("message"))
    .setContentIntent(intent)
    .setDefaults(Notification.DEFAULT_ALL)
    .setSmallIcon(icon)
    .setWhen(when)
    .build();
    noti.flags = Notification.FLAG_AUTO_CANCEL;
    nm.notify(0, noti);
}

I just wanna let it normally (Sound and Vibrate only 1 time).

How to fix it?

Thanks.

回答1:

Use following code

NotificationManager mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);

Intent m_intent = new Intent(this,MainAcicity.class);
m_intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

PendingIntent contentIntent = PendingIntent.getActivity(this, 0, m_intent, PendingIntent.FLAG_CANCEL_CURRENT);

NotificationCompat.Builder mBuilder = (Builder) new NotificationCompat.Builder(this).setSmallIcon(R.drawable.ic_launcher).setContentTitle(getString(R.string.app_name)).setStyle(new NotificationCompat.BigTextStyle().bigText(msg)).setContentText(msg).setAutoCancel(true).setSound(Settings.System.DEFAULT_NOTIFICATION_URI);
mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());