내 질문에 대한 설명을 시작하기 전에 Android 개발을 처음 사용한다고 언급해야합니다.AndroidTest에서 거부 된 외부 저장소에 액세스 할 수있는 권한
일부 데이터 처리를 위해 OpenCV의 Java API를 사용하는 Android 용 프로그램을 작성하려고합니다. 알고리즘을 구현하는 클래스에 대한 단위 테스트를 개발 중이며이 클래스는 아직 어떤 활동과도 관련이 없습니다. 다시 말해서, 나는 활동을 다루기 전에 메소드의 기능을 테스트하기를 원한다.
OpenCV 라이브러리에 액세스해야하기 때문에 Android Studio에서 androidTest에 단위 테스트를 작성했습니다. 데이터를 포함하고 프로그램에서 읽을 필요가있는 파일은/sdcard/DIR 및/storage/emulated/0/DIR에 복사됩니다. 외부 저장소에 대한 액세스 권한을 부여하기 위해 AndroidManifest.xml에 다음 권한을 추가했습니다. 내가 외부 저장 장치에서 파일을 읽을 때
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
는 그러나, 나는
open failed: EACCES (Permission denied)
를 얻을.
Environment.getExternalStorageDirectory().getAbsolutePath()
에 의해 반환 된 경로를 데이터 파일의 이름과 연결하고 나중에
FileInputStream
을 사용하여 파일의 내용을 읽습니다.
나는 23 세 이상의 API에 대해 런타임에 액세스 권한을 부여해야한다는 비슷한 질문과 답변을 보았습니다.하지만 내 메서드에 대한 활동이 없기 때문에 런타임에 권한을 요청할 수 없다고 생각합니다.
이러한 권한이 필요하지 않은 데이터 파일을 배치하는 데 사용할 수있는 다른 디렉토리가 있습니까? 나는
assets
을 옵션으로 생각했지만 자산이 최종 apk에 저장되어 있다고 가정하고 다른 데이터 용 파일을 변경해야 할 때마다 매번 새로운 apk를 만들어야합니다.런타임시 권한을 묻는 활동을하지 않고/sdcard에 대한 액세스를 어떻게 부여해야합니까?
내 Linux 컴퓨터에 OpenCV 라이브러리를 설치하여 androidTest 대신 로컬 테스트를 수행 할 수 있습니까?
UI가 없어도 어떻게 권한을 부여 할 수 있습니까? requestPermissions에는 UI가 필요하지 않은가요? – Mahdi
이전 버전의 Android에서는 가능했으나 marshmallow 권한은 동적이며 설치 중에는 표시되지 않습니다. –