public class BootReceiver extends BroadcastReceiver {
ComponentName comp;
@Override
public void onReceive(Context context, Intent intent) {
Log.d("BootReceiver","BootReceiver Running");
if( "android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
ComponentName cName = new ComponentName(context.getPackageName(), Lock.class.getName());
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
Editor edit = pref.edit();
boolean check_value = pref.getBoolean("s_serv", false);
boolean boot_value = pref.getBoolean("devBoot", false);
Log.d("BootReceiver","check : " + String.valueOf(check_value));
if(check_value) {
Log.d("BootReceiver","Service on");
edit.putBoolean("devBoot", true);
edit.commit();
ComponentName service = context.startService(new Intent().setComponent(cName));
}
else {
edit.putBoolean("devBoot", false);
edit.commit();
}
Log.v("boot_complete","The service loaded at boot!");
}
}
}
소스는 위와 같고요
부팅하자마자 동작하게 설정해놓고 실행해봤는데 서비스가 실행이 안되서 로그를 확인해보니 다음과 같았습니다
06-06 03:26:05.207: I/PackageManager(92): Removing non-system package:uos.capstone.locker
06-06 03:26:05.207: I/ActivityManager(92): Force stopping package uos.capstone.locker uid=10040
06-06 03:26:05.207: I/ActivityManager(92): Killing proc 292:uos.capstone.locker/10040: force stop
06-06 03:26:05.217: I/ActivityManager(92): Killing proc 308:uos.capstone.locker:remote/10040: force stop
06-06 03:26:05.667: D/dalvikvm(92): GC_CONCURRENT freed 661K, 7% free 16092K/17159K, paused 8ms+11ms
06-06 03:26:05.830: I/PackageManager(92): Package uos.capstone.locker codePath changed from /data/app/uos.capstone.locker-1.apk to /data/app/uos.capstone.locker-2.apk; Retaining data and using new
06-06 03:26:05.837: I/PackageManager(92): Running dexopt on: uos.capstone.locker
06-06 03:26:07.277: D/dalvikvm(522): DexOpt: load 198ms, verify+opt 783ms
06-06 03:26:07.458: W/PackageManager(92): Code path for pkg : uos.capstone.locker changing from /data/app/uos.capstone.locker-1.apk to /data/app/uos.capstone.locker-2.apk
06-06 03:26:07.458: W/PackageManager(92): Resource path for pkg : uos.capstone.locker changing from /data/app/uos.capstone.locker-1.apk to /data/app/uos.capstone.locker-2.apk
06-06 03:26:07.477: I/ActivityManager(92): Force stopping package uos.capstone.locker uid=10040
06-06 03:26:07.690: D/PackageManager(92): New package installed in /data/app/uos.capstone.locker-2.apk
06-06 03:26:07.697: W/PackageManager(92): Unknown permission android.permission.BOOT_COMPLETED in package uos.capstone.locker
06-06 03:26:07.697: W/PackageManager(92): Unknown permission android.permission.ACCESS_BACKGROUND_SERVICE in package uos.capstone.locker
06-06 03:26:07.859: I/ActivityManager(92): Force stopping package uos.capstone.locker uid=10040
아무래도 여기서 걸리는게 "Removing non-system package:uos.capstone.locker" 이 부분 같은데 이것때문에 강제로 종료되는 것 같습니다. 왜 이런현상이 나타나는걸까요...