public
void onReceive(Context context, Intent intent) { if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) { Intent receiver = new Intent(context,
클래스명.class);
receiver.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(receiver); }}
<receiver
android:name="리시버클래스이름">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED">
</action>
</intent-filter>
</receiver>
<uses-permission
android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
우선 위조건문은 필요없구요보니까 아마 실행하시는 액티비티를 매니패스트에 선언하셨는지 부터 확인하셔야 할듯...Intent receiver = new Intent(context, 클래스명.class);
<receiver android:name="리시버클래스이름">
요 두 라인과 관련되서 잘못되었을 가능성이 높습니다.
회사에서 안드로이드 학습하라고 미션? 준 것 같네요 ㅋ
AndroidManifest.xml 에 등록된 receiver name 이 실제 src 파일로 없어서 오류가 나는겁니다. 단말에 리시버를 등록했는데 부팅 후에 접근할 클래스를 못찾아서 오류화면이 뜨는거구요.
파일명이 좀 독특한데 src 디렉토리 안에 broadcastreceiver 상속받은 class 가 onReceive.java 군요 ''; 이 파일 이름을 LocationLoggerServiceManager.java 로 바꾸세요
그리고 그 클래스안에...
ComponentName service = context.startService(new Intent().setComponent(comp));
==> context.startService(new Intent().setComponent(comp))로 바꾸세요. 앞에 대입연산자랑 레퍼런스는 의미가 음써요.
이거 그...... 버그인지 의도된건진 모르겠는데
진저브레드 까지는
외장메모리에 있는 어플리케이션은 부팅 완료 이벤트를 못 받도록 되어 있더군요.
아마 SD카드 마운트 관련해서 일부러 막아놓은것 같은데
내장메모리에 설치하도록 해 보세요.
AndroidManifest.xml 안에
public class LocationLoggerServiceManager extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
context.startActivity(new Intent(context, 클래스명.class));
}
}




안드로이드 초짜여서 게임빼고는 컨트롤도 잘 모르지만
intent.getAction().equals(
"android.intent.action.BOOT_COMPLETED")여기서"android.intent.action.BOOT_COMPLETED"이렇게 문자열로 비교해요?왠지 getAction()을 통해 넘어오는 인스턴스가 object일것 같다는 생각이 드네요...그냥 혹시나 해서 ㅎㅎ--- 추가 ---
지금 저도 찾아보니 문자열 맞네요;;;
public static final java.lang.String ACTION_BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED";