Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity3d 2020.3.10f1和Android 10-要通过从下载文件夹读取我的GPX文件来访问它们吗_C#_Android_Unity3d - Fatal编程技术网

C# Unity3d 2020.3.10f1和Android 10-要通过从下载文件夹读取我的GPX文件来访问它们吗

C# Unity3d 2020.3.10f1和Android 10-要通过从下载文件夹读取我的GPX文件来访问它们吗,c#,android,unity3d,C#,Android,Unity3d,请给出建议,因为它与Android 8一起工作。在安卓10设备上运行它 导致“访问被拒绝”作为异常。需要请求哪些权限,只是为了读取下载文件夹并进一步读取GPX,而它不是本机MIME类型 请发送一个简短的示例,如何在Unity C#Script中设置适当的权限 提前感谢,, 奥利弗 试试看 { foreach(System.IO.Directory.GetFiles(“/storage/emulated/0/download”)中的字符串文件) { if(file.Substring(file.L

请给出建议,因为它与Android 8一起工作。在安卓10设备上运行它 导致“访问被拒绝”作为异常。需要请求哪些权限,只是为了读取下载文件夹并进一步读取GPX,而它不是本机MIME类型

请发送一个简短的示例,如何在Unity C#Script中设置适当的权限

提前感谢,, 奥利弗

试试看
{
foreach(System.IO.Directory.GetFiles(“/storage/emulated/0/download”)中的字符串文件)
{
if(file.Substring(file.Length-4).ToUpper()==“.GPX”)
{
text.GetComponent().text+=文件+“\r\n”;
}
}
text.GetComponent().text=“将GPX文件放在此处:\r\n“+”/storage/emulated/0/download”;
}
捕获(例外e)
{
text.GetComponent().text=“无法访问:”+e.Message.ToString();
}

是的,谢谢@blackapps。谢谢,雷内-

工作得很有魅力。。。对于Android 10 now;)

  • 我在播放器设置中启用了自定义主清单 这将导致激活Assets\Plugins\Android\Android manifest.xml

  • 在其中添加requestLegacyExternalStorage

     <manifest
     xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.unity3d.player"
     xmlns:tools="http://schemas.android.com/tools">
     <application android:requestLegacyExternalStorage="true">
         <activity android:name="com.unity3d.player.UnityPlayerActivity"
                   android:theme="@style/UnityThemeSelector">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
             <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
         </activity>
     </application>
    
    
    

  • 伟大的一天。。。谢谢

    这不是一个c#问题。Android 10无法正常启动。您应该在串行监视器端口上连接到android,检查启动时是否有错误,或者检查启动日志文件以查看是否有故障。@jdweng谢谢,我将异常直接输出到屏幕(在开发时),屏幕上显示:“拒绝访问路径/storage/simulated/0/下载”。我在->应用程序之外。persistentDataPath@jdweng我想解释一下为什么。。。清单中的作用域StorageRequest旧外部存储。您使用的是与运行c#应用程序的文件夹相关的相对路径:/storage/simulated/0/downloadrequestLegacyExternalStorage对Android 11没有影响。如果没有MANAGE_EXTERNAL_STORAGE权限,就不可能使用文件API访问文件系统的大部分部分(因此,此解决方案在Android 11+上不起作用)。Google Play不允许使用“管理外部存储”权限,除非开发者能够证明其使用的合理性。@yasirkula感谢您的贡献。如果你想打开下载文件夹中的任何文件。。。如何在11小时内完成?程序到底如何?你有一些代码样本吗…?最接近我的是,它允许你从任何地方(包括下载)选择指定mime类型的文件。它会自动将文件复制到temporaryCachePath,因为您无法使用文件API访问原始文件。缺点是:用户不局限于下载文件夹,他可以从任何他想要的地方选择文件,并且只允许一种mime类型,所以用户不能一次浏览所有文件类型。下载是一个特殊的文件夹。否则,我会推荐你。@yasirkula,谢谢,NativeFilePicker把我带到这里来,因为我没有管理GPX,因为它不是本地MIME类型。。。我的解决方案已经列出,效果很好。。。对于和。10
     <manifest
     xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.unity3d.player"
     xmlns:tools="http://schemas.android.com/tools">
     <application android:requestLegacyExternalStorage="true">
         <activity android:name="com.unity3d.player.UnityPlayerActivity"
                   android:theme="@style/UnityThemeSelector">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
             <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
         </activity>
     </application>