I la nostra app (Xamarin C#) scarichiamo i file da un server. Al termine di un download succeful otteniamo l'URI per il file appena scaricato e dalla URI otteniamo il percorso del file:Android 6 get percorso per il file scaricato
Android.Net.Uri uri = downloadManager.GetUriForDownloadedFile(entry.Value);
path = u.EncodedPath;
In Android 4.4.2 e Android 5 percorso uri e simile a questa:
uri="file:///storage/emulated/0/Download/2.zip"
path = u.EncodedPath ="/storage/emulated/0/Download/2.zip"
Abbiamo quindi utilizzare percorso per elaborare il file. Il problema è che in Android 6 (su un vero e proprio telefono Nexus) otteniamo una completamente diversa uri e percorso:
uri="content://downloads/my_downloads/2802"
path="/my_downloads/2802"
Questo rompe il mio codice lanciando un'eccezione FileNotFound. Si noti che il file scaricato esiste ed è nella cartella Download. Come posso utilizzare l'URI che ottengo da Android 6 per ottenere il percorso file corretto in modo che possa accedere al file ed elaborarlo?
Grazie, [email protected]
Questo è stato costruito con SDK 22 – user1523271
provato sia con SDK 22 e 23, lo stesso risultato – user1523271