2011-06-11 4 views
0

BroadcastReceiver가 하나 있는데 전화 상태가 바뀌었을 때이를 알립니다. CallLog.Calls (내 비 활동 클래스에 상주합니다)에서 데이터를 가져 오지 않고 내 SQLite 데이터베이스에 저장합니다.하지만 지금은 문제는 클래스를 호출 할 때.
나는 안드로이드를 처음 사용하기 때문에 어떤 도움이나 아이디어라도 감사 할 것입니다. 사전BroadcastReceiver에서 비 활동 클래스를 호출 할 수 있습니까? 그렇다면 어떻게 할 수 있습니까?

답변

1

에서

덕분에 당신은 당신의 브로드 캐스트 리시버에서 IntentService를 시작하고 있었다 당신이 원하는 무엇이든 거기에서에서.

public class UpdateReceiver extends BroadcastReceiver { 

    private static Context mContext; 

    @Override 
    public void onReceive(Context context, Intent intent) {    
     mContext = context;  
     context.startService(new Intent(context, UpdateService.class));  
    } 

    public static class UpdateService extends IntentService { 

     public UpdateService() { 
      super("UpdateService"); 
     } 

     @Override 
     protected void onHandleIntent(Intent intent) {  
      // Do whatever you want from here 
      Logic.doSomething(mContext); 
     } 
    } 
} 

서비스를 매니페스트에 추가하십시오.

<service android:name="com.example.UpdateReceiver$UpdateService" /> 
+0

귀하의 코드는 오류 다음 부여합니다은/ActivityManager을 WARN (65) : 서비스의 의도를 시작할 수 없습니다 {CMP = com.example/.UpdateReceiver $ UpdateService} : 찾을 수 없음 – Adhi

+0

당신은 매니페스트에 서비스를 추가해야합니다. 내 대답을 업데이트했습니다. – rochdev

관련 문제