Jak wskazuje tytuł, mam problem z zapisaniem plików w pamięci zewnętrznej. Moje urządzenie do debugowania to Nexus 5. Chodzi o to, że jestem w stanie dokładnie odczytać pliki z urządzenia (próbowałem z tymi w folderze pobierania), ale nie mogę ich zapisać. Mam świadomość, że muszę to zrobić, gdy urządzenie nie jest podłączone do komputera. Ale to też nie działa.Zapisywanie plików w pamięci zewnętrznej w przypadku awarii systemu Android
W rzeczywistości próbowałem odczytać stan karty SD przed jej zapisaniem (co oczywiście nie zadziałało). Stan pokazał się jako "zamontowany", gdy urządzenie było podłączone do mojego komputera, lub nie. I porównałem stan do Environment.MEDIA_MOUNTED_READ_ONLY
i Environment.MEDIA_MOUNTED
bez powodzenia. Moje urządzenie nie znajduje się w żadnym z tych stanów.
Jedna rzecz, którą musisz wiedzieć, to to, że mój telefon nie ma zewnętrznej karty SD, ponieważ jest to telefon wewnętrzny. Powoduje to, że moje urządzenie ma katalog "/ storage/emulated/0/..." dla zewnętrznej pamięci masowej.
Muszę też podkreślić, że wdrożyliśmy następujące tagi w moim Android manifeście:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE"/>
Nie mam żadnej wskazówki co do tego, co może się dziać. Kolejną rzeczą, która może pomóc, jest to, że próbowałem zarządzać plikami z winrar (dla Androida) i byłem w stanie usunąć pliki z urządzeniem podłączonym do mojego komputera, jak również bez jego połączenia. Więc nie wiem co robić.
Kod, którego używam do napisania pliku, jest następujący. Należy pamiętać, że powinien przeczytać plik obrazu (co robi), przekształcić go w ciąg, przekonwertować go z powrotem do obrazu, a następnie zapisać go do folderu Downloads:
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + "/base_image.jpg");
// Reading a Image file from file system
FileInputStream imageInFile = new FileInputStream(file);
byte imageData[] = new byte[(int) file.length()];
imageInFile.read(imageData);
// Converting Image byte array into Base64 String
String imageDataString = encodeImage(imageData);
// Converting a Base64 String into Image byte array
byte[] imageByteArray = decodeImage(imageDataString);
File newFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "converted_image.jpg");
//Write a image byte array into file system
FileOutputStream imageOutFile = new FileOutputStream(newFile);
imageOutFile.write(imageByteArray);
imageInFile.close();
imageOutFile.close();
Co należy zrobić?
Czy jesteś pewien, że plik zostanie zapisany w pliku? – Raghunandan
Tworzę nowy plik. Lub przynajmniej to właśnie próbuję. Otrzymuję wyjątek File Not Found, próbując go utworzyć i błąd EACCES (Odmowa uprawnień). To jest mój główny problem tutaj. czy robię coś źle? – blastervla