안드로이드/SDK version 12

Android 12이상 Notification & BroadCastReceiver, Service StartActivity문제

Android 12이상 Notification & BroadCastReceiver, Service StartActivity문제 안드로이드 OS버전 12이상에서 노티피케이션 받았을 때 푸시가 오지 않는 이슈가 발생하였다. 앱종료 되어있을 때 푸시받아서 ForegroundService도 실행해 줘야 하는데 OS버전 12이상에서 백그라운드 실행을 더 제한하여 실행이 되지 않았음. FCM의 priority를 서버에서 High로 받으니 푸시가 오는 것을 확인하였다. 또 다른 방법은 WorkManager로 마이그레이션 하라고 되어있는데 그렇게까진 하지 않았습니다. ForegroundService에서 notification 문제도 발생. remoteView로 커스텀뷰를 사용하고 BroadCastReceiver로 이벤..

[Android] 카메라 촬영 Android10이상과 그 이하

안드로이드 카메라 촬영 Android10과 그 이하 1)Android 10 이상은 외부저장소 경로를 가져올수가 없다. 그래서 MediaStore를 이용하여 Media저장을 해야한다. 권한은 카메라만 있어도 저장됨. 2)Android 10 미만은 외부저장소를 사용 할 수 있으니 외부저장소에 생성하여 저장. 권한은 카메라, 외부저장소(Read, Write)필요. -문제: 처음에 1)방법으로 해보았는데 Andrid9(갤럭시8)에서 사진촬영 후 uri에 값이 null임, intent.data에 uri들어있음 사진 촬영된 것도 조그만한 이미지로 잡혀서 실제 사용을 못할 정도(섬네일 사진을 가져오는듯) -찾은방법: 2)방법을 사용하면서 FileProvider를 이용해 파일공유를 해주어 원본을 가져오는 법 2-1)..

[Android] Notification 오레오 대응

Notification 오레오 대응 오레오에서부터는 이 Notification Channel을 필수로 만들어 주어야 합니다. 오레오에서 Notification Channel을 만들어 주지 않으면 알림이 오지 않습니다. 알림채널(Notification Channel) 만들기 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); NotificationChannel notificationChannel = new NotificationChannel("channel_id",..

[Android] Android12에서 File에 대한 직렬화(Serialization) 문제

[Android] Android12에서 File에 대한 직렬화(Serialization) 문제 gms:play-services-* 관련 버전 update > targetSdkVersion = 31 관련 기존에 play service 라이브러리 버전 17을 사용했는데, PendingIntent에서 FLAG_IMMUTABLE 관련 에러가 com.google.android.gms:play-services-auth:17.0.0에서 발생합니다. 해결 방안은 라이브러리 버전을 올리면 됩니다. # File 객체의 직렬화(Serialization) 와 역직렬화(Deserialization) 가 가능하도록 어댑터 추가 Android12 에서 File에 대한 직렬화가 이루어지지 않아 업로드 할 때 intent에서 값을 가..

Android 11 분석

왜 사용자 정보 보호와 관련된 기능 및 변경사항이 매번 새 안드로이드 버전이 출시 될 때마다 추가 되고 되던 기능을 막는건가? - 개인정보 보호 관점에서 스마트 디바이스가 더욱 중요한 역할을 하고 있기 때문 사용자 정보 보호 원칙 - 최소한의 권한만 요청 - 필요할 때 권한 요청 - 사용자가 권한을 허용하지 않더라도 올바르게 처리 일회성 권한 -대표적인 변경사항 : 카메라, 마이크, 위치권한 Android 11에 이번만 허용이 추가되었음 (앱이 Foreground일 경우에만 허용) : 앱이 백그라운드에 진입 하면 시스템 내부에 타이머가 시작됩니다. 그 후 타이머가 만료되면 권한을 사용할 수 없습니다. 백그라운드 위치 권한 Android 10 : ACCESS_BACKGROUND_LOCATION 권한 필요 ..

안드로이드 11 대응

1) Android 11 플랫폼에서 실행되는 모든 앱 개인정보 보호 Android 11에서는 사용자 개인정보 보호를 강화하기 위해 다음을 비롯한 변경사항과 제한사항이 도입되었습니다. 일회성 권한: 사용자에게 위치, 마이크 및 카메라 권한에 관한 추가 임시 액세스 권한을 부여하는 옵션을 제공합니다. 권한 대화상자 공개 상태: 반복적인 권한 거부는 '다시 묻지 않음'을 의미합니다. 데이터 액세스 분석: 앱 자체 코드와 종속 라이브러리 코드 모두에서 앱이 비공개 데이터에 액세스하는 위치에 관한 유용한 정보를 얻습니다. 시스템 알림 창 권한: 요청에 따라 앱의 특정 클래스에 SYSTEM_ALERT_WINDOW 권한이 자동으로 부여됩니다. 또한 ACTION_MANAGE_OVERLAY_PERMISSION 인텐트 작..

안드로이드 10 (Q) 대응

1) Android 10 플랫폼에서 실행되는 모든 앱 android.preference 라이브러리 지원 중단 Android 10부터 android.preference 라이브러리가 지원 중단됩니다. 개발자는 Android Jetpack의 일부인 AndroidX preference 라이브러리를 대신 사용해야 합니다. 이전 및 개발 지원용 추가 리소스는 업데이트된 설정 가이드와 함께 공개 샘플 앱 및 참조 문서를 확인하세요. 2) API 레벨 29 이상을 타겟팅하는 앱 Android 10(API 수준 29) 이상을 타겟팅하는 앱은 기본적으로 외부 저장소로 범위가 지정된 액세스 권한을 가지게 되고, 범위 지정 저장소가 부여됩니다. 이러한 앱은 외부 저장소의 앱별 디렉터리와 앱에서 만든 특정 유형의 미디어에만 액..

안드로이드 Pie 9.0 대응

Android 9(API 레벨 28)에서는 Android 시스템에 많은 변경사항이 도입됩니다. 1) Android 9 플랫폼에서 실행되는 모든 앱 백그라운드에서 센서 액세스 제한 Android 9에서는 백그라운드 앱이 사용자 입력과 센서 데이터에 액세스하는 능력을 제한합니다. Android 9이 실행되는 기기에서 앱이 백그라운드로 실행 중인 경우, 시스템은 다음과 같은 제한을 앱에 적용합니다. 앱이 마이크나 카메라에 액세스할 수 없습니다. 연속 보고 모드를 사용하는 센서(예: 가속도계 및 자이로스코프)는 이벤트를 수신하지 않습니다. 변경 시 또는 원샷 보고 모드를 사용하는 센서는 이벤트를 수신하지 않습니다. Android 9이 실행되는 기기에서 앱이 센서 이벤트를 감지해야 하는 경우, 포그라운드 서비스를..

Android 8.0 Oreo 대응

안드로이드 Oreo (8.0, API 26) 부터는 기존 버전과 다르게 두 가지의 섹션으로 나뉜다. 1. 앱의 Target 버전이 26 미만인데도 영향을 받는 모든 API 레벨을 대상으로 하는 앱 2. 앱의 Target 버전이 26 이상에서만 영향을 받는 Android 8.0를 대상으로 하는 앱 1) 모든 API레벨을 대상으로 하는 앱 백그라운드 제한 Android 8.0는 사용자 경험을 개선하기 위해 백그라운드에 실행되는 앱의 동작을 제한합니다. 이 백그라운드 제한은 두 가지의 제한 방법으로 나뉩니다. 백그라운드 서비스 제한: 앱이 유휴 상태일 경우 백그라운드 서비스의 사용이 제한됩니다. 이 기능은 사용자에게 잘 보이는 포그라운드 서비스 에는 적용되지 않습니다. 유휴 상태) 휴대전화의 전원이 켜진 상태..