메뉴 닫기
공지사항 : > 공지사항

[안드로이드] 안드로이드 14 (targetSdk 34) 이상 선언 시, 점검사항

작성자
이현강
작성일
2024.01.17 16:34
조회
176

기존 프로젝트에서 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);
}