【问题标题】:UnauthorizedAccessException on File.CreateTextFile.CreateText 上的 UnauthorizedAccessException
【发布时间】:2016-11-07 17:12:04
【问题描述】:

我再次调用 SO 的力量!

此代码出现异常:

        string filePath = "/sdcard/Download/test.txt";

        using (StreamWriter stream = File.CreateText(filePath))
        {
          //stuff that is currently never done
        }

“File.CreateText”在运行时产生以下错误:

UnauthorizedAccessException

我检查了我的AndroidManifest:指定了“WRITE_EXTERNAL_STORAGE”和“READ_EXTERNAL_STORAGE”。

我也尝试使用“Environment.ExternalStorageDirectory”代替当前路径,导致同样的错误。

诀窍是这段代码在另一个解决方案中工作。所以问题一定来自我的设置。哪一个可能是问题的根源?

【问题讨论】:

    标签: c# android writing


    【解决方案1】:

    啊啊啊,答案如下:

    代码没问题,是权限问题。我的测试代码在 Android Lollypop 下,但后来我在 Android Marshmallow 下的工作应用程序中使用了这段代码。

    在 Marshmallow 上,您需要在运行时明确指定一些重要权限,例如 BLUETOOTHBLUETOOTH_ADMIN .... 或 WRITE_EXTERNAL_STORAGE

    这是要添加到OnCreate 中的行:

            string[] Permissions = { Android.Manifest.Permission.WriteExternalStorage };
            int RequestLocationId = 0;
            RequestPermissions(Permissions, RequestLocationId);
    

    你可以通过回调OnRequestPermissionResult知道用户是否接受了权限。

    这是来自 android dev 的相关文章:

    https://developer.android.com/training/permissions/requesting.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多