【xamarin】System.Environment.GetFolderPathメソッドにSystem.Environment.SpecialFolder各定数を指定した場合、Android7.0(Nougat)は何を返すのか

## Xamarinでストレージに書き込むディレクトリを取得したい

Xamarinでプラットフォーム共通の処理を書く場合、PCLではなく.NET Standardを使おう、ということになっている（？）ようです。
プラットフォームに関わらず必ず実装されているAPIだから個別実装が不要かつ互換性が保証されている、という理解でよいのかしら？

* [.NET Standard ライブラリを使用してコードを共有するには - Xamarin | Microsoft Docs](https://docs.microsoft.com/ja-jp/xamarin/cross-platform/app-fundamentals/net-standard?tabs=windows)


今回、ストレージにデータ書き込む（ファイル作成）処理を作りたくて、 書き込み先のパス取得には`System.Environment.GetFolderPath`メソッドに`System.Environment.SpecialFolder`列挙体を渡すのが無難そうに感じました。
ただ、この`System.Environment.SpecialFolder`列挙体、名前がすごくwinwinしておりまして、Androidの場合にどんなパスを返してくれるのか、皆目見当がつきませんので、実験した結果を記録しておきます。

誰かの参考になれば幸いです。

## 環境

* Androidエミュレータ
    * Android7.0(Nougat)
    * Nexus 5X

## コード

`System.Environment.SpecialFolder`で定義されている列挙体すべてで試してみます。
（定数じゃないですね。タイトルに偽りあり。。）

```C#
Console.WriteLine("Desktop: "                + System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop));
Console.WriteLine("Programs: "               + System.Environment.GetFolderPath(System.Environment.SpecialFolder.Programs));
Console.WriteLine("MyDocuments: "            + System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments));
Console.WriteLine("Personal: "               + System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal));
Console.WriteLine("Favorites: "              + System.Environment.GetFolderPath(System.Environment.SpecialFolder.Favorites));
Console.WriteLine("Startup: "                + System.Environment.GetFolderPath(System.Environment.SpecialFolder.Startup));
Console.WriteLine("Recent: "                 + System.Environment.GetFolderPath(System.Environment.SpecialFolder.Recent));
Console.WriteLine("SendTo: "                 + System.Environment.GetFolderPath(System.Environment.SpecialFolder.SendTo));
Console.WriteLine("StartMenu: "              + System.Environment.GetFolderPath(System.Environment.SpecialFolder.StartMenu));
Console.WriteLine("MyMusic: "                + System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyMusic));
Console.WriteLine("MyVideos: "               + System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyVideos));
Console.WriteLine("DesktopDirectory: "       + System.Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory));
Console.WriteLine("MyComputer: "             + System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyComputer));
Console.WriteLine("NetworkShortcuts: "       + System.Environment.GetFolderPath(System.Environment.SpecialFolder.NetworkShortcuts));
Console.WriteLine("Fonts: "                  + System.Environment.GetFolderPath(System.Environment.SpecialFolder.Fonts));
Console.WriteLine("Templates: "              + System.Environment.GetFolderPath(System.Environment.SpecialFolder.Templates));
Console.WriteLine("CommonStartMenu: "        + System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonStartMenu));
Console.WriteLine("CommonPrograms: "         + System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonPrograms));
Console.WriteLine("CommonStartup: "          + System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonStartup));
Console.WriteLine("CommonDesktopDirectory: " + System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonDesktopDirectory));
Console.WriteLine("ApplicationData: "        + System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData));
Console.WriteLine("PrinterShortcuts: "       + System.Environment.GetFolderPath(System.Environment.SpecialFolder.PrinterShortcuts));
Console.WriteLine("LocalApplicationData: "   + System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData));
Console.WriteLine("InternetCache: "          + System.Environment.GetFolderPath(System.Environment.SpecialFolder.InternetCache));
Console.WriteLine("Cookies: "                + System.Environment.GetFolderPath(System.Environment.SpecialFolder.Cookies));
Console.WriteLine("History: "                + System.Environment.GetFolderPath(System.Environment.SpecialFolder.History));
Console.WriteLine("CommonApplicationData: "  + System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonApplicationData));
Console.WriteLine("Windows: "                + System.Environment.GetFolderPath(System.Environment.SpecialFolder.Windows));
Console.WriteLine("System: "                 + System.Environment.GetFolderPath(System.Environment.SpecialFolder.System));
Console.WriteLine("ProgramFiles: "           + System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles));
Console.WriteLine("MyPictures: "             + System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyPictures));
Console.WriteLine("UserProfile: "            + System.Environment.GetFolderPath(System.Environment.SpecialFolder.UserProfile));
Console.WriteLine("SystemX86: "              + System.Environment.GetFolderPath(System.Environment.SpecialFolder.SystemX86));
Console.WriteLine("ProgramFilesX86: "        + System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFilesX86));
Console.WriteLine("CommonProgramFiles: "     + System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonProgramFiles));
Console.WriteLine("CommonProgramFilesX86: "  + System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonProgramFilesX86));
Console.WriteLine("CommonTemplates: "        + System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonTemplates));
Console.WriteLine("CommonDocuments: "        + System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonDocuments));
Console.WriteLine("CommonAdminTools: "       + System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonAdminTools));
Console.WriteLine("AdminTools: "             + System.Environment.GetFolderPath(System.Environment.SpecialFolder.AdminTools));
Console.WriteLine("CommonMusic: "            + System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonMusic));
Console.WriteLine("CommonPictures: "         + System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonPictures));
Console.WriteLine("CommonVideos:   "         + System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonVideos));
Console.WriteLine("Resources: "              + System.Environment.GetFolderPath(System.Environment.SpecialFolder.Resources));
Console.WriteLine("LocalizedResources: "     + System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalizedResources));
Console.WriteLine("CommonOemLinks: "         + System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonOemLinks));
Console.WriteLine("CDBurning: "              + System.Environment.GetFolderPath(System.Environment.SpecialFolder.CDBurning));

```

## 結果

※「PACKAGE_NAME」には「Androidマニフェスト - パッケージ名」が入ってます。

> Desktop: /data/user/0/PACKAGE_NAME/files/Desktop
> Programs: 
> MyDocuments: /data/user/0/PACKAGE_NAME/files
> Personal: /data/user/0/PACKAGE_NAME/files
> Favorites: 
> Startup: 
> Recent: 
> SendTo: 
> StartMenu: 
> MyMusic: /data/user/0/PACKAGE_NAME/files/Music
> MyVideos: /data/user/0/PACKAGE_NAME/files/Videos
> DesktopDirectory: /data/user/0/PACKAGE_NAME/files/Desktop
> MyComputer: 
> NetworkShortcuts: 
> Fonts: /data/user/0/PACKAGE_NAME/files/.fonts
> Templates: /data/user/0/PACKAGE_NAME/files/Templates
> CommonStartMenu: 
> CommonPrograms: 
> PrinterShortcuts: 
> CommonStartup: 
> CommonDesktopDirectory: 
> ApplicationData: /data/user/0/PACKAGE_NAME/files/.local/share
> PrinterShortcuts: 
> LocalApplicationData: /data/user/0/PACKAGE_NAME/files/.local/share
> InternetCache: 
> Cookies: 
> History: 
> CommonApplicationData: /usr/share
> Windows: 
> System: 
> ProgramFiles: 
> MyPictures: /data/user/0/PACKAGE_NAME/files/Pictures
> UserProfile: /data/user/0/PACKAGE_NAME/files
> SystemX86: 
> ProgramFilesX86: 
> CommonProgramFiles: 
> CommonProgramFilesX86: 
> CommonTemplates: /usr/share/templates
> CommonDocuments: 
> CommonAdminTools: 
> AdminTools: 
> CommonMusic: 
> CommonPictures: 
> CommonVideos: 
> Resources: 
> LocalizedResources: 
> CommonOemLinks: 
> CDBurning: 

## 所感

* かなりの割合で空が返るって。。
* 基本、内部ストレージのパスなのね
* 外部ストレージをいい感じに指定できる方法も知りたい

今日は以上です。