我試圖在.Net桌面應用程序和Xamarin.Forms Android應用程序之間交換文件。我真的很難獲得資源和幫助,所以我想要這個問題也包裝一些東西了 - 對於其他感興趣的用戶(不僅是Xamarin Forms)Xamarin.Forms Android文件交換,MTP
到目前爲止,我必須閱讀.Net C#中的文件和文件夾 Christophe Geers' Blog和Fun with MTP因爲寫作沒有在我所有的設備Windows File Stuff by Flauschig
的工作,在這堵牆的Xamarin.Forms身邊,我第一次絆倒Xamarin doc和A lib to store from pcl code也Plugin.Permissions。
以上所有這些來源我都能夠在Android(三星A5,Android 6.0)上閱讀和編寫工作。 隨着this description on filestructure我想下面的代碼總是會得到一個有效的路徑:
public string GetExternalFolder()
{
GetPermission();
var externalFolder = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.Path, "Android", "data", "com.exampledom.appname", "files");
if (!Directory.Exists(externalFolder))
CreateFolderStructure();
return externalFolder;
}
GetPermission()從Plugin.Permissions取,如果未獲准將拋出異常。
CreateFolderStructure()使用pcl.storage - 看起來像這樣。
private async void CreateFolderStructure()
{
try
{
IFolder rootFolder = await FileSystem.Current.GetFolderFromPathAsync(Path.Combine(Android.OS.Environment.ExternalStorageDirectory.Path));
var subpaths = new[] {"Android", "data", "com.exampledom.appname", "files"};
foreach (var dir in subpaths)
{
if (!string.IsNullOrEmpty(dir))
rootFolder = await rootFolder.CreateFolderAsync(dir, CreationCollisionOption.OpenIfExists);
}
Log("Folder structure created!");
}
catch (Exception e)
{
Log("Folder structure cannot be created!");
Console.WriteLine("Failed to log! " + e.Message);
}
}
好了,現在的問題是: 被此方法創建只有我測試了一個設備(概念驗證)上創建的文件夾 - 所有其他(如三星A3,在Android 6.0)沒有任何反應(無助開發者的證明)。 A reboot不是解決方案。 也在設備上工作 - 按預期請求權限。其他設備上沒有權限請求。
爲什麼在安裝過程中沒有創建所需的文件夾?似乎所有其他應用程序確實有這樣一個文件夾「Android/data/com.exampledom.appname/files」。
我缺少什麼?它似乎很難導入/導出到android。
再次:首先,我想要一些爲什麼在安裝apk時不會創建結構(這在android中似乎是必需的)?所有其他應用程序確實在'Android/data'下有相應的文件夾。我必須做些什麼來實現這一點。任何幫助讚賞。 – smack