5

Zmiany, takie jak zmiana nazwy pliku wywołanego przez aplikację, pojawiają się tylko w interfejsie USB-MTP po ponownym uruchomieniu urządzenia z systemem Android lub po rejestracji nowy plik na MediaScanner nich jak ten (patrz Trigger mediascanner on specific path (folder), how to?):MediaScannerConnection # scanFile konwertuje katalogi do plików podczas uzyskiwania dostępu do nich przez USB-MTP na Androidzie 5 Lollipop

file.renameTo(newFile);  
MediaScannerConnection.scanFile(context, 
     new String[] { newFile.getAbsolutePath() }, null, null); 

USB MTP służy do uzyskania dostępu do przechowywania android urządzenia za pośrednictwem portu USB. Na przykład. z Eksploratorem Windows.

Jednak z Sony Xperia Tablet Z (SGP321) pod Androida 5.0.2 (Build 10.6.A.0.454) Teczki dostarczane w newFile staną się plik z 4KB. Nie jestem już w stanie uzyskać dostępu do struktury folderów przy użyciu Eksploratora Windows, ani też nie mogę skopiować pliku na mój komputer. Nawet po ponownym uruchomieniu tabletu! To samo urządzenie z Androidem 4.4.4 nie pokazuje tego zachowania. Wygląda na to, że tylko widok USB-MTP jest uszkodzony. Struktura plików dostępna przez aplikację dla systemu Android nadal wygląda dobrze.

Pytanie: Czy to zachowanie jest błędem, czy też zaimplementowałem je niepoprawnie? Jaka byłaby właściwa implementacja?

Co Próbowałem tak daleko, aby rozwiązać ten problem:

  1. Moje bieżące obejście jest uniknięcie scanFile dla katalogów.
  2. Mogę konwertować pliki z powrotem do katalogów, zmieniając ich nazwę za pomocą aplikacji na Androida bez numeru MediaScannerConnection#scanFile. Po ponownym uruchomieniu komputera mogę ponownie uzyskać dostęp do katalogu w Eksploratorze Windows.
  3. Zmiana nazw plików za pomocą Eksploratora Windows, które faktycznie są katalogami, nie powoduje ich przywrócenia. Nawet po restarcie.
  4. Linia ta, jak sugerowano w https://stackoverflow.com/a/21918085/433718 nie odświeżyć widok USB MTP, ale również nie konwertować galerii katalogi do plików:

    context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, 
          Uri.fromFile(newFile.getParentFile())); 
    
  5. Może powiązane:

+2

skończyło się tworząc manekina plik tekstowy w każdym katalogu, który chciałem uczynić widocznym, i użyj pliku scanFile na pliku. –

+0

Czy masz kolejną poprawkę, aby pokazać folder z udziału MTP usb? – reaper

Odpowiedz

8

skończyło się tworząc obojętne plik tekstowy w każdym katalogu Chciałem, aby widoczny i używać ScanFile na pliku.

1) utworzyć katalog, ale nie "Scan" katalogi

2) skopiuj plik do katalogu

3) Uruchom ScanFile na filePath

MediaScannerConnection.scanFile (_application, new String[] { filePath }, null, null); 
Powiązane problemy