Chciałbym uzyskać pełną ścieżkę do pliku z identyfikatora URI. URI nie jest obrazem, ale plikiem muzycznym, ale jeśli zrobię to tak jak rozwiązanie MediaStore, nie zadziała, jeśli użytkownik aplikacji wybierze np. Astro jako przeglądarkę zamiast odtwarzacza muzyki. Jak to rozwiązać?
100
content://
lub jakikolwiek inny Uri nie będący plikiem.Metoda PathUtil będzie działać tylko w poniższym oreo, a jeśli to oreo, to prawdopodobnie ulegnie awarii, ponieważ w oreo nie otrzymamy identyfikatora, ale całą ścieżkę w data.getData (), więc wszystko, co musisz zrobić, to utworzyć plik z uri i pobierz jego ścieżkę z getPath () i podziel ją. poniżej znajduje się działający kod: -
Powyższy kod będzie działał w oreo i jeśli jest poniżej oreo to PathUtil będzie działał. Dzięki!
PathUtil.java
źródło
Uzyskaj ścieżkę z URI Użyj poniższej klasy dla wszystkich wersji Androida. uzyskać dostęp do dowolnego typu pliku .
źródło
Spróbuj tego.
źródło
null
Możesz użyć get File path z różnych wersji SDk
Użyj do tego RealPathUtils
** Teraz pobierz ścieżkę do pliku z URI **
źródło
jedna z odpowiedzi, która istnieje na bieżącej stronie ( this ), jest poprawna, ale zawiera błędy. na przykład nie będzie działać na urządzeniach z API 29+. Zaktualizuję powyższy kod i opublikuję jego nową wersję. Myślę, że ten post powinien być oznaczony jako ostateczna odpowiedź.
Zaktualizowany kod: ( Dodano obsługę WhatsApp )
źródło
w pliku build.gradle dodaj to
Teraz dzwoń
FileUtils.getPath(context, uri);
ze swojej głównej klasy.źródło
Wiem, że na to już udzielono odpowiedzi, ale w komentarzach znalazłem kilka problemów. Znalazłem świetne, niezawodne rozwiązanie rozwidlone stąd
używać go
File file=FileUtils.getFile(uri);
źródło
Fragment kodu po otrzymaniu ścieżki do pliku.
Bellow to klasa, do której można uzyskać dostęp, tworząc nowy obiekt. będziesz musiał również dodać do zależności w stopniach
implementation 'org.apache.directory.studio:org.apache.commons.io:2.4'
źródło
Aby uzyskać jakąkolwiek ścieżkę do pliku, użyj tego (pobranego z https://github.com/iPaulPro/aFileChooser )
źródło
Trudno mi było to rozgryźć na platformie Xamarin. Z powyższych sugestii wyszedłem na to rozwiązanie.
źródło
Android 7.0
Column_Index jest-1
podczas wybierania pliku przy użyciuActionContentGet
i wpisywaniu*/*
powiedzmy PDFOdpowiedź od @SAParkhid na kotlin.
źródło
źródło