ALL ABOUT ME

Android :: 무조건 날짜 및 시간 설정을 자동으로... 본문

Lab

Android :: 무조건 날짜 및 시간 설정을 자동으로...

threeword 2011. 4. 4. 08:53
얼마전 앱 제한(?)을 두기 위해 시간을 체크를 하여 날짜 및 시간이 되면 앱이 동작되지 않게 할 일이 있었다.

머...트라이얼 버젼이라고 해야 할까... 아무튼...

문제는 디바이스 장치의 현재 시간을 체크하는 부분인데...

사용자가 설정에서 사용자 시간으로 강제로 변경해 버리면  무용지물이다...
그래서 타임서버를 이용해서 시간을 체크... 그것도 결국 사용자가 통신을 차단하면 무용지물이다...

하지만 방법은 다 있기 마련....

사용자가 강제로 시간을 변경했다면.... 앱에서 다시 강제로 자동시간으로 변경하면 되는것..ㅋㅋㅋ

날짜 & 시간을 자동(네트워크 제공 값 사용)으로 변경하는 코드
Settings.System.putInt(getContentResolver(), Settings.System.AUTO_TIME, 1) 
하지만 위 코드 하나만으로 변경되지 않는다... OTL

시간 변경 Broadcast를 등록해야 한다..

Intent.ACTION_TIME_CHANGED

Broadcast를 등록하고 따로 처리하는것은 없지만 등록하지 않으면 자동으로 변경하고 나서 시간을 가져와도 그대로이다.
이유는 잘 모르겠다...

FULL CODE

AndroidManifest.xml 퍼미션 추가!!
- 설정을 읽고 쓰기 위해...

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS"></uses-permission>

MainActivity.xml
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
	@Override
	public void onReceive(Context context, Intent intent) {
		// 처리 안함
	}
};

@Override
public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);

	// 날짜 & 시간 설정을 자동으로...
	Settings.System.putInt(getContentResolver(), Settings.System.AUTO_TIME, 1);
}

@Override
protected void onPause() {
	super.onPause();

	unregisterReceiver(mIntentReceiver);
}

@Override
protected void onResume() {
	super.onResume();

	IntentFilter filter = new IntentFilter();
	filter.addAction(Intent.ACTION_TIME_CHANGED);
	registerReceiver(mIntentReceiver, filter, null, null);
}
Comments