2012-03-07 3 views
0

아이 브 (Ive)는 간단한 브로드 캐스트 리시버를 만들었습니다.이 애플리케이션은 전화기가 부팅되어 alarmmanager 메소드를 시작한 것으로, 이처럼 광범위한 애플리케이션을 처리하는 확장 된 애플리케이션 파일에 넣어 두었습니다. 이것은 액티비티에서 호출 할 때 잘 동작하지만, 브로드 캐스트 리시버에서 호출하려고 할 때 충돌이 발생하고 작동하지 않습니다. 어쩌면 내가 어떤 방식으로 컨텍스트를 추가해야합니까?Android 브로드 캐스트 리시버는 확장 애플리케이션으로 null 포인터 예외를 반환합니다.

package com.testapp21.second.activities; 

import com.testapp21.second.OTweetApplication; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 

public class PhoneOnReceiver extends BroadcastReceiver { 
private OTweetApplication app; 

@Override 
public void onReceive(Context context, Intent intent) { 

     app.startChecks(); 

} 

}

편집 : startCheckshelper (라는 헬퍼 파일) 여기에 방법에 껐다 startChecks 대표는 코드 블록이 모습입니다 : 여기

내 코드입니다

public void startCheckshelper(){ 
    mAlarmSender = PendingIntent.getService(context, 
       0, new Intent(context, CheckerService.class), 0); 

    // We want the alarm to go off 30 seconds from now. 
     long firstTime = SystemClock.elapsedRealtime(); 

     // Schedule the alarm! 
     AlarmManager am = (AlarmManager)context.getSystemService(Service.ALARM_SERVICE); 
     am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
         firstTime, 60*1000, mAlarmSender);  
} 
+0

startChecks()에서 충돌이 발생합니까? 내가 생각하기에 더 많은 정보를 알아야 할 것입니다. – davehale23

+0

Ive가 확장 된 응용 프로그램에서 실행하는 메소드에 추가되었습니다. –

답변

1

Android에서 충돌에 대해 질문 할 때 항상 스택 추적을 게시해야하지만 app은 처음이 아닙니다. 아직까지는 onReceive에서 사용하고 있습니다.

+0

뭐가 내가 앱을 초기화해야하는지에 대한 예제가 뭐죠? –

+0

확장 응용 프로그램이라고 가정합니다. 'app = (OTweetApplication) getApplicationContext();' – kabuko

1

당신은 app에/할당 뭔가를 초기화하지, 그래서 널 (null)입니다 :

private OTweetApplication app; 

그리고 당신이 그것을 (app.startChecks();)를 호출 할 때 예외를 얻을.

+0

내가 앱을 초기화해야하는 것의 예는 무엇입니까? –

+0

솔직히 말해서 - 나도 몰라 - 이전에는 OTweetApplication으로 일한 적이 없었습니다. – MByD

관련 문제