diff --git a/MonoGame.Framework/Platform/Media/Song.Android.cs b/MonoGame.Framework/Platform/Media/Song.Android.cs index 12ddcc67ba9..74409c7321d 100644 --- a/MonoGame.Framework/Platform/Media/Song.Android.cs +++ b/MonoGame.Framework/Platform/Media/Song.Android.cs @@ -78,15 +78,22 @@ internal void Play(TimeSpan? startPosition) if (assetUri != null) { + // Check if we have a direct asset URI. _androidPlayer.SetDataSource(MediaLibrary.Context, this.assetUri); } + else if (_name.StartsWith("file://")) + { + // Otherwise, check if this is a file URI. + _androidPlayer.SetDataSource(_name); + } else { - var afd = Game.Activity.Assets.OpenFd(_name); - if (afd == null) - return; - - _androidPlayer.SetDataSource(afd.FileDescriptor, afd.StartOffset, afd.Length); + // Otherwise, assume it's a file path. (This might throw if the file doesn't exist) + var afd = Game.Activity?.Assets?.OpenFd(_name); + if (afd != null) + { + _androidPlayer.SetDataSource(afd.FileDescriptor, afd.StartOffset, afd.Length); + } }