
我的创建方法如下所示:
@OverrIDepublic voID create () { batch = new SpriteBatch(); fileHandle file = Gdx.files.external("file.txt"); file.writeString("My god, it's full of stars", false);}我还包括:
<uses-permission androID:name="androID.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission androID:name="androID.permission.READ_EXTERNAL_STORAGE"/>我得到的异常是这样的:
02-13 14:45:51.858 12439-12466/com.sNowdevs.tweetIEbirds E/AndroIDRuntime: FATAL EXCEPTION: GLThread 1120Process: com.sNowdevs.tweetIEbirds, PID: 12439com.badlogic.gdx.utils.GdxRuntimeException: Error writing file: file.txt (External) at com.badlogic.gdx.files.fileHandle.writeString(fileHandle.java:353) at com.badlogic.gdx.files.fileHandle.writeString(fileHandle.java:339) at com.sNowdevs.tweetIEbirds.TweetIEBirdsGame.create(TweetIEBirdsGame.java:22) at com.badlogic.gdx.backends.androID.AndroIDGraphics.onSurfaceChanged(AndroIDGraphics.java:254) at androID.opengl.GLSurfaceVIEw$GLThread.guardedRun(GLSurfaceVIEw.java:1519) at androID.opengl.GLSurfaceVIEw$GLThread.run(GLSurfaceVIEw.java:1240) Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Error writing file: file.txt (External) at com.badlogic.gdx.files.fileHandle.writer(fileHandle.java:330) at com.badlogic.gdx.files.fileHandle.writeString(fileHandle.java:350) at com.badlogic.gdx.files.fileHandle.writeString(fileHandle.java:339) at com.sNowdevs.tweetIEbirds.TweetIEBirdsGame.create(TweetIEBirdsGame.java:22) at com.badlogic.gdx.backends.androID.AndroIDGraphics.onSurfaceChanged(AndroIDGraphics.java:254) at androID.opengl.GLSurfaceVIEw$GLThread.guardedRun(GLSurfaceVIEw.java:1519) at androID.opengl.GLSurfaceVIEw$GLThread.run(GLSurfaceVIEw.java:1240) Caused by: java.io.fileNotFoundException: /storage/emulated/0/file.txt: open Failed: EACCES (Permission denIEd) at libcore.io.IoBrIDge.open(IoBrIDge.java:452) at java.io.fileOutputStream.<init>(fileOutputStream.java:87) at com.badlogic.gdx.files.fileHandle.writer(fileHandle.java:322) at com.badlogic.gdx.files.fileHandle.writeString(fileHandle.java:350) at com.badlogic.gdx.files.fileHandle.writeString(fileHandle.java:339) at com.sNowdevs.tweetIEbirds.TweetIEBirdsGame.create(TweetIEBirdsGame.java:22) at com.badlogic.gdx.backends.androID.AndroIDGraphics.onSurfaceChanged(AndroIDGraphics.java:254) at androID.opengl.GLSurfaceVIEw$GLThread.guardedRun(GLSurfaceVIEw.java:1519) at androID.opengl.GLSurfaceVIEw$GLThread.run(GLSurfaceVIEw.java:1240) Caused by: androID.system.ErrnoException: open Failed: EACCES (Permission denIEd) at libcore.io.Posix.open(Native Method) at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186) at libcore.io.IoBrIDge.open(IoBrIDge.java:438) at java.io.fileOutputStream.<init>(fileOutputStream.java:87) at com.badlogic.gdx.files.fileHandle.writer(fileHandle.java:322) at com.badlogic.gdx.files.fileHandle.writeString(fileHandle.java:350) at com.badlogic.gdx.files.fileHandle.writeString(fileHandle.java:339) at com.sNowdevs.tweetIEbirds.TweetIEBirdsGame.create(TweetIEBirdsGame.java:22) at com.badlogic.gdx.backends.androID.AndroIDGraphics.onSurfaceChanged(AndroIDGraphics.java:254) at androID.opengl.GLSurfaceVIEw$GLThread.guardedRun(GLSurfaceVIEw.java:1519) at androID.opengl.GLSurfaceVIEw$GLThread.run(GLSurfaceVIEw.java:1240) 我将Nexus 5与AndroID 6棉花糖一起使用进行测试.
我经过搜索发现,AndroID 6使用了运行时权限,但是libGDX开发人员说它甚至可以在AndroID 6上运行.是否有修复程序,具有或不具有运行时权限?
解决方法:
我通过检查用户是否已授予外部存储的权限来解决问题,如果未通过以下方式授予用户请求权限,则可以解决此问题:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (this.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { this.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, WRITE_REQUEST_CODE); }所有这些都是androID特定的代码,因此位于AndroIDLauncher类中.
总结以上是内存溢出为你收集整理的android-无法使用LibGDX对外部存储进行读写 *** 作全部内容,希望文章能够帮你解决android-无法使用LibGDX对外部存储进行读写 *** 作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)