1

GCMプッシュからメッセージを受信したときに通知を生成するためにブロードキャストレシーバーが必要なアプリケーションを開発しています。

私が使用しているコードはコンパイルを拒否し、次のように述べています

   "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();
}

どこに行方不明ですか?

4

1 に答える 1

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" />     
于 2013-03-03T08:39:46.563 に答える