2013-03-03 19 views
1

我开发了一个应用程序,我需要一个广播接收器来生成有关从GCM推送接收消息的通知 。广播接收器中的WakeLock采集问题

我使用的代码拒绝编译,指出

"Cannot make a static reference to the non-static method acquire() from 
    the type PowerManager.Wakelock" 

的IDE(日食)现在建议我应该

remove argument to match "acquire()" 

然而,当我这样做,显示下一个错误是:

The method acquire(long) in the type PowerManager.WakeLock is not applicable   
    for the arguements(Context).... 

用于广播接收器中的代码是:

private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() { 
@Override 
public void onReceive(Context context, Intent intent) { 
    String newMessage = intent.getExtras().getString(EXTRA_MESSAGE); 

    WakeLock.acquire(getApplicationContext()); 



    // Showing received message 
    lblMessage.append(newMessage + "\n"); 
    Toast.makeText(getApplicationContext(), "New Message: " + newMessage, Toast.LENGTH_LONG).show(); 

    // Releasing wake lock 
    WakeLock.release(); 
} 

我在哪里错过了?

+0

您正在试图调用对象(非静态)方法类(静态)方法添加的权限。 – piotrpo 2013-03-03 08:49:17

回答

3

如何获取broadcastReceiver中的唤醒锁。

private PowerManager.WakeLock wakeLock; //Declaration of Instance variable. 

@Override 
public void onReceive(Context context, Intent intent) { 
    //......Code..... 
    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK |PowerManager.ACQUIRE_CAUSES_WAKEUP 
         | PowerManager.ON_AFTER_RELEASE,"Wake Lock"); 
    wakeLock.acquire(15*1000); 
    //......Code.... 
} 

在AndroidManifest.xml

<uses-permission android:name="android.permission.WAKE_LOCK" />  
+0

嗨TGMCians ....我添加了你的代码,仍然有相同的结果.... – ewom2468 2013-03-03 08:56:25

+0

删除你的密码代码,并仔细实施我的。它会解决你的问题。 – 2013-03-03 08:59:49

+0

这就是我所做的:@Override public void onReceive(Context context,Intent intent){......}代码..... PowerManager pm =(PowerManager)getSystemService(Context.POWER_SERVICE) ; wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE,“Wake Lock”); wakeLock.acquire(15 * 1000); // ......代码.... lblMessage.append(newMessage +“\ n”); wakelock.release();}仍然没有显示 – ewom2468 2013-03-03 09:05:25