내 폰이 기동할때 앱이 자동실행하도록 하려고 합니다.

그런데 부팅시 프로쎄스강제종료메세지가 나타나면서 앱이 죽습니다.

제가 작성한 코드는 다음과 같애요...


public class BootBroadcastReceiver extends BroadcastReceiver{

public void onReceive(Context context, Intent intent) {

        // TODO Auto-generated method stub

        if(intent.getAction().equals(BOOT_ACTION))

        {

        DataApplication data = (DataApplication) context.getApplicationContext();

            data.readData();

            auto_start = data.program_auto_start;

            Log.d("KUS_Start_point", "auto_start = " + String.valueOf(auto_start));

          

            if (auto_start == 1){

            // auto_start 체계설정의 자동기발값

                Intent intent_main = new Intent(context, BluetoothATDActivity.class);

                intent_main.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                context.startActivity(intent_main);

                  

           }

}

AndroidManifest.xml에서 receiver등록내용

    <receiver android:name=".BootBroadcastReceiver"

            android-permission="android.permission.RECEIVE_BOOT_COMPLETED"

            android:enabled="true"

            android:exported="false"

            android:label="BootBroadcastReceiver">

            <intent-filter >

                <action android:name="android.intent.action.BOOT_COMPLETED"/>

                <category android:name="android.intent.category.DEFAULT" />

            </intent-filter>

        

        </receiver>



내가 혼자서 며칠 삽질을 하였는데 종시 못찾았습니다.

여기서 무엇이 잘못되였는지 고수님들 조언 부탁합니다.



자답입니다.


저의 앱을 모의기상에서 실험할수 없어 장치에서 직접 시험하는 상황이라 부팅시에 나타나는 오유 log 를 얻을수 없어 코드와 함께 올리지 못했습니다.


기기 부팅시 앱자동기동문제를 해결했습니다.

저의 main 액티비티 onCreate()함수에서 제가 앱에 구현한 widget으로부터 보내는 정보를 인텐트에서 꺼내는 부분이 있었는데 그것때문에 부팅시 앱이 죽었습니다. 그러나 왜서 부팅하지 않은 상태에서는 앱이 정상 실행하다가 부팅할때 이런 현상이 발생하는지는 아직 잘모르겠습니다.

아마 빈 인텐트에서 무엇인가 꺼내려고 해서인지... 아직 뭐가 뭔지 잘 모르겠어요.

하여튼 앱이 왜 죽는지는 찾았으나 한쪽으로는 정확한 원인을 모르니 답답합니다.

아래에 오유를 발생시키던 코드부분을 올립니다.


public class BluetoothATDActivity extends Activity {

          @Override
          public void onCreate(Bundle savedInstanceState) {

           ... ... ... ...

            startAction();          

           ... ... ... ...

          }

          private startAction{

             Bundle bundle = getIntent().getExtras();
             mStartAction = bundle.getInt(ATDEnvironment.ATD_START_MODE);

          }

}


우의 코드에서 widget에서 정보를 보냈는가를 판정하는 방법으로 우의 기능도 보존하고 오유도 해결했습니다.


관심해주어 감사합니다.....