Much digging, but what I worked out is this...
It returns a list of mount points. Simple and not limited to one card. It works on all the devices that I have tried.
B4X:
Sub SDCards As List
Dim Result As List
Result.Initialize
Dim tr As TextReader
tr.Initialize(File.OpenInput("/proc","mounts"))
Dim line As String
Do While True
line = tr.ReadLine
If line = Null Then Exit
' cols: dev mount type options ......
Dim Col() As String = Regex.Split(" ",line)
' things to ignore
' put your false positive mount points here
If Col(1).StartsWith("/dev") Then Continue
If Col(1).StartsWith("/proc") Then Continue
If Col(1).StartsWith("/sys") Then Continue
If Col(1).StartsWith("/system") Then Continue
If Col(1).StartsWith("/firmware") Then Continue
If Col(1).StartsWith("/data") Then Continue
If Col(1).StartsWith("/mnt/shell") Then Continue
' vfat is what we are interested in, but my nexus 5 also uses fuse
If Col(2) = "vfat" OR Col(2) = "fuse" Then
Dim s As String = Col(1)
Result.Add(s)
End If
Loop
tr.Close
Return Result
End Sub
It returns a list of mount points. Simple and not limited to one card. It works on all the devices that I have tried.