.Net Desktop App과 Xamarin.Forms Android 앱간에 파일을 교환하려고합니다. 정말 자원과 도움을받는 데 어려움을 겪었으므로이 질문을 다른 관심있는 사용자 (Xamarin Forms뿐 아니라)에게도 전달해달라고하십시오.Xamarin.Forms Android 파일 교환, MTP
지금까지 파일과 폴더를 .NET의 C#에서 읽어야했습니다. Christophe Geers' Blog 및 Fun with MTP와 쓰기는 벽의 Xamarin.Forms 측면에서 내 장치 Windows File Stuff by Flauschig
모두에서 작동하지 않았기 때문에 내가 먼저 Xamarin doc 및 A lib to store from pcl code 또한 Plugin.Permissions 비틀 거렸다.
위의 모든 소스를 통해 Android (Samsung A5, Android 6.0)에서 읽기 및 쓰기 기능을 사용할 수있었습니다.
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에서 가져 허가가 주어지지 않은 경우 예외가 발생합니다 : this description on filestructure와 나는 다음과 같은 코드가 항상 유효한 경로를 얻을 것이다 생각했다.
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, 안드로이드 6.0) (무기력한 개발자의 증거). reboot은 해결책이 아닙니다. 또한이 장치에서 작동합니다. - 권한이 예상대로 요청됩니다. 다른 장치에 대한 권한 요청이 없습니다.
설치 중에 원하는 폴더가 만들어지지 않는 이유는 무엇입니까? 다른 모든 앱에는 'Android/data/com.exampledom.appname/files'폴더가 있습니다.
무엇이 누락 되었습니까? 안드로이드로 가져 오기/내보내기가 너무 힘들 것 같습니다.
다시 말하지만, 처음에는 APK를 설치할 때 구조가 안드로이드에서 필수적으로 보이는 이유를 설명하고자합니다. 다른 모든 앱은 'Android/data'아래에 해당 폴더가 있습니다. 어떻게해야합니까? 어떤 도움을 주셔서 감사합니다. – smack