【发布时间】:2017-04-15 01:28:17
【问题描述】:
在我开始解释我的问题之前,我必须提到我是 Android 开发新手。
我正在尝试为 Android 编写一个程序,该程序使用 OpenCV 的 Java API 进行一些数据处理。我正在为实现算法的类开发单元测试,这些类与任何活动都不相关。换句话说,我只想在处理活动之前测试方法的功能。
因为我需要访问 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 吗?
【问题讨论】:
标签: android opencv permissions storage