java - 在 Android 上使用 System.load?

标签 java android java-native-interface

我正在尝试从 Android 的内部存储加载一个库(我让用户从外部下载它,以减少 apk 的大小)

但是每当我在 Activity 中执行 System.load() 时,我都会收到以下错误:

Localized Message: dlopen failed: couldn't map "/storage/emulated/0/libtest.so" segment 2: Permission denied
Message: dlopen failed: couldn't map "/storage/emulated/0/libtest.so" segment 2: Permission denied

我还尝试将 .so 文件复制到/data/local/tmp 并从那里加载它,但出现了相同的错误。

有解决办法吗?

最佳答案

您的目标是哪个 API 级别?,对于 >=23 的 API 级别,您需要提供动态运行时权限。

关于java - 在 Android 上使用 System.load?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38408310/

相关文章:

java - Android - 如何检测用户是否选择使用 Intent 分享到 Facebook 或 Twitter?

android - 在后台服务中启动线程时调用或发送消息到 Activity

java - 如何在不访问上下文的情况下从线程更新我的 Android SQLite 数据库?

android - 将 ArrayList<Object> 从 BroadCastReceiver 发送到 Activity

带有使用 gsl 的 C 函数的 Java JNI。

java - 无法让 JdbcTemplate 回滚

java - 抑制 Apache Tomcat stdout 上的警告

java - Android getParentFragment() 在 fragment 内的 ViewPager 中返回 null

java - JNI 对象指针

c++ - Android JNI——线程同步