2012-12-24 5 views
0

질문하고 싶습니다.
백그라운드 서비스를 시작하고 중지하는 버튼을 만들었습니다.
들어오는 SMS를 읽는 클래스 SmsReceiver을 만듭니다.
그래서 서비스가 Sms BroadcastReceiver으로 전화를 걸기를 원합니다.
배경 서비스가있는 SMS를 읽는 방법에 대한 아이디어 나 아이디어가 있습니까? 이미 SmsReceiver가 제대로 작동하는 경우백그라운드 서비스에서 SmsReceiver를 호출하십시오.

답변

0

, 당신이 할 필요는 오버라이드 (override) 할 필요가 수행 Service .TO에서 등록되는 ServiceonCreate().

서비스가 다음과 비슷한 모습이 될 것입니다

public class SmsService extends Service 
{ 
    private SmsReceiver receiver; //global so we can unregister it when the time comes. 
    public void onCreate() 
    { 
    super.onCreate();//call to super 
    //make a new intent filter so that all incoming SMS get to you as well 
    IntentFilter smsFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); 
    receiver = new SmsReceiver(); //make a new SmsReceiver 
    registerReceiver(receiver, smsFilter); //register the Receiver 
    } 

    public void onDestroy() 
    { 
    unregisterReceiver (receiver); //unregisters the Receiver if Service is killed 
    super.onDestroy(); 
    } 
} 

를 매니페스트에 필요한 SMS 권한을 포함하며 매니페스트에 Service를 선언하는 것을 기억해야합니다.

<service android:name=".SmsService" > 
</service> 
+0

서비스가 오류를 가지고 있으며이 코드를 원하는 'code' @Override \t 공공 IBinder onBind (의도는 arg0) { \t \t // TODO 방법 스텁을 \t \t는 null를 자동 생성; \t} – nestorasg

+0

또 다른 문제는 서비스를 시작하지 않고 응용 프로그램을 시작하면 브로드 캐스트 수신기가 작동하기 시작한다는 것입니다. 어떤 생각? – nestorasg

+0

첫 번째 코멘트는 예, onBind를 재정의해야합니다. 바인딩하지 않을 경우 Eclipse를 구현 한 상태로 유지하는 것이 좋습니다. 너의 2 일. 매니 페스트에 수신기를 선언하지 마십시오. 일단 매니페스트에서 선언되면 앱의 일부가 실행되는 동안 리시버가 계속 실행됩니다. –

관련 문제