Chciałbym, aby moja aplikacja archiwizowała aplikację DB na karcie SD. W moim kodzie sprawdzam, czy istnieje katalog canWrite()
, a jeśli nie, wyrzuć IOException
. W tym konkretnym przypadku próbuję skopiować plik db do katalogu głównego na karcie SD, ale program rzuca IOException
. Jak mogę zmienić uprawnienia do folderu/pliku, aby móc do niego pisać?Pozwolenie na zapis na karcie SD
Odpowiedz
Masz rację, że katalog kart SD to /sdcard
, ale nie powinieneś go kodować. Zamiast zadzwonić do Environment.getExternalStorageDirectory()
aby uzyskać katalogu:
File sdDir = Environment.getExternalStorageDirectory();
Jeżeli nie zostało to zrobione, trzeba będzie podać prawidłową aplikacja zgodę na zapis na karcie SD dodając linię poniżej Twój Manifest:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Sugerowana technika powyżej w odpowiedzi Dave'a pewnością jest to dobra praktyka projektowania i tak ostatecznie wymagana zgoda musi być ustawiona w pliku AndroidManifest.xml aby uzyskać dostęp do pamięci zewnętrznej.
Jednak Mono-esque sposób dodawania większości (jeśli nie wszystkich, nie pewnych) "opcji manifestu" to atrybuty klasy implementującej działanie (lub usługę).
Wtyczka Visual Studio Mono automatycznie generuje manifest, więc najlepiej go nie manipulować ręcznie (jestem pewien, że są przypadki, w których nie ma innej opcji).
Na przykład:
[Activity(Label="MonoDroid App", MainLauncher=true, Permission="android.permission.WRITE_EXTERNAL_STORAGE")]
public class MonoActivity : Activity
{
protected override void OnCreate(Bundle bindle)
{
base.OnCreate(bindle);
}
}
Obecnie widzę, że to ustawienie WRITE_EXTERNAL_STORAGE jest uprawnieniem użytkownika i jeśli ustawione tak, jak powyżej, pojawi się jako ustawienie aktywności (Android: uprawnienie), a nie uprawnienia użytkownika w pliku manifestu. Och, właśnie sobie przypomniałem, ustawiłeś użytkownika uprawnień użytkownika na właściwości projektu w VS (jest to lista wyboru wszystkich uprawnień). – samosaris
W rzeczywistości są to znaczniki "use-permission", a nie "user-permission", ale poza tym wszystko inne jest prawdziwe. – samosaris
Jedna rzecz absolutnie niezbędna to wywołanie , jeśli (Build.VERSION.SDK_INT> = 19) { MainActivity.get(). GetExternalFilesDirs (null); } // Aby uzyskać dostęp do SD/Android/data/your.package.name // Nie próbuj samodzielnie tworzyć pakietu. Niewykonanie tego połączenia powoduje, że mkdir lub mkdirs nie działają. – user2607942
- 1. Wydajność zapisu na karcie SD
- 2. Usunięcie folderu na karcie SD
- 3. Pozwolenie na odczyt danych z karty SD
- 4. strumienia wyjściowego android logcat na karcie SD
- 5. Wyświetl wszystkie muzykę na karcie SD
- 6. Android 4.4 KitKat folderu na karcie SD
- 7. Odczyt/zapis danych binarnych na SD przy użyciu Arduino
- 8. Android - Zapisywanie pobranego obrazu z adresu URL na karcie SD
- 9. Rozpakuj spakowany plik na karcie SD w aplikacji Android
- 10. Android - usuwaj pliki na karcie SD po odinstalowaniu
- 11. Przechowuj obraz bitmapowy na karcie SD w Androidzie
- 12. Udostępnianie obrazu android w ImageView bez zapisywania na karcie SD
- 13. Sprawdź, czy jest wystarczająca pamięć na karcie SD programowo
- 14. Ponownie uruchom usługę dla aplikacji na karcie SD Po wymianie karty SD
- 15. Pozwolenie na mikrofon
- 16. Zapisywanie na Androidzie Bitmapy na kartę SD
- 17. Jak zapisać obraz na karcie SD na przycisku Kliknij przycisk android
- 18. Zapis na szynach konsolę
- 19. Pozwolenie na CocoaPods/Specs.git odmówiono
- 20. Zapis Dns wskazujący na folder na serwerze
- 21. Bonjour/DNS-SD na Windows
- 22. Wspornik zapis na liczbach Ruby
- 23. Jak wyświetlić listę wszystkich plików i folderów znajdujących się na karcie SD
- 24. jak uzyskać dostęp do plików w telefonie lub na karcie pamięci SD
- 25. Android: dobre praktyki dotyczące porządkowania katalogów i plików na karcie pamięci SD?
- 26. mkdir() działa w wewnętrznej pamięci flash, ale nie na karcie SD?
- 27. Skąd wiadomo, gdzie na karcie SD przechowywane są obrazy, DCIM/Camera, DCIM/100MEDIA?
- 28. otworzyć aplikację aparatu przez intencji i zapisać obraz na karcie SD i ImageView
- 29. Android Zapisywanie obrazów w SQLite lub na karcie SD lub w pamięci
- 30. Android 2.2 - Jak wykryć, czy jestem zainstalowany na karcie SD, czy nie?
Dzięki ... będę zmiana kodu zgodnie z sugestią. Jednak obecnie mam go mocno zakodowany i nie mam uprawnień ustawionych w pliku manifestu, ale pozwala mi to zachować go na karcie SD. dlaczego mogę go zapisać bez zestawu uprawnień? – bugzy
@ user244190 - zgaduję, że Twój telefon ma system Android 1.5. 'WRITE_EXTERNAL_STORAGE' został wprowadzony w wersji 1.6, więc musisz go dołączyć do swojej aplikacji, jeśli chcesz, aby był zgodny z formatem forward. –
gotcha. dzięki ... – bugzy