配置AndroidManifest 文件
在Assets 目录下查找AndroidManifest 文件,添加权限声明,在application 节点中添加requestLegacyExternalStorage 属性。
<!-- 权限声明 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application android:requestLegacyExternalStorage="true">...</application>
权限检查及申请
Android 6 及以上版本需要动态申请读写权限。
if (!Permission.HasUserAuthorizedPermission(Permission.ExternalStorageRead))
{
Permission.RequestUserPermission(Permission.ExternalStorageRead);
}
yield return new WaitUntil(() => Permission.HasUserAuthorizedPermission(Permission.ExternalStorageRead));
if (!Permission.HasUserAuthorizedPermission(Permission.ExternalStorageWrite))
{
Permission.RequestUserPermission(Permission.ExternalStorageWrite);
}
yield return new WaitUntil(() => Permission.HasUserAuthorizedPermission(Permission.ExternalStorageWrite));
*开启权限后需重启软件。
文件目录路径
AndroidJavaClass androidJavaClass = new AndroidJavaClass("android.os.Environment");
AndroidJavaObject androidJavaObject = androidJavaClass.CallStatic<AndroidJavaObject>("getExternalStorageDirectory");//根目录
/* Downloads 目录
* AndroidJavaObject androidJavaObject = androidJavaClass.CallStatic<AndroidJavaObject>("getExternalStoragePublicDirectory", androidJavaClass.GetStatic<string>("DIRECTORY_DOWNLOADS"));
*/
path = androidJavaObject.Call<string>("getAbsolutePath");
filePath = Path.Combine(path, fileName);
写入
try
{
File.WriteAllText(filePath, contents);
}
catch (Exception e)
{
}
//[Serializable]
//public class SaveData
//{
// public string createTime;
// public string contents;
//}
//try
//{
// BinaryFormatter bf = new BinaryFormatter();
// FileStream file = File.Create(filePath);
// SaveData data = new SaveData()
// {
// createTime = DateTime.Now.ToString(),
// contents = "The Life Of A Showgirl available Oct. 3"
// };
// bf.Serialize(file, data);
// file.Close();
//}
//catch (Exception e)
//{
//}
读取
if (File.Exists(filePath))
{
contents = File.ReadAllText(filePath);
//BinaryFormatter bf = new BinaryFormatter();
//FileStream file = File.Open(filePath, FileMode.Open);
//SaveData data = (SaveData)bf.Deserialize(file);
//file.Close();
//Debug.Log(data.contents);
}