[안드로이드] 안드로이드 14 (targetSdk 34) 이상 선언 시, 점검사항
기존 프로젝트에서 targetSdk34 이상 선언 시 아래 사항을 점검해주시기 바랍니다.
1. 프로젝트 내의 라이브러리 버전을 확인 후 아래 라이브러리 보다 낮은 버전인 경우 라이브러리 업데이트
- Core 라이브러리 2.1.8.37 미만의 라이브러리
* core 라이브러리를 업데이트 하는 경우 프로젝트에서 사용되고 있는 addon/plugin 라이브러리 업데이트도 진행
[라이브러리 버전 확인 방법]
(1) IDE > 프로젝트(application.xml) > 라이브러리 매니저탭
(2) 프로젝트 mcoreLibs > m_core_2.1.x.x.jar
[라이브러리 업데이트 관련 참고사항]
- 이전 코어 라이브러리가 2.1.8.11 미만의 버전인 경우 : https://developer.uracle.co.kr/faq/?pageid=3&mod=document&uid=420
- 이전 코어 라이브러리가 2.1.8.31 미만의 버전인 경우 : https://developer.uracle.co.kr/faq/?uid=2546&mod=document&pageid=1
- IDE 미설치 환경에서의 라이브러리 관리 : https://developer.uracle.co.kr/faq/?uid=2881&mod=document&pageid=1
2. 미디어와 관련된 권한의 변경이 있으므로 AndroidManifest.xml에 아래 항목을 추가
<uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />
3. ImageList1Activity.java 변경 (첨부파일 참고)
아래 내용 제거
if (imageMode) {
mImageList = getImage();
}
else {
mImageList = getVideo();
}
System.out.println(mImageList.size());
mImageLoader = new ImageLoader(this);
GridView gridView = (GridView) findViewById(ID_LIST);
//gridView.setNumColumns(3);
gridView.setAdapter(new MyAdapter(this));
gridView.setOnItemClickListener(this);
onCreate 하단에 아래 내용 추가
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
//아래 내용은 adapter를 지정하는 부분에 적용
if(Build.VERSION.SDK_INT >= 34) {
//매회 해당 권한 요청 후 선택된 이미지에 대하여ImageList1Activity로 출력
String[] mediaPermissions = new String[]{"android.permission.READ_MEDIA_VISUAL_USER_SELECTED","android.permission.READ_MEDIA_IMAGES","android.permission.READ_MEDIA_VIDEO"};
PermissionUtil.checkPermissions(this, mediaPermissions, 888, new IRequestPermissionsListener() {
@Override
public void permissionGranted() {
Log.e("permissionGranted_TAG","permissionGranted");
}
@Override
public void permissionDenied() {
Log.e("permissionDenied_TAG","permissionDenied");
}
});
}else{
SetImageAdapter();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
if(requestCode == 888) {
SetImageAdapter();
}
}
public void SetImageAdapter(){
if (imageMode) {
mImageList = getImage();
} else {
mImageList = getVideo();
}
System.out.println(mImageList.size());
mImageLoader = new ImageLoader(this);
GridView gridView = (GridView) findViewById(ID_LIST);
//gridView.setNumColumns(3);
gridView.setAdapter(new MyAdapter(this));
gridView.setOnItemClickListener(this);
}