2013-12-09 1 views
3

я использую следующий код в GCMIntentService.javaPush уведомления не показывает в спящем режиме

PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
    WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG"); 
    wl.acquire(15000); 
    wl.acquire(); 

но толчок уведомления не показывать в спящем режиме.

Push уведомление работает нормально, когда я разблокирую свой телефон, а затем получаю уведомление должным образом.

но я хочу показать уведомление в спящем режиме, как звук воспроизведения звука и получать уведомление от приложения gmail. пожалуйста, помогите, как я могу это сделать.

@Override 
protected void onMessage(Context context, Intent intent) { 
    Log.i(TAG, "Received message" + intent.getStringExtra("message")); 
    String message = intent.getStringExtra("message");// getString(R.string.gcm_message); 
    generateNotification(context, message); 
} 

private static void generateNotification(Context context, String message) { 
    int icon = R.drawable.logo; 
    long when = System.currentTimeMillis(); 


    NotificationManager notificationManager = (NotificationManager) context 
      .getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification = new Notification(icon, message, when); 
    String title = context.getString(R.string.app_name); 
    Intent notificationIntent = new Intent(context, Tabs.class); 
    // set intent so it does not start a new activity 
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, 0); 

    notification.setLatestEventInfo(context, title, message, intent); 

    notification.flags |= Notification.FLAG_AUTO_CANCEL; 
    notification.flags |= Notification.FLAG_SHOW_LIGHTS; 
    notification.sound = Uri.parse("android.resource://" + context.getPackageName() + "/" + R.raw.sound); 
    notification.defaults = Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE; 


    notification.flags |= Notification.FLAG_SHOW_LIGHTS; 
    //notification.defaults = Notification.DEFAULT_ALL; 
    notificationManager.notify(0, notification); 
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
    WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG"); 
    wl.acquire(15000); 



} 

ответ

0

Попробуйте это:

private static void generateNotification(Context context, String message) { 
    int icon = R.drawable.notification_icon; 
    long when = System.currentTimeMillis(); 
    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification = new Notification(icon, message, when);   
    String title = context.getString(R.string.app_name); 
    // Log.i(TAG, "Received reg id:=>"+regId); 
    Intent notificationIntent = new Intent(context, Message.class); 
    notificationIntent.putExtra("Message", message); 

    // set intent so it does not start a new activity 
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, 0); 
    notification.setLatestEventInfo(context, title, message, intent); 
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 

    // Play default notification sound 
    notification.defaults |= Notification.DEFAULT_SOUND; 

    // Vibrate if vibrate is enabled 
    notification.defaults |= Notification.DEFAULT_VIBRATE; 
    notificationManager.notify(0, notification);  
    Constant.iMessageParsing = 0; 

} 

называют этот метод в вашем OnMessage (контекст Context, Намерение Намерение) метод класса GCMIntentService.

Попробуйте этот код ::

PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE); 
boolean isScreenOn = pm.isScreenOn(); 
Log.e("screen on.................................", ""+isScreenOn); 

if(isScreenOn==false)  
    { 
    WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK |PowerManager.ACQUIRE_CAUSES_WAKEUP |PowerManager.ON_AFTER_RELEASE,"MyLock");        
    wl.acquire(10000); 
    WakeLock wl_cpu = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"MyCpuLock"); 
    wl_cpu.acquire(10000); 
    } 
+0

уже называют @karan – Rohit

+1

я проверил в отладке, отладчик не идет работать, когда запрос отправить с сервера, отладчик входит в функцию, когда я разблокировать экран – Rohit

+0

см это анс :: http://stackoverflow.com/a/17154181/1944782 –

Смежные вопросы