티스토리 뷰
반응형
11월부터 sdk30으로 올려서 배포해야한다.
이슈가 되는 부분은 휴대폰 정보, 저장소, 부분권한 정도가 될 것 같다.
1. 휴대폰 정보
android.permission.READ_PHONE_STATE 사용하던 것을
android.permission.READ_PHONE_NUMBERS 사용해야 한다.
sdk30으로 설정 했다면 android.permission.READ_PHONE_STATE 지워도 된다. 다만 몇몇 라이브러리가 오류를 낼 수 있다.
그래서 일단은 둘 다 선언 및 권한 체크를 하도록 했다.
2. 저장소
기존 sdk29에서 requestLegacyExternalStorage="true" 옵션을 넣어서 외부 저장소 접근을 허용했었는데, 이제 이 방법은 무효화된다. sdk30부터는 preserveLegacyExternalStorage="true" 옵션을 넣을 경우 기존 고객은 외부 읽기/쓰기가 가능하고 앱 삭제 후 재설치시 접근이 불가하다고 되어있다. 실제로 테스트까지 해보진 않았지만 이를 해결할 권한 또한 존재한다.
manifests.xml에 다음 권한을 추가하고
1
2
3
|
<uses-permission
android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
|
cs |
앱 실행 시 다음으로 권한을 체크하고 받으면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
if (Environment.isExternalStorageManager()) {
// 권한 허용상태
}else{
try {
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
intent.addCategory("android.intent.category.DEFAULT");
intent.setData(Uri.parse(String.format("package:%s",getApplicationContext().getPackageName())));
startActivityForResult(intent, 1225);
} catch (Exception e) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
startActivityForResult(intent, 1225);
}
}
|
cs |
"모든 파일에 접근 허용" 팝업이 보이며 허용 시 외부 폴더 읽기&쓰기가 가능해진다.
나머지는 차차 적어보도록 한다..
참고 사이트 : https://stackoverflow.com/questions/62782648/android-11-scoped-storage-permissions
반응형
'Android > 자료정리' 카테고리의 다른 글
[Android]No version of NDK matched the requested version (0) | 2021.10.01 |
---|---|
[Android][SEED CBC] 암복호화 처리 (0) | 2021.07.30 |
[Android]Assets 파일 읽기 byte, String 가져오기 (0) | 2021.07.28 |
[android]Program type already present: BuildConfig (2) | 2019.03.14 |
[CMake error]PM Gradle sync failed: Error occurred while communicating with CMake server. (0) | 2019.01.10 |
댓글
반응형