Skocz do zawartości
Nutt

Pliki na karcie SD są niewidoczne po podłączeniu do PC i znikają po restarcie

    Rekomendowane odpowiedzi

    Nutt

    Witam,

    piszę aplikację, która ma eksportować wybrane informacje ze swojej bazy danych w odpowiednim formacie na kartę SD, aby móc je przeglądać na komputerze PC (np. w Excelu). Jednak pliki utworzone przez moją aplikację są widoczne tylko z poziomu Androida. Po podłączeniu smartfona do komputera jako dysku USB wspomnianych plików nie widać w explorerze. Dodatkowo po zrestartowaniu urządzenia z Androidem pliki te znikają całkowicie. To samo dzieje się z folderami.

    Czy ktoś spotkał się z tym problemem?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Cubaza

    Pokaż kod zapisujący utworzone pliki na karcie SD. Bo nic nie znika w przyrodzie, a już na pewno nie pliki bez powodu ;)

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Nutt

    Tutaj jest przykładowo robiony backup bazy danych na karte SD:

    try {

    File sd = Environment.getExternalStorageDirectory();

    if (sd.canWrite()) {

    String backupDBPath = File.separator + "DBbackup.db";

    File currentDB = getDatabasePath(DatabaseHelper.DATABASE_NAME);

    File backupDB = new File(sd, backupDBPath);

    backupDB.createNewFile();

    InputStream input = new FileInputStream(currentDB);

    OutputStream output = new FileOutputStream(backupDB);

    byte[] buffer = new byte[1024];

    int length;

    while ((length = input.read(buffer)) > 0) {

    output.write(buffer, 0, length);

    }

    output.flush();

    output.close();

    input.close();

    Toast.makeText(this, backupDB.toString(), Toast.LENGTH_LONG).show();

    }

    } catch (Exception e) {

    Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();

    }

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Cubaza

    Hej, a sprawdź ten kod:

    try {
    File sd = Environment.getExternalStorageDirectory(); // scieżka do karty SD
    File data = Environment.getDataDirectory(); // ścieżka katalogu data w telefonie
    
     if (sd.canWrite()) {
    	 String currentDBPath = DB_RESTORE_DIR + DB_NAME; //ścieżka do bazy danych wraz z nazwą bazy danych i rozszerzeniem
    	String backupDBPath = DB_BACKUP_DIR; // ścieżka gdzie ma być eksportowana baza danych 
    	File currentDB = new File(data, currentDBPath); // Tworzenie plików
    	File backupDB = new File(sd, backupDBPath);
    
    	 if (currentDB.exists()) {
    		 FileChannel src = new FileInputStream(currentDB).getChannel();
    		if(!backupDB.exists())
    			backupDB.mkdirs();
    		FileChannel dst = new FileOutputStream(backupDB+DB_NAME).getChannel();
    		dst.transferFrom(src, 0, src.size());
    		src.close();
    		dst.close();
    	}else{
    		Toast.makeText(getApplicationContext(), "Nie znalazlo bazy danych", Toast.LENGTH_LONG).show();
    	}
     }else{
    	Toast.makeText(getApplicationContext(), "Nie można zapisywać na karcie SD", Toast.LENGTH_LONG).show();
    }
    } catch (Exception e) {
    	Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();
     }
    

    Bo wiem, że mi bez problemu eksportowało bazy danych na kartę SD z takim kodem...

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Nutt

    To samo zachowanie. Jak przeglądam kartę na smartfonie to plik jest. Po podłączaniu do komputera pliku nie ma.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    EmilYo
    Po podłączaniu do komputera pliku nie ma.

    Na emulatorze ten sam problem?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Nutt

    Nie pomyślałem żeby to sprawdzić wcześniej, ale po utworzeniu pliku na emulatorze, wyłączeniu emulatora i zamontowaniu obrazu karty SD pliki są widoczne. Muszę to przetestować na innych rzeczywistych urządzeniach niż moje.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    EmilYo

    Tak jak myślałem. Problem jest z twoim urządzeniem. Jest trochę wątków o tym w internecie. Shit happens.

    Wysyłane z mojego Dell Streak 7 za pomocą Tapatalk 2

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    piotrpo

    Jeśli to 4x, to, żeby było widać na PC trzeba wymusić skatalogowanie tego nowego pliku. Jak wyjmiesz kartę i wrzucisz w zewnętrzny czytnik, to powinno tam być. Poszukaj pod MediaScannerConnection.scanFile() czy jakoś tak :)

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x