“无法存储屏幕截图”

时间:2018-06-20 11:48:43

标签: c# android unity3d

我正在使用`“ ScreenCapture.CaptureScreenshot(pathToSave)”截取屏幕截图,并且可以很好地实现统一工作,即我的代码:

string timeStemp = System.DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss");
string fileName = "Screenshoot" + timeStemp + ".png";    
string pathToSave = Application.persistentDataPath + "/" + fileName;

但是当我构建游戏并在Android上运行它时,它无法正常工作。 使用“ Android devise monitor”,我可以看到以下错误: enter image description here

关于如何解决此问题的任何想法?

2 个答案:

答案 0 :(得分:0)

这是权限问题吗(因为您可以看到错误提示它无法存储,不接受它)?也许您可以尝试更改输出目录(将其放在应用程序的文件夹中很奇怪)

请求存储权限(请注意,您可能希望向android 6.0以上版本的用户请求访问权限)

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

您还可以检查空间

/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        return true;
    }
    return false;
}

/* Checks if external storage is available to at least read */
public boolean isExternalStorageReadable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state) ||
        Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        return true;
    }
    return false;
}

答案 1 :(得分:0)

只想解决问题(最好迟到再也没有)。 我使用了以下免费的“资产存储”插件:[https://assetstore.unity.com/packages/tools/integration/android-runtime-permissions-117803][1]

用一个简单的代码(检查权限并要求他们)就拥有了我所需要的一切,起初它不起作用,在与编写代码的另一个好人聊天之后,我们发现删除了:”清单中权限行末尾的android:maxSdkVersion =“ 18”“使其生效。现在,我可以请求权限。谢谢大家!