본문 바로가기

Android/Bottom-Up

Nougat 7+ 대응, FileProvider 게시물에 첨부된 파일을 다운로드하고 실행할 때, FileUriExposeException이 발생하면서 앱이 죽는다. Android 7.0 Behavior Changes | Android Developers 안드로이드 7.0 변경된 사항들을 보니, 앱과 앱간의 파일 공유에 새로운 정책이 반영되었다.앱 외부에서 file://URI를 참조하면 FileUriExposeException이 발생한다.앱 사이에 파일을 공유하려면 반드시 content://URI를 사용해야하고, 이 URI에 대한 임시 접근권한을 줘야한다.FileProvider가 그 권한을 가장 쉽게 부여하는 방법이다. FileProvider | Android Developers FileProvider란? 앱과 앱 사이의 안전한 파일 공유를 가능하게하는.. 더보기
Intent :: setFlags() VS addFlags() 첨부파일 항목을 클릭하면 새로운 액티비티를 띄워서 관련 뷰어를 실행하도록 했다.Nougat(누가) 버전을 대응하느라 FileProvider를 적용하면서, setFlags()를 addFlags()로 변경해야 관련 뷰어앱이 실행된다. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 이 둘은 무슨 차이인거지? 우선 flag에 대해서 찾아봤다.: startActivity()를 호출할때, 새로운 액티비티를 현재 태스크에 넣을것인지 정의하는 값이다. - FLAG_ACTIVITY_NEW_TASK : 액티비티를 새로운 태스크에서 실행한다.실행하려는 액티비티에 대한 태스크가 이미 실행중이면, 그 태.. 더보기
Bitmap 또는 BitmapFactory.decodeFile 이 null을 리턴할 때 프로필 이미지를 등록할 때 리사이징해서 업데이트하려고 한다. 이미지의 용량을 줄이기위해 BitmapFactory.decodeFile(Path, Options) 메서드를 이용했다. 하지만 계속해서 null을 리턴한다. 디버깅을 해봐도 원인을 못찾겠다. 혹시나 Path가 content 스키마라서 그런것일까? "content://media/external/images/media/..." 그렇다!!! sdcard 영역에 저장된 "file://..." Path를 파라미터로 입력해주어야 한다. http://huewu.blog.me/110084637531 위 포스팅에 아주 상세한 설명이 나와있다. 혹시 포스팅 비공개나 삭제될 수도 있으니 원문을 복사해놓아야겠다. 더보기
아마도 이건 자바 3바퀴 머릿속에 개념이 퍼뜩퍼뜩 떠오르지는 않는 상태이다.예를 들어 인터페이스는 인스턴스 생성이 안된다던지 이런 것들.그래서 PPT로 각 주제를 정리해보았다. 더보기
What is the "Gradle"? Android Studio에는 Gradle이란 파일들과 디렉토리가 보인다.심지어 프로젝트를 import할 때에도 프로젝트 內 gradle 파일로 열어야 한다. 한 프로젝트 안에는 총 3가지의 gradle 파일이 존재한다.build.gradle (app 소속) : 기존 이클립스의 Manifest 파일과 같다.build.gradle (프로젝트 소속) : jcenter (라이브러리 repository)settings.gradle (프로젝트 소속) : 비중 없음 더보기