【问题标题】:How to get android's internal memory root in Unity?如何在 Unity 中获取 android 的内存根?
【发布时间】:2019-10-22 12:38:24
【问题描述】:

我见过很多类似的问题,似乎很多人都想弄清楚,我找不到任何可以帮助我的答案。我正在使用 Unity 为 Android 制作一个简单的应用程序。

我想在android内部存储根目录下有一个文件夹,在我的电脑上它看起来像:huaweiP30\internal storage\videos\

我不需要向该文件夹写入任何内容,我希望我的应用列出该文件夹中的所有 mp4 视频并能够使用统一视频播放器播放它们,我希望用户能够轻松添加更多内容只需将视频放到该文件夹​​中即可。我在 Windows 上对其进行了测试,该应用程序已按预期完成工作,我现在需要做的就是为其提供正确的内部存储路径。 或者,如果这样做更容易,我可以让应用列出整个存储中的所有 .mp4 文件。

我尝试了所有可以在网上找到的答案,其中一些对其他人有用。到目前为止,没有什么对我有用。

使用它在 Windows 上进行测试,并完全按照我的意愿工作。我只是不知道应该用什么替换路径以使其从内部存储\视频\

string videosPath = "C:\Users\Admin\Downloads\";

string [] filePaths = Directory.GetFiles(videosPath,"*.mp4");

请帮助我解决它或找到替代解决方案,我很感激任何帮助。 提前致谢。

【问题讨论】:

  • @BooNonMooN 你的意思是像“file://videos/”这样的 URL 会导致内部存储根目录中的视频文件夹?晚上一到家就试试。
  • @BooNonMooN 我试过了,我试过 application.persistentDataPath 它返回 /storage/emulated/0/Android/data.... 但这没有帮助。当我使用 /storage/emulated/0/videos 时,它没有阅读我在那里的视频。我认为 android 使我的应用程序的内部存储成为私有的。但是所有的应用程序都可以访问我手机上的视频,所以它必须是可能的

标签: c# android unity3d


【解决方案1】:

这比我想象的要容易!我研究了这么长时间,当我所要做的只是 - 在我的手机设置中,我进入权限、内存并允许我的应用程序访问内存时,我已经发疯了。 那么就这么简单

string path = Application.persistentDataPath.Substring(0, Application.persistentDataPath.IndexOf("Android", StringComparison.Ordinal));
        videosPath = path +"/videos/";

获取路径。没有最后一点,当我添加时,我能够读取内部存储中的每个视频

SearchOption.AllDirectories

以下是如何让您的应用请求权限,这样您就不必手动允许它。 https://docs.unity3d.com/Manual/android-RequestingPermissions.html

示例代码是关于麦克风的,但您只需将其更改为 ExternalStorageRead/Write,不要担心“外部”,它也适用于内部存储器。

【讨论】:

  • 感谢您让我们知道。很高兴你修好了。
猜你喜欢
  • 1970-01-01
  • 2013-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
  • 2012-01-29
  • 2021-08-10
相关资源
最近更新 更多