본문 바로가기

프로그래밍/Android, iOS27

[Android] 앱 여부 확인하기 // if you use this in Android 11(api 30) // add this below lines in manifests fun hasAnyApp(strPackageName: String): Boolean { val intent = packageManager.getLaunchIntentForPackage(strPackageName) return intent != null } 안도르이드 11 버전을 사용하는 경우 query를 작성해줘야 getLaunchIntentForPackage 함수가 정상적으로 작동합니다. 2022. 3. 29.
[Android] 취약점 분석 정리 요즘 또 작업하는 것들 중에 취약점 분석 보고서가 있어서 여기에 나온 결과에 따라 보안을 강화해야 하는데 몇 가지 작업해 놓은 것을 정리해 보려고 한다. ​ 난독화 적용(Proguard) 난독화 조치가 되어 있지 않은 경우에 앱 디컴파일시 소스코드 분석이 용이하여 보안상 문제가 발생할 여지가 있다. 안드로이드 자체적으로 제공하는 Proguard를 적용한 내용을 정리합니다. ​ Build.gradle에 작성합니다. buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } debug { minifyEnabled false p.. 2022. 3. 29.
[Android Error] 사설 배포시 apk 파일 파싱 오류 문제가 생기면 일단 로그부터 보면 반은 갈텐데 늦게 봐서 한참을 돌아서 가는 느낌이다. 안드로이드 apk 파싱 실패에 대한 검색을 해봐도 Client 입장에서 해당 이슈를 피하는 방법을 알려주는 점도 있었고. W/System.err: java.io.FileNotFoundException: /storage/emulated/0/download/test.apk (Permission denied) at java.io.FileOutputStream.open0(Native Method) W/System.err: at java.io.FileOutputStream.open(FileOutputStream.java:308) at java.io.FileOutputStream.(FileOutputStream.java:238).. 2022. 3. 29.
[Android] Floating button으로 추가 버튼 만들기 android:src (drawable) app:backgroundTint (배경색상) app:maxImageSize (내부 이미지 크기) app:tint (drwable vector이미지 색상) ​ 2022. 3. 29.
[Android] WIFI 제어하기 안드로이드 10 미만에서는 Wifi를 코드에서 처리하는 것이 가능하지만, 10 이상부터는 Wifi를 직접적으로 제어하는 것이 금지되었다. manifest activity val wifiMgr = applicationContext.getSystemService(WIFI_SERVICE) as WifiManager wifiMgr.isWifiEnabled = true // or false ​ 안드로이드 10 이상에서는 액티비티를 실행시켜서 그곳에서 사용자가 직접 wifi를 제어하도록 처리해야 한다. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { val panelIntent = Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVI.. 2021. 12. 6.
[Android] Signing 처리 디버그 모드로 apk 파일을 얻는 경우에는 기기 내에서 따로 처리를 하지 않지만, release 모드의 경우에는 설치에 실패하는 경우가 있는데 사이닝이 되어 있지 않아서이다. Android - Build - Generate Signed app bundle or apk 기존에 있는 KeyStore 파일 경로를 넣어주거나 하나 만든다. jks 파일은 프로젝트 내의 app 폴더에 생성되도록 지정한다. (이름은 따로 정한다) KeyStore의 password, Key 의 password를 동일하게 지정해주면 된다. Alias도 따로 정해준다. 유효 연도를 고르고 텍스트 필드는 선택사항이다. (따로 정보로 출력되는 부분이라고 한다.) 디버그, 릴리즈 모두 클릭해서 finish 하면 적용이 된다. 자동 빌드 적용 .. 2021. 12. 4.
[Android] 외부저장소 권한 없이 이미지 파일 exIfInterface 가져오기 안드로이드 10부터 WRITE_EXTERNAL_STORAGE 권한을 사용하는 것이 제한이 된다. 각 어플마다 가지고 있는 저장소에서는 자유롭게 접근이 가능하지만 다른 어플의 저장소에 접근하는 경우 접근을 제한하고 있다. private fun createTempFile() { val strTime = CB_AppFunc.getDateStringForSave() val storageDir = requireActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES) val imageFile = File.createTempFile( strTime, // prefix ".jpg", // suffix storageDir // directory ).apply { d.. 2021. 12. 4.