2011-03-16 3 views
1

부팅시 Android 2.1 Galaxy S Phone을 시작하려고하는데 충돌합니다.BroadcastReceiver에서 부팅시 Android 시작 앱이 깨졌습니다.

context.startActivity (i)를 주석 처리하면 여기에 수신기가 있습니다. 그렇지 않으면 파워 업시 충돌이 발생하지 않습니다. 동일한 ACTION을 사용하는 다른 활동의 startActivity가 충돌을 일으키지 않습니다. 이건 그냥 부팅 것 같습니다.

public class MyBroadcastReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Intent i = new Intent(); 
     i.setAction("DISPLAY_FIRSTPAGE"); 
     context.startActivity(i); 
    } 
} 

I 설정과 같은 매니페스트의 수신기 :

<receiver android:name=".MyBroadcastReceiver"> 
      android:enabled="true" android:exported="false" 
      android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
</receiver> 
+0

어디서 startActivity (i)가 실패합니까? 더 많은 정보를 제공하기 위해 삼성 Galaxy Captivate에서 충돌 로그를 볼 수 없습니다. – Androider

답변

2

먼저 다른 로그보다 먼저 확인하십시오. 이 경우 문제는 (원본 코드와 고정 코드 모두) 로그의 충돌에서 매우 명확하게 설명됩니다.

+0

그게 사실이야. 나는 삼성의 마음을 사로 잡는다. 코어 덤프가 발생하면 파일은/data/logs에 저장되지만 Eclipse android file viewer에서는 볼 수 없습니다. 나는 비어있는/데이터 만 볼 수 있습니다. sd와 tmp는 파일을 가지고있는 것 같습니다. – Androider

+0

덤프 파일이 있습니다. 코어 덤프를 보지 못했습니다. – Androider

+0

@Androider :이 경우 LogCat입니다. Eclipse에서'adb logcat', DDMS 또는 DDMS 퍼스펙티브를 사용하여 LogCat을 검사하고 스택 추적을보고 오류를 찾으십시오. – CommonsWare

2

당신은 명확하게 당신이 당신의 활동이 매니페스트 DISPLAY_FIRSTPAGE 의도를 처리하는 지정하지 않는 한 같으면, (시작 무엇을 이야기하지 않을 '좋은 생각이 아니다').

Intent i = new Intent(context, MyActivity.class); 
context.startActivity(i); 
+0

시도해 보니 나는 여전히 충돌을보고 있습니다. – Androider

+0

BTW 에뮬레이터에서 너무 시도하고 종료하는 데 시간이 오래 걸립니다. 앱을 시작하지 않고 에뮬레이터를 실행할 수있는 방법이 있습니까? 대기 종료/시작에 영원히 걸립니다 – Androider

+0

제 경험 에뮬레이터에 대한 종료가 작동하지 않습니다. 창문을 닫으십시오. 실행에 관해서는'에뮬레이터 '만 실행하면됩니다. 또는 GUI를 선호하는 경우 Android SDK 및 AVD Manager를 사용하고 AVD를 선택하고 실행 (또는 비슷한)을 클릭하십시오. – Felix

관련 문제