2013-03-03 53 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