Laden...

Music-Verzeichnis auf Handy in Maui-App

Letzter Beitrag vor einem Jahr 4 Posts 605 Views
Music-Verzeichnis auf Handy in Maui-App

Ich schreibe an einer Maui-App für ein Android-Handy. In Maui bin ich sehr unerfahren.

Die App funktioniert soweit auch schon recht gut.

Aber ich habe das Problem, dass es mir nicht gelingt auf ein Standardverzeichnis, z.B. das standardmäßige Verzeichnis "Music" zuzugreifen.

Ich versuche es mit 'Environment.GetFolderPath(Environment.SpecialFolder.MyMusic)'. Da wird auch ein Verzeichnis zurückgegeben:

"/data/user/0/com.companyname.franzmaui/files/Music"

(Das Projekt heißt 'franzmaui')

Aber das ist nicht das sichtbare Music-Verzeichnis. Ich kann in das mir zurückgegebene Verzeichnis auch schreiben oder z.B. neue Unterordner erzeugen. Aber auch die sind anschließend nicht zu finden.

Wie komme ich zu der korrekten Pfadangabe?

Danke schon mal!

Damit greifst du bisher auf den internen (App-bezogenen) Speicher zu, s.a. Dateispeicherung und Dateizugriff mit Xamarin.Android sowie Externer Speicher.

Da sich ab API Level 24 Android 7 der Zugriff auf externen Speicher geändert hat (Stichwort: Storage Access Framework (SAF)), ist der Zugriff darauf nicht mehr so einfach.

Aber gefunden habe ich dazu das GitHub-Projekt SafMaui (How to read/write from/to External Storage with .NET MAUI?).

Vielen Dank für den Tip.

Das Verzeichnis habe ich jetzt gefunden.

Wie Du schon angedeutet hast, scheitert es jetzt daran, die Datein dort auch zu lesen.

... mal sehen, was das wird;-)

Ich mach das in Xamarin.Forms so, sollte in Maui genauso funktionieren :

Nicht vergessen im Manifest die Berechtigungen zu setzen !

var customFileType = new FilePickerFileType(new Dictionary<DevicePlatform, IEnumerable<string>>
{
	{ DevicePlatform.iOS, new[] { "geojson", "gpx", "kml" } },
	{ DevicePlatform.Android, new[] { "geojson", "gpx", "kml" } }
});
var options = new PickOptions
{
	PickerTitle = "Eine Gpx-, Kml- oder Geojson-Datei auswählen"
	FileTypes = customFileType,
};
IEnumerable<FileResult> results = await FilePicker.PickMultipleAsync(options);
if (results == null) return;
foreach (FileResult result in results)
{
	if (result.FullPath.ToLower().EndsWith(".kml"))
	{
		...
	}
}

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3