마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

[Kotlin] [Logcat] 카메라 실행 버튼 클릭 시 앱 강제 종료되는 오류

0 추천

메인 액티비티에서 카메라 버튼을 눌러 촬영한 다음, 서브 액티비티에 촬영한 사진을 띄우는 기능을 구현하던 중 이었습니다.

최종적으로 실행하려던 참에 아래와 같이 오류가 뜨며 버튼 클릭 시 화면이 잠깐 하얘졌다가 메인 액티비티로 화면이 전환됩니다.

위 과정을 두 번 이상하면 앱이 강제 종료되는데, 왜 그러는지 알려주실 수 있을까요?

 

+ 해당 질문과 같은 오류인가 싶어 theme 쪽을 봤지만 잘못 설정되어 있는 것은 없었습니다.

+ 다른 프로젝트에서 카메라 코드만 실행하면 문제 없이 작동됩니다.

 

[Logcat(로그캣)] (첫 번째 시도)

2023-11-14 13:02:01.680 | 19711-19711 | AndroidRuntime | com.example.smf_android | E | FATAL EXCEPTION: main
	Process: com.example.smf_android, PID: 19711
	java.lang.IllegalArgumentException: Couldn't find meta-data for provider with authority com.example.smf_android.fileprovider
		at androidx.core.content.FileProvider.getFileProviderPathsMetaData(FileProvider.java:664)
		at androidx.core.content.FileProvider.parsePathStrategy(FileProvider.java:695)
		at androidx.core.content.FileProvider.getPathStrategy(FileProvider.java:645)
		at androidx.core.content.FileProvider.getUriForFile(FileProvider.java:449)
		at com.example.smf_android.SubActivity1.dispatchTakePictureIntent(SubActivity1.kt:218)
		at com.example.smf_android.SubActivity1.onCreate$lambda$0(SubActivity1.kt:37)
		at com.example.smf_android.SubActivity1.$r8$lambda$K05JL2ys9B52bhSYATt5pYLO2F8(Unknown Source:0)
		at com.example.smf_android.SubActivity1$$ExternalSyntheticLambda0.onClick(Unknown Source:2)
		at android.view.View.performClick(View.java:7792)
		at android.view.View.performClickInternal(View.java:7769)
		at android.view.View.access$3800(View.java:910)
		at android.view.View$PerformClick.run(View.java:30218)
		at android.os.Handler.handleCallback(Handler.java:938)
		at android.os.Handler.dispatchMessage(Handler.java:99)
		at android.os.Looper.loopOnce(Looper.java:226)
		at android.os.Looper.loop(Looper.java:313)
		at android.app.ActivityThread.main(ActivityThread.java:8751)
		at java.lang.reflect.Method.invoke(Native Method)
		at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
		at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)

 

[Logcat(로그캣)] (두 번째 시도)

2023-11-14 13:02:58.631 | 19843-19843 | AndroidRuntime | com.example.smf_android | E | FATAL EXCEPTION: main
	Process: com.example.smf_android, PID: 19843
	java.lang.IllegalArgumentException: Couldn't find meta-data for provider with authority com.example.smf_android.fileprovider
		at androidx.core.content.FileProvider.getFileProviderPathsMetaData(FileProvider.java:664)
		at androidx.core.content.FileProvider.parsePathStrategy(FileProvider.java:695)
		at androidx.core.content.FileProvider.getPathStrategy(FileProvider.java:645)
		at androidx.core.content.FileProvider.getUriForFile(FileProvider.java:449)
		at com.example.smf_android.SubActivity1.dispatchTakePictureIntent(SubActivity1.kt:218)
		at com.example.smf_android.SubActivity1.onCreate$lambda$0(SubActivity1.kt:37)
		at com.example.smf_android.SubActivity1.$r8$lambda$K05JL2ys9B52bhSYATt5pYLO2F8(Unknown Source:0)
		at com.example.smf_android.SubActivity1$$ExternalSyntheticLambda0.onClick(Unknown Source:2)
		at android.view.View.performClick(View.java:7792)
		at android.view.View.performClickInternal(View.java:7769)
		at android.view.View.access$3800(View.java:910)
		at android.view.View$PerformClick.run(View.java:30218)
		at android.os.Handler.handleCallback(Handler.java:938)
		at android.os.Handler.dispatchMessage(Handler.java:99)
		at android.os.Looper.loopOnce(Looper.java:226)
		at android.os.Looper.loop(Looper.java:313)
		at android.app.ActivityThread.main(ActivityThread.java:8751)
		at java.lang.reflect.Method.invoke(Native Method)
		at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
		at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
2023-11-14 13:02:58.687 | 15858-15858 | libprocessgroup | com.sec.android.app.launcher | E | set_timerslack_ns write failed: Operation not permitted
2023-11-14 13:02:58.711 | 30498-30517 | Native_CFMS | system_server | E | nativePerfMgrAddTask    Fail    tid : 15858    return : -1
2023-11-14 13:02:58.711 | 30498-30517 | Native_CFMS | system_server | E | nativePerfMgrAddTask    Fail    tid : 15936    return : -1
2023-11-14 13:02:58.720 | 30498-30517 | Native_CFMS | system_server | E | nativePerfMgrRemoveTask    Fail    tid : 19843    return : -1
2023-11-14 13:02:58.723 | 17560-17560 | Dc.IafdService | com.samsung.android.lool | E  app error more than 5 times.  just return
2023-11-14 13:02:58.725 | 858-1588 | BufferQueueDebug | surfaceflinger | E | [com.sec.android.app.launcher/com.sec.android.app.launcher.activities.LauncherActivity$_15858#0](this:0xb40000725771e948,id:-1,api:0,p:-1,c:-1) id info cannot be read from 'com.sec.android.app.launcher/com.sec.android.app.launcher.activities.LauncherActivity$_15858#0'
2023-11-14 13:02:58.744 | 3062-3062 | pageboostd | pageboostd | E  Received HALT command code 2
통밀빵 (200 포인트) 님이 2023년 11월 14일 질문

1개의 답변

0 추천
 
채택된 답변
에러메세지에 이렇게 나와 있네요.

java.lang.IllegalArgumentException: Couldn't find meta-data for provider with authority com.example.smf_android.fileprovider

안드로이드도 운영체제이므로 개인정보 보호를 위해 디스크에 있는 파일을 접근할 때, 기본적인 장치를 두고 있는데, 그중의 하나가 FileProvider입니다. 아래 링크를 잘 읽어보시고 필요한 부분을 수정하시면 될 것 같습니다.

https://developer.android.com/reference/androidx/core/content/FileProvider
https://commonsware.com/Jetpack/pages/chap-files-005.html
spark (227,970 포인트) 님이 2023년 11월 14일 답변
통밀빵님이 2023년 11월 15일 채택됨
...