2011-07-14 25 views
0

画面がオンになっているときにアプリをログに記録しようとしていますが、期待通りに機能しません。ここでAndroid放送受信機が動作しない

は、私は私のマニフェストファイル内に持っているもの

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity ...> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 


    <receiver android:name="PhoneBroadcastReceiver" android:enabled="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.SCREEN_ON"></action> 
     </intent-filter> 
    </receiver> 
</application> 

で、私の受信機は

public class PhoneBroadcastReceiver extends BroadcastReceiver { 

public PhoneBroadcastReceiver() 
{ 
} 

@Override 
public void onReceive(Context _context, Intent _intent) { 
    // TODO Auto-generated method stub 
    String a = _intent.getAction(); 


    MessageHandler.log("Received action: " + a); // just a wrapper for printing to a log 

} 

}

のように見えるが、それは、ログには何も出力しません。私はAndroidの電源ボタンを押し続け、画面の電源が入ったり消えたりしますが、メッセージはログに表示されません。私は何が欠けていますか?私はウェブ上で見つけた例と同じように見えます。

+0

は、あなたはそれが本当にあなたのbroadcastReceiverに入っていますかどうかを確認するためにDDMSのコンソールに何かをログに記録するように最初に試みたことがありますか? ( '' Log.info( "PhoneBroadcastReceiver"、 "放送受信機の入力") '。コンソールにこのログを見ることができれば、問題はあなたのMessageHandlerクラスにあります – ccheneson

答えて

7

ACTION_SCREEN_ONブロードキャストは、マニフェストに登録されているBroadcastReceiverで聞くことはできません。実行中のコンポーネントからregisterReceiver()経由で登録する必要があります。この特性(ACTION_SCREEN_OFFACTION_BATTERY_CHANGED、おそらくACTION_USER_PRESENT)を持つブロードキャストはほとんどありません。

1

マニフェストファイル経由で登録した場合、ACTION_SCREEN_ONは機能しません。動的に登録する必要があります。アッシュ・シン

関連する問題