2012-05-29 2 views
1

잠시 후 ICS에서 BroadcastReceiver을 사용하려고했습니다. 나는 모든 종류의 솔루션을 시도했지만 아무 것도 나를 위해 일하지 않았습니다.BroadcastReceivers on android 4.0.3 (ICS)

package com.sp.android; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

public class ScreenOffReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context arg0, Intent arg1) { 
     Log.e("AppSearch", "Message"); 
    } 
} 

활동 클래스는 일부 코드가 ... 여기

은 ... 내 매니페스트 파일과 같은 모양을

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.sp.android" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="15" /> 

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

     <receiver android:name=".ScreenOffReceiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.SCREEN_OFF" /> 
      </intent-filter> 
     </receiver> 
    </application> 

</manifest> 

입니다 그리고 여기 내 수신기 코드입니다. 하지만 이제이 방송 수신기는 결코 등록되지 않을 것 같습니다. onReceive() 메서드가 호출되지 않습니다. 나는 해결책을 찾을 수 없었다. 모든 스레드는 적어도 하나의 활동이 있어야한다고 언급했지만 이미 가지고 있습니다.

미리 감사드립니다.

답변

1

적어도 한 번 이상 (런처를 통해) 활동을 시작해야합니다. 그렇지 않으면 앱이 '중지됨'으로 표시되고 브로드 캐스트를 수신하지 않습니다.

+0

런처에서 활동을 시작하는 것이 앱 서랍에서 시작하는 것을 의미한다면, 나는 그것을 시도했다. 그러나 다시는 나에게 기쁨이 없었다. – SPatil

+0

또한 registerReceiver (receiver, filter)를 사용하여 수신기에 코드를 등록 (등록 취소)해야합니다. 일부 의도는 매니페스트에 등록 된 경우 수신 할 수 없습니다. –

+0

그러나 앱이 실행되고 있지 않을 때 브로드 캐스트를 수신 할 수 있습니까? 나는 코드에서 등록하는 것이 앱이 돌아갈 때만 작동한다고 생각했다 ... – SPatil

관련 문제