带有LibGDX的Android可以访问文件

问题描述

我在使用libGDX读取android文件时遇到问题

我正在使用:

  • 库GDX 1.9.11
  • Android Studio 4.2
  • Java 1.8.0_261
  • Andoid Gradle 4.0.1
  • 6.6级
  • Android SDK 30-3
  • Android 8.1 x86_64

首先,我已经在XML文件中实现了权限:

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

第二,我要求用户允许访问存储:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    while (this.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
        this.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},WRITE_REQUEST_CODE);
    while (this.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
        this.requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},READ_REQUEST_CODE);
}

((起初,我曾使用 while 来向用户询问他是否选择了拒绝,但这是行不通的,我没有选择不再询问,但对话框却没有再不会弹出)

它正常工作:https://i.stack.imgur.com/v57uG.png

创建文件夹并读写文件,我正在使用FileHandle:

public static boolean createFolder(String path) {
    final FileHandle file = Gdx.files.local(path);
    if (!file.exists()) {
        file.mkdirs();
        return true;
    }
    return false;
}
...
final FileHandle playerFile = Gdx.files.local("data/" + fileName + ".dat");
playerFile.writeString(content,false);
...
...
final FileHandle playerFile = Gdx.files.local("data/" + fileName + ".dat");
if (!playerFile.exists())
    return null;
final Scanner reader = new Scanner(playerFile.file());
...

问题是无法读取/写入:

type=1400 audit(0.0:11): avc: denied { write } for comm=656374696F6E207072696D6172795D name="perfd" dev="dm-0" ino=7181 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:shell_data_file:s0 tclass=dir permissive=0
type=1400 audit(0.0:10): avc: denied { read } for name="u:object_r:serialno_prop:s0" dev="tmpfs" ino=4438 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:serialno_prop:s0 tclass=file permissive=0

我已经阅读了这个主题Cant write nor read to/from external storage with LibGDX

但是我使用的是本地文件,所以我不知道它在哪里...

预先感谢您:)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)