서평 이벤트 : https://cafe.naver.com/aphone/93447



오랜만에 손 놓고 있던 안드로이드 개발을 하게 되었는데..


코틀린이란 것이 있다는 것을 알게 되었네요.


안드로이드는 언제나 자바로만 짜는 줄 알고 있었는데...


새로운 것을 배우는 것은 언제나 신기하기만 합니다.

1. 개요


안드로이드 6.0 이상 버전에서 사용자에 의해 권한을 부여 받아야 사용 가능한 기능 (카메라, 파일 접근 등)을 이용하려면 런타임 퍼미션( runtime permissions)이 필요합니다.


본 포스팅에서는 퍼미션을 체크하고 요청하는 방법에 대해 기술합니다.


핵심 함수는 다음과 같습니다.


퍼미션 체크 ActivityCompat.checkSelfPermission(Context, String)

퍼미션 요청 ActivityCompat.requestPermissions(Activity, String[], int)

퍼미션 요청 콜백함수 ActivityCompat.OnRequestPermissionsResultCallback


콜백함수(OnRequestPermissionsResultCallback) 의 경우 AppCompatActivity 에 오버라이드 (Override) 되어 있는 함수이기 때문에 실제 권한 요청을 수행하는 Activity 에 코드가 포함되지만 그 외 나머지 함수들은 별도의 CustomClass 를 작성하여 호출하도록 구성하였습니다.


2. 소스 코드


1) AndroidManifest.xml


실제 사용하고자 하는 요청 권한을 명기 합니다.


<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />


2) PermissionUtil.java


퍼미션 체크(checkSelfPermission) 와 퍼미션 요청(requestPermissions) 을 실제로 호출하는 CustomClass 입니다.


해당 부분은 내용이 길어 첨부한 소스코드 파일의 주석으로 대체 합니다.


PermissionUtil.java


3) MainActivity.java


앱 최초 실행 시 권한을 받아 결과에 따라 앱을 실행할지 말지 여부를 결정하기 위해 최초 실행 되는 Activity의 onCreate 에서 호출하도록 합니다.


만약 해당 기능 사용과 별개로 앱을 사용하다가 실제 기능 동작이 필요한 경우에 권한을 요청하려면 (예를 들어 사진 앨범에 접근하기 위해 가져오기 버튼을 클릭하는 순간 권한을 묻기를 원한다면) 해당 기능 동작 중 (OnClickListener 내부)에 호출하도록 합니다.



private PermissionUtil m_PermissionTool;
private String strPermissions[] = {
	Manifest.permission.READ_EXTERNAL_STORAGE
};

@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);

	// 권한 검사
	m_PermissionTool = new PermissionUtil(this, strPermissions);
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
	super.onRequestPermissionsResult(requestCode, permissions, grantResults);

	switch (requestCode) {
		case PermissionUtil.MY_PERMISSIONS_REQUEST_READ_CONTACTS:
			if (m_PermissionTool.verifyPermission(permissions, grantResults) == false) {
				// 권한 얻기 실패
				m_PermissionTool.showRequestAgainDialog();
			}
			break;
	}
}


3. 참조


https://developer.android.com/training/permissions/requesting?hl=ko#java



1. 개요

안드로이드의 마이크로 5핀 단자에 시리얼 통신 장비를 연결 한 후, 안드로이드에서 패킷을 전송하고 수신 받아 화면에 표시하는 예제이다.

 

 

SerialTester.zip

 

 

 

 

 

 

 

 

 

<ListView

android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="#00000000" />

+ Recent posts