Android
-
외부 앱 접속 막기Android 2025. 3. 3. 20:44
안녕하세요~ 오늘은 외부 앱의 접속을 차단하는 방법에 대해서 얘기해보고자 합니다 🙂 외부 앱의 접속을 막으려면 어떤게 필요할까요? 접근성 권한 : 다른 앱의 접속을 차단할 수 있는 권한을 사용자로부터 받아야 함서비스 : 차단할 앱을 백그라운드에서 감지해야함브로드캐스트 리시버 : 안드로이드 컴포넌트간의 데이터 전달 대표적으로 3개의 구성요소가 필요한데 하나씩 짚어보겠습니다 :) 접근성 권한 받아오기다른 앱의 접속을 차단할 수 있는 권한을 얻기 위해서는 사용자로부터 접근성 권한을 받아와야 합니다.val isAccessibilityPermitted = checkAccessibilityPermissions()if(!isAccessibilityPermitted) { AlertDialog.Builder(th..
-
핸드폰에 설치된 앱 불러오기Android 2025. 2. 25. 19:28
안녕하세요~ 오늘은 프로젝트를 진행하면서 알게된 핸드폰에 설치된 앱을 불러오는 방법에 대해 적어보려고 합니다.🙂 코드를 작성하는 적절한 위치만약 프로젝트가 단일 액티비티 구조라면, 설치 앱 목록을 불러오는 코드는 프래그먼트보다는 액티비티의 onCreate 생명주기에 작성하는 게 좋습니다. 왜냐하면, 프래그먼트는 생명주기가 생성 및 소멸될 수 있지만, 액티비티의 생명주기상 onCreate는 앱을 실행한 후 한 번만 호출되기 때문입니다. 변수 설정private lateinit var totalApps: MutableListprivate lateinit var requiredApps: List totalApps 변수는 핸드폰에 설치된 모든 앱 목록을 저장할 변수이고, requiredApps는 시스템 앱을 제..
-
액티비티간 데이터 전달 - startActivityForResultAndroid 2024. 10. 10. 16:05
이전 화면으로 되돌아올 때 사후처리가 필요한 경우가 있다.그때 필요한 방법은 아래 두가지가 있다.startActivityForResult (전통적인 방법) → deprecated 됨ActivityResultLauncher (최근 권장하는 방법)오늘은 startActivityForResult 의 사용법을 알아보려한다. 해당 방식은 안드로이드 버전1~버전12 까지는 잘 사용됐지만, 안드로이드 11 버전이 나올쯤부터 androidx의 ActivityResultLauncher 가 권장되기 시작했다. 권장되는 방식인 ActivityResultLauncher 을 바로 사용하는 것도 괜찮지만, 기존 startActivityForResult 를 먼저 공부해보고 어떤 점이 불편해서 ActivityResultLaunche..
-
안드로이드 기본 앱 연동하기 - 지도 앱, 전화 앱Android 2024. 10. 3. 09:58
지도 앱 연동하기앱이 만약에 위도와 경도 값을 가지고 있다면 지도 앱을 연동하여 위치를 보여줄 수 있다. 이때도 지도 앱의 액티비티를 실행하기 위해서는 인텐트를 사용하면 된다.val intent = Intent( Intent.ACTION_VIEW, // 액션 문자열 Uri.parse("geo:37.5662952, 126.9779451") // 데이터 정보)startActivity(intent) 두번째 파라미터인 데이터 정보는 URL 로 반드시 geo: 로 시작해야 하고 이어서 위도와 경도를 지정하면 된다.이렇게 하면 해당 위도와 경도에 해당하는 특정 위치를 지도에서 보이게 할 수 있다.전화 앱 연동하기먼저 전화 앱과 연동해 전화를 걸려면 메니페스트에서 퍼미션을 설정해야 한다. 이후 인텐트를 ..
-
안드로이드 기본 앱 연동하기 - 주소록 앱Android 2024. 9. 26. 16:56
주소록 앱 연동하기먼저 주소록 앱 사용에 대한 퍼미션을 메니페스트에서 설정해줘야 한다. 이후, 주소록 앱 화면을 띄울려면 아래와 같은 코드를 작성하면 된다.// 액션 문자열: ACTION_PICK// 데이터: ContactsContract.CommonDataKinds.Phone.CONTENT_URIval intent = Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI)requestContactsLauncher.launch(intent) 주소록 목록 화면은 액티비티이기 때문에 인텐트를 이용해 실행해야 한다.데이터 정보에 들어가는 Uri 객체는 상수로, Uri.parse() 함수로 직접 지정해도 되지만, 다음과 같은..
-
안드로이드 기본 앱 연동하기 - 카메라 앱Android 2024. 9. 19. 15:53
카메라 앱을 연동하여 사진을 촬영하고 그 결과를 돌려받는 방법은 2가지가 있다.1. 사진 데이터 가져오기카메라 앱으로 사진을 촬영한 후 파일로 저장하지 않고 데이터만 넘겨주는 방식이다. 사진을 파일로 저장하지 않으므로 쉽게 구현할 수 있지만 넘어오는 사진 데이터의 크기가 작다는 단점이 있다. 암시적 인텐트로 카메라 앱의 사진 촬영 액티비티를 실행한다.val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)requestCameraThumbnailLauncher.launch(intent) 액션 문자열을 MediaStore.ACTION_IMAGE_CAPTURE 로 지정하여 인텐트를 시스템에 전달하면 카메라 앱이 실행된다. 카메라 앱에서 넘어온 사진 데이터는 Activity..
-
서비스 생명주기 - startService/bindServiceAndroid 2024. 9. 12. 19:00
Service 란?서비스는 오래 걸리는 작업을 백그라운드에서 처리할 수 있게 해주는 컴포넌트이다. startService 의 생명주기bindService 의 생명주기startService() vs bindService()startService 같은 경우에는 다음과 같이 도식화 할 수 있다.즉, 백그라운드 작업은 필요해서 서비스를 이용하지만 액티비티와 데이터를 주고받을 일이 없을 때 사용한다. 즉, 상호작용이 필요하지 않을 때는 startService() 를 사용하면 된다. bindService() 는 다음과 같이 도식화할 수 있다.bindService() 는 startService() 와 달리 서비스와 다른 컴포넌트(주로 액티비티) 간의 데이터 전달 등 상호작용이 원활하게 필요할 때 사용하면 된다.
-
안드로이드 기본 앱과 연동하기 - 갤러리 앱Android 2024. 9. 5. 15:16
1. 이미지 데이터 이해하기갤러리 앱을 연동하기 위해서는 이미지에 대한 이해가 필요하다.이미지는 Drawable 객체와 Bitmap 객체로 나뉜다. Drawable 객체 같은 경우는 리소스 이미지를 의미하고, Bitmap 객체 같은 경우에는 파일에서 읽은 이미지나 네트워크에서 내려받은 이미지를 의미한다. Bitmap 객체는 BitmapFactory 를 이용하여 생성되는데, 아이콘처럼 작은 이미지를 불러올 때는 문제가 없지만 카메라로 찍은 사진이나 서버에서 내려받은 이미지 등 크기가 큰 이미지를 불러올 때는 OOM 오류가 발생할 가능성이 높다. 이때 OOM 오류란 이미지 용량이 커 앱의 메모리가 부족해서 발생하는 오류를 말한다. 이를 해결하려면 이미지 용량(크기)를 줄여야 한다.이외에 Glide 나 Pic..