siso에는 복용 알람 기능을 제공하기로 하였고 오픈 소스를 찾아보았더니 꽤 괜찮은 오픈 소스가 있었다.
바로 적용해보았더니 역시나 오류가 발생했다..
첫 번째 오류 발생 (PendingIntent)
적용하려고 하니 아래와 같은 오류가 났었다.
targeting s+ (version 31 and above) requires that one of flag_immutable or flag_mutable be specified when creating a pendingintent.
위 오류는 타깃 sdk가 31 이상인 버전일 경우 PendingIntent 시 flag 값을 0으로 줬기 때문에 일어나는 버그였다.
그래서 나는 flag 값을 PendingIntent.FLAG_MUTABLE로 주었다.
PendingIntent alarmPendingIntent = PendingIntent.getBroadcast(context, alarmId, intent, PendingIntent.FLAG_MUTABLE);
위 코드(getBroadcast)에서 FLAG 값을 줄 수 있는 것은 두 가지가 있는데 변경 가능하게 할 것이냐 불가능하게 할 것이냐의 차이인데 이 부분은 완벽히 이해하지 못했다..
PendingIntent.FLAG_MUTABLE //변경 가능
PendingIntent.FLAG_IMMUTABLE //변경 불가능
두 번째 오류 발생 (bad notification for startforeground)
적용 후에 코드들도 잘 적용했는데 계속 오류가 났었다.
위 오류를 구글링을 해도 해결하지 못했다.
그래서 깃허브 코드 하나하나 다시 보았고 원인은 Manifest에서 액티비티의 theme가 이상한 걸 적용하고 있었고 다음과 같이 바꿔줬다.
<activity android:name=".medicine.activities.RingActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
그리고 비교하던 도중 application 태그의 name이 달리지 않은 걸 확인하였고 다음과 같이 적용해줬다.
<application
android:name=".medicine.App"
오류로 인해 notification이 문제였던 거로 착각하여 계속 다른 코드를 적용해보고 sdk도 바꿔보고 gradle도 바꿔보고 다양한 삽질을 이틀 동안 했다..
그래도 잘 해결되어 gradle도 모두 최신 버전에 디자인까지 마무리 한 상태이다!
결과 화면
'개발일지 > siso' 카테고리의 다른 글
[siso/Project] siso 프로젝트 결과 화면 (0) | 2022.11.17 |
---|---|
[siso/Project] siso 프로젝트 - 관리자 페이지 중간 결과 (0) | 2022.10.25 |
[siso/Project] 독거노인 관리 프로그램 siso 로그인, 회원가입 기능 완성 (0) | 2022.10.18 |
[siso/Project] 독거노인 관리 프로그램 siso의 DB CRUD 코드 및 ERD (feat. 팀 프로젝트 시작) (0) | 2022.10.07 |