Android 11读取本地文件 权限

在 Android 11 中发生了变化......您必须请求此许可

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

在你的 MainActivity 中

if (Build.VERSION.SDK_INT >= 30){
        if (!Environment.isExternalStorageManager()){
            Intent getpermission = new Intent();
            getpermission.setAction(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
            startActivity(getpermission);
        }
    }
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android应用开发中,如果需要读取本地文件,可以通过JNI(Java Native Interface)来实现。 JNI是用于在Java代码与本地代码(C/C++)之间进行交互的一种技术。通过JNI,我们可以在Java代码中调用本地代码来访问系统底层资源,例如读取本地文件。 以下是一种实现方式: 1. 创建一个Java类,用于加载本地库文件和声明本地方法。例如: ``` public class NativeFileReader { static { System.loadLibrary("native-library"); } public static native String readFile(String filePath); } ``` 2. 在本地代码中实现读取文件的方法,并将内容转换为字符串返回。例如: ``` #include <jni.h> #include <stdio.h> JNIEXPORT jstring JNICALL Java_com_example_NativeFileReader_readFile(JNIEnv* env, jclass clazz, jstring filePath) { const char* filePathStr = (*env)->GetStringUTFChars(env, filePath, NULL); FILE* file = fopen(filePathStr, "r"); if (file == NULL) { return NULL; } fseek(file, 0, SEEK_END); long fileSize = ftell(file); fseek(file, 0, SEEK_SET); char* buffer = malloc(fileSize + 1); fread(buffer, 1, fileSize, file); buffer[fileSize] = '\0'; fclose(file); (*env)->ReleaseStringUTFChars(env, filePath, filePathStr); jstring result = (*env)->NewStringUTF(env, buffer); free(buffer); return result; } ``` 3. 将本地代码编译为动态库文件,例如libnative-library.so。 4. 将生成的动态库文件放置到项目的jniLibs目录中。 5. 在Java代码中调用NativeFileReader类的readFile方法,传入要读取文件路径,就可以得到读取到的文件内容。例如: ``` String filePath = "/sdcard/example.txt"; String fileContent = NativeFileReader.readFile(filePath); ``` 这样,就能够通过JNI来读取本地文件了。需要注意的是,为了保证文件读取权限,需要在AndroidManifest.xml文件中添加文件读写权限的声明。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值