Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 서비스 쓰레드 차이
- 자바 다형성
- android ar 개발
- 2022 플러터 설치
- 서비스 vs 쓰레드
- jvm 작동 원리
- jvm이란
- 안드로이드 레트로핏 사용법
- 안드로이드 라이선스
- ar vr 차이
- 안드로이드 유닛테스트란
- 큐 자바 코드
- 클래스
- rxjava disposable
- rxjava hot observable
- android retrofit login
- 멤버변수
- 2022 플러터 안드로이드 스튜디오
- 스택 자바 코드
- 안드로이드 레트로핏 crud
- rxjava cold observable
- 안드로이드 os 구조
- 객체
- Rxjava Observable
- 안드로이드 유닛 테스트
- 안드로이드 유닛 테스트 예시
- 플러터 설치 2022
- 안드로이드 라이선스 종류
- 스택 큐 차이
- ANR이란
Archives
- Today
- Total
나만을 위한 블로그
[Android] android.os.FileUriExposedException: exposed beyond app through Intent.getData() 에러 해결 본문
Android
[Android] android.os.FileUriExposedException: exposed beyond app through Intent.getData() 에러 해결
참깨빵위에참깨빵_ 2020. 9. 18. 19:48728x90
반응형
버튼을 눌러 액티비티를 스크린샷 찍는 기능을 구현할 때 제목과 같은 에러가 났다.
해결법은 2가지다.
하나는 onCreate() 안에 아래와 같은 코드를 넣는다
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ↓ 아래 2줄 추가
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
.
.
.
URI exposure를 무시하는 코드다. 이걸 넣고 앱을 빌드하면 에러는 사라진다.
다른 방법은 FileProvider 클래스를 쓰고 매니페스트를 건드려 해결하는 방법이다.
먼저 res/xml 경로에 대충 path란 이름의 xml 파일을 만든다. res 폴더 안에 xml 폴더가 없다면 먼저 만들어야 한다. res 폴더를 우클릭하고 아래의 빨간 사각형만 누르면 만들어진다.
그리고 path.xml을 만든다. 파일 내용은 아래처럼 한다.
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="storage/emulated" path="." />
</paths>
다음으로 매니페스트의 application 태그 내부의 가장 마지막 부분에 아래처럼 provider 태그를 만들고 아래처럼 써주면 끝이다.
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.example.testapp.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/paths" />
</provider>
</application>
이렇게 하면 화면 캡쳐 혹은 카메라 사용 시 제목과 같은 에러는 발생하지 않고 정상적으로 작동하게 된다.
반응형
'Android' 카테고리의 다른 글
[Android] split()이란? (0) | 2020.09.24 |
---|---|
[Android] getApplicationContext() vs XXXActvity.this의 차이 (0) | 2020.09.21 |
[Android] 구글 드라이브 API 사용법 (0) | 2020.07.14 |
[Android] 버튼 하나로 레이아웃 나타나게 하거나 사라지게 하는 법 (0) | 2020.07.13 |
[Android] 리사이클러뷰 아이템의 position 값을 액티비티에서 알아내고 인텐트로 넘기는 방법 (0) | 2020.07.10 |
Comments