728x90
반응형
- [ Android/Android ][Android] BottomSheetDialog2023-12-30 18:52:15WW 앱의 업데이트 상태를 알리기 위한 방법으로 바텀 시트 다이얼로그를 선택했다. 이전에는 기본 다이얼로그를 커스텀해 사용하는 방식을 많이 선택했는데 요즘 앱들을 살펴보면 바텀 시트 다이얼로그로 상호작용을 많이 하는 것 같아 한번 구현해보기로 했다. 바텀 시트 다이얼로그에도 종류가 있는데, 자세한 것은 아래의 링크에 잘 설명이 되어 있으니 참고하면 좋다. 오늘 구현해 볼 것은 Modal bottom sheet이다. Bottom Sheet Dialog 예제 : Modal, Persistent, 모서리 둥글게 등 1. Bottom Sheet Dialog 1-1. 개념 1-2. 종류와 차이 2. Modal Bottom Sheet 2-1. 기본 예제 2-2. 모서리가 둥근 예제 2-3. 버튼이 있는 예제 2-4..
- [ Android/Android ][Android] 권한 요청 워크 플로우2023-12-28 22:58:39앱을 사용할 때 사용자의 위치에 접근하거나, 미디어 파일에 접근해야하는 경우 권한을 요청하는 다이얼로그를 본 적이 있을 것이다. 오늘은 권한 요청을 위한 작업 순서에 대해 알아보도록 할 것이다. 개인 프로젝트인 WW (기온별 옷차림 안내 어플) 을 개발하며 작성해두었던 내용임을 참고하길 바란다. 앱의 매니페스트 파일에서 앱에 요청할 필요가 있을 권한 선언 특정 비공개 사용자 데이터에 액세스 해야하는 앱의 작업을 사용자가 호출할 때까지 기다림 → 호출했을 때 런타임 권한을 부여했는지 확인 WW의 경우 위에서 선언한 것처럼 ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION 권한이 필요함. -> 위치 권한이다. ActivityCompat.checkSelfPermission 권한 ..
- [ pinslog/Log.daily() ][Android] Activity 스택 관리 (feat. Intent와 Flag)2023-12-01 23:36:52Case1. 특정 액티비티를 상단에 띄우기 A - B - C 순으로 스택이 쌓였다고 할 때, C가 사용자의 화면에 떠있을 것이다. 이때 C에서 A로 이동하면서 B, C를 스택에서 제거하고 싶다면 Intent의 Flag 중 FLAG_ACTIVITY_CLEAR_TOP 을 사용하면 된다. Intent intent = new Intent(this, AActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); finish(); 이동하려는 액티비티가 스택에 이미 존재하면 그 위에 쌓여있는 모든 스택을 제거하고 해당 액티비티가 다시 상단에 오르게 되는 것이다. Case2. 스택을 모두 제거하고 싶을 때 스택에 이동하려..
- [ pinslog/Log.daily() ][Android] onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState)2023-11-16 23:13:19화면을 그리기 위해 여느 날과 다름 없이 onCreate()를 호출했다. 그러나 아무것도 그려지지 않았다. 아니 도대체 왜....? 그래서 열심히 화면을 들여다 봤다. 보통 화면이 create될 때 호출되는 함수는 잘 알겠지만 onCreate(@Nullable Bundle savedInstanceState) 이다. onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) 하지만 나는 다른 onCreate(위)를 호출하여 이러한 문제가 생긴 것인데, 이 onCreate는 도대체 뭐하는 친구이며, 언제 호출될까? 하는 일은 화면은 생성하는 것으로 동일하지만 파라미터부분에서 알 수 있듯 savedInsta..
- [ Do what you want/WW ]앱이 출시되었다2023-11-09 09:32:07개인정보처리방침이 필요하다지난 글에서 앱이 거부되었다고 했다. 이유는 잘못된 개인정보처리방침을 작성했기 때문인데, 해당 앱은 어떠한 개인정보도 수집 및 사용하지 않는다. 고 생각했지만 구글에 따르면 기기 위치www.pinslog.com개인정보처리방침이 없어 앱 업로드가 거부되었었다. 그리고 곧이어 이전에 올라가있던 PP 마저 개인정보처리방침 때문에 거부당했다. 무슨 수를 써야만 했다. 그래서 GPT에게 도움을 요청했다. 내가 만든 앱들은 사용자의 개인정보 중 어떠한 것도 수집 및 공유하지 않기 때문에 별다른 내용을 포함하지 않아도 되었다. 위치 정보가 필요하긴 하지만 서비스를 제공하기 위함이고 마찬가지로 수집 및 공유하지 않기 때문에 해당 내용을 포함시켜 업로드를 했다. 개인정보처리방침을 업로드하려면 플..
- [ Android/Android ][Android] Unity 연동된 Android 프로젝트에서 Unity만 종료하기2023-03-21 00:00:39안드로이드에 있는 유니티 프로젝트만을 종료하고 싶을 때 유니티 쪽에서 Application.Quit() 를 호출하면 유니티 프로세스만 종료할 수 있다고 해서 해봤는데 앱이 죽어버린다. (그러나 죽기 전의 액티비티부터 재실행 되는 걸로 보인다.) 이것의 해답은 AndroidManifest.xml에서 해당 액티비티에 process 속성을 부여하는 것이다. 그런데 두가지 문제가 있다. Unity에서 Application.Quit()가 실행되지 않는다는 것 그래서 일단 mUnityPlayer.quit() 를 실행했다. Android에서 Unity 메서드 호출하는 법 (Unity script에 해당 오브젝트와 메소드가 있어야겠죠) UnityPlayer.UnitySendMessage("Unity Object", "..
- [ Android/Android ][Android] Unity와 Android 연동하기 | UnityPlayerActivity as subView2023-03-20 00:17:351. Unity Hub 다운받기 해당 링크에서 다운 받는다. 퍼스널 라이센스를 활성화 시켰다. 그냥 무료버전은 없는건가…? new project를 눌러보자 프로젝트가 생성되었다. 곧 각 항목에 대해 자세히 알아보도록 하자. 2. 프로젝트에 안드로이드 추가하기 맥OS 기준) file > Build Settings 플랫폼 선택에서 안드로이드가 빠져있었다. → 다운받지 않았기 때문 → 다운 받아주었다. 다운 받은 후 안드로이드를 선택하고 build switch를 눌러주면 위와 같이 유니티 로고가 안드로이드 쪽으로 이동한다. (프로젝트 한번 껐다 켜니까 제대로 적용이 되었다.) 3. 관련 설정 export 하기 전에 Version : 1.0 Scripting Backend : IL2CPP Target Archi..
- [ Do what you want/WW ][Android] locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER) 이 null을 반환할 때2022-12-25 22:29:42상황 날씨앱이다 보니 현재 위치를 받아와야 하는 것은 당연하다. 현재 위치의 좌표를 구하기 위해 LocationManager 클래스의 getLastKnownLocation 메서드를 이용한다. 그런데 해당 메서드가 Location이 아닌 null을 반환하는 바람에 현재 위치도, 현재 주소도 알 수 없어졌다. getLastKnownLocation(provider) Gets the last known location from the given provider, or null if there is no last known location. The returned location may be quite old in some circumstances, so the age of the location should a..
728x90
반응형