1.权限代码,确认已经获取到权限:
private void getPer() {
String[] pers={
Permission.READ_MEDIA_AUDIO,Permission.READ_MEDIA_VIDEO,
Permission.READ_MEDIA_IMAGES,Permission.READ_MEDIA_VISUAL_USER_SELECTED};
XXPermissions.with(this)
// 申请单个权限
.permission(pers)
// 申请多个权限
// 设置权限请求拦截器(局部设置)
//.interceptor(new PermissionInterceptor())
// 设置不触发错误检测机制(局部设置)
//.unchecked()
.request(new OnPermissionCallback() {
@Override
public void onGranted(@NonNull List<String> permissions, boolean allGranted) {
if (!allGranted) {
// toast("获取部分权限成功,但部分权限未正常授予");
ToastUtils.showShort("获取部分权限成功,但部分权限未正常授予");
}
// toast("获取录音和日历权限成功");
ToastUtils.showShort("获取权限成功");
}
@Override
public void onDenied(@NonNull List<String> permissions, boolean doNotAskAgain) {
if (doNotAskAgain) {
// toast("被永久拒绝授权,请手动授予录音和日历权限");
// 如果是被永久拒绝就跳转到应用权限系统设置页面
XXPermissions.startPermissionActivity(Temp2Activity.this, permissions);
} else {
// toast("获取录音和日历权限失败");
}
ToastUtils.showShort("获取权限失败");
}
});
}
2.读取txt文件内容:
findViewById(R.id.btn_read).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
///storage/emulated/0/My1624/sea.jpg
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File(sdCard.getAbsolutePath() + "/My1624/aaa.txt");
// File dir = new File(sdCard.getAbsolutePath() + "/My1624/sea.jpg");
String absolutePath = dir.getAbsolutePath();
// Log.d("1629","dir= "+absolutePath);
String text = readTxt(dir.getAbsolutePath());
Log.d("1645","text= "+text);
}
});
需要在 AndroidManifest 申请读写sdka权限,如果你还需要直接使用sd卡绝对路径访问文件,还需要在 application 标签下添加
并且需要动态申请sd卡读取权限