配置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);
}