Android GCM:自动唤醒不起作用

Posted

技术标签:

【中文标题】Android GCM:自动唤醒不起作用【英文标题】:Android GCM : Auto waking doesn't work 【发布时间】:2012-10-14 08:34:37 【问题描述】:

这是我的类 GCMIntentService 的代码,当通知到达手机时会调用它。我的问题如下:

当手机收到通知时,他会醒来,但之后再也不会回到待机模式。

我认为问题在于唤醒锁,但不知道是什么。

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.util.Log;

import com.google.android.gcm.GCMBaseIntentService;

public class GCMIntentService extends GCMBaseIntentService

    public String regIdtoSend = ""; 

    public GCMIntentService()
        super(Utils.GCMSenderId);
    

    @Override
    protected void onError(Context context, String regId) 
        // TODO Auto-generated method stub
        Log.e("", "error registration id : "+regId);
    

    @Override
    protected void onMessage(Context context, Intent intent) 
        // TODO Auto-generated method stub
        handleMessage(context, intent);
    

    @Override
    protected void onRegistered(Context context, String regId) 
        // TODO Auto-generated method stub
        // Log.e("", "registration id : "+regId);
        handleRegistration(context, regId);
    

    @Override
    protected void onUnregistered(Context context, String regId) 
        // TODO Auto-generated method stub

    

    @SuppressWarnings( "deprecation", "static-access" )
    private void handleMessage(Context context, Intent intent) 
        // TODO Auto-generated method stub
        Utils.notiMsg = intent.getStringExtra("message");
        Utils.notiTitle = intent.getStringExtra("title");
        Utils.notiType = intent.getStringExtra("type");
        Utils.notiUrl = intent.getStringExtra("url");

        String ns = Context.NOTIFICATION_SERVICE;
        NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns);

        int icon = R.drawable.ic_action_lab_white;
        CharSequence tickerText = Utils.notiMsg;
        long when = System.currentTimeMillis();

        Notification notification = new Notification(icon, tickerText, when);
        CharSequence contentTitle = "Nouveau deal";
        CharSequence contentText = Utils.notiMsg;
        Intent notificationIntent = new Intent();
        PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
        notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
        mNotificationManager.notify(1, notification);

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

    

【问题讨论】:

【参考方案1】:

改成

wl.acquire(15000);
wl.acquire();

【讨论】:

我会试试的。但我看到我没有插入 wl.release();我必须在哪里这样做?

以上是关于Android GCM:自动唤醒不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Android GCM推送通知不起作用

Android APP 从 GCM 迁移到 FCM。旧 GCM 令牌不起作用

GCM 通知 setAutoCancel(true) 在 Android 5.1.1 中不起作用

Android 解析推送通知和新 GCM 生成错误的设备令牌并解析推送通知不起作用

GCM 的响应是啥意思,为啥通知不起作用?

GCM 推送通知在 iOS 上不起作用