Tworzę aplikację i wiem, że moja baza danych *.db
pojawi się wdata/data/com.****.***
Mogę uzyskać dostęp do tego pliku z AVD w Eclipse przy pomocy menedżera sqlite
Ale nie mogę uzyskać dostępu do tego pliku na telefonie z Androidem.
Używam google i mówi, że muszę to zrootować, ale nie chcę tego robić. (Nowe problemy z telefonem, gwarancją i bezpieczeństwem)
Oto moje pytanie: jak mogę uzyskać dostęp do mojego data/data/.....
katalogu na telefonie z Androidem „ bez rootowania ”?
Czy mogę zmienić uprawnienia użytkownika do katalogu data/data.....
bez rootowania go?
android
android-emulator
android-sqlite
adb
Naveen Prince P.
źródło
źródło
Odpowiedzi:
Dostęp do plików bezpośrednio w telefonie jest trudny, ale możesz być w stanie skopiować je na komputer, gdzie możesz zrobić z nim wszystko, co chcesz. Bez rootowania masz 2 opcje:
Jeśli aplikacja jest debuggowana, możesz użyć
run-as
polecenia w powłoce adbAlternatywnie możesz użyć funkcji kopii zapasowej Androida.
Zostaniesz teraz poproszony o „odblokowanie urządzenia i potwierdzenie operacji tworzenia kopii zapasowej”. Najlepiej NIE podawać hasła, w przeciwnym razie odczyt danych będzie trudniejszy. Wystarczy kliknąć „zrób kopię zapasową moich danych”. Wynikowy plik „backup.ab” na komputerze zawiera wszystkie dane aplikacji w formacie kopii zapasowej Androida. Zasadniczo jest to skompresowany plik tar. Ta strona wyjaśnia, w jaki sposób można użyć polecenia zlib OpenSSL do jego rozpakowania. Możesz użyć
adb restore backup.db
polecenia, aby przywrócić kopię zapasową.źródło
adb backup -f \location\on\local\drive -noapk app.package.name
pracował dla mnie bez rootadd if=backup.ab bs=24 skip=1|openssl zlib -d > backup.tar
adb backup -noapk com.your.packagename
spowoduje zapisanie pliku ab w bieżącym katalogu , więc upewnij się, że nawigowałeś w odpowiednim katalogu (np.cd Desktop..
)android:allowBackup="false"
manifestu.Jeśli używasz Androida Studio 3.0 lub nowszej wersji, wykonaj następujące kroki.
Możesz rozwijać tylko pakiety, które działają w trybie debugowania na nierootowanym urządzeniu.
źródło
3.0.1
, czy to się zmieniło?Możesz także spróbować pobrać bazę danych za pomocą aplikacji root explorer. A jeśli to nie zadziała, możesz spróbować:
adb shell
'su
chmod 777 /data /data/data /data/data/com.application.package /data/data/com.application.package/*
Po tym powinieneś być w stanie przeglądać pliki na zrootowanym urządzeniu.
źródło
Aby wykonać którąkolwiek z powyższych czynności (tj. Uzyskać dostęp do chronionych folderów z poziomu samego telefonu), nadal potrzebujesz roota. (Obejmuje to zmianę uprawnień montowania w folderze / data i dostęp do niego)
Bez roota dostęp do
/data
bezpośrednio do odczytu z wyjątkiem z poziomu aplikacji za pomocą kodu nie jest możliwy. Możesz więc spróbować skopiować ten plik na sdcard lub w inny dostępny sposób, a następnie powinieneś być w stanie uzyskać do niego normalny dostęp.Rootowanie nie spowoduje utraty gwarancji, jeśli masz urządzenie programistyczne. Przepraszam, nie ma innego sposobu AFAIK.
źródło
adb pull
jak wspomniano w poniższej odpowiedzi.Najprostszym sposobem (tylko jednym prostym krokiem), aby pobrać plik z folderu aplikacji do debugowania (powiedzmy
/data/data/package.name/databases/file
) na nieukorzenionym urządzeniu z systemem Android 5.0+ jest użycie tego polecenia:źródło
adb -d shell
run-as com.your.packagename cat databases/database.db > /sdcard/database.db
cd /sdcard
upewnić się, żedatabase.db
tam jest.adb pull /sdcard/database.db
lub po prostu możesz skopiować database.db z urządzenia.źródło
Użyj Eksploratora plików w środowisku Eclipse. Wybierz Windows => Pokaż widok => Inne ... => Eksplorator plików.
Innym sposobem jest pobranie pliku przez adb:
źródło
Raz miałem również ten sam problem. Nie ma sposobu na bezpośredni dostęp do pliku na urządzeniach z Androidem, z wyjątkiem powłoki adb lub urządzenia do rootowania.
Obok są 02 alternatywy:
1)
2) Spróbuj tego: https://github.com/sanathp/DatabaseManager_For_Android
źródło
Aby wykonać kopię zapasową z Androida na komputer
Otwórz wiersz polecenia cmd i uruchom to: adb backup -f C: \ Intel \ xxx.ab -noapk your.app.package . Nie wpisuj hasła i kliknij Utwórz kopię zapasową moich danych. Pamiętaj, aby nie zapisywać na katalogu głównym dysku C. Możesz zostać odrzucony. Właśnie dlatego zapisałem na C: \ Intel.
Aby wyodrębnić plik * .ab
źródło
Na zrootowanym urządzeniu poprawne rozwiązanie jest następujące:
Oryginalne rozwiązanie działało, ale chmod zwrócił nieznany katalog. Zmiana polecenia chmod na / data / data / * zapewniła dostęp do wszystkich podfolderów w katalogu danych z DDMS w Intellij. Zakładam, że to samo rozwiązanie dotyczy Eclipse DDMS.
AKTUALIZACJA To, co znalazłem, jest dziwne. Korzystam z Nexusa 6 za pomocą DDMS w IntelliJ (Android Device Monitor). Zbudowałem małą aplikację startową. Wspomniana aplikacja zapisuje dane do pliku .csv w plikach data / data / com.example.myapp /
Kiedy po raz pierwszy zacząłem próbować uzyskać dostęp do tego pliku na moim Nexusie 6, stwierdziłem, że muszę zrootować urządzenie. Widziałem folder danych, ale próba otwarcia go nie zadziałałaby. Jak wspomniano online w innych miejscach, rozwinięcie + zniknie, a następnie pojawi się wkrótce potem (należy zauważyć, że w Internecie istnieją rozwiązania, które twierdzą, że umożliwiają dostęp do tych folderów bez rootowania, nie znalazłem ich zbyt późno i jestem nie jestem pewien, czy wolę zrezygnować z rootowania ((wolałbym to zrobić ręcznie niż polegać na aplikacji lub wierszu poleceń, aby podać moje rozwiązania)). Zrootowałem moją 6 i ponownie wypróbowałem DDMS.
W tym momencie pokazał mi folder danych i mogłem go rozwinąć i zobaczyć com. katalogi, ale nie mogłem otworzyć żadnego z nich. Wtedy odkryłem powyższe rozwiązanie. Wstępne instrukcje nie działałyby w tej części:
Właśnie wtedy wypróbowałem opublikowane przeze mnie rozwiązanie:
To rozwiązanie wydawało się działać, ale tylko w niektórych folderach. Teraz mogę rozwinąć mój folder myapp, ale nie mogę rozwinąć w nim katalogu plików.
W tym momencie bawiłem się przez chwilę, a potem pomyślałem, dlaczego po prostu nie wypróbować tego w katalogu, którego potrzebuję, zamiast wypróbować te znaki zastępcze.
Śledzony przez:
Te polecenia pozwoliły mi rozwinąć i wyświetlić pliki w katalogu mojej aplikacji, aby potwierdzić, że plik .csv został poprawnie zapisany.
Mam nadzieję, że to komuś pomoże. Walczyłem z tym godzinami!
(co nieco bardziej skomplikowane, co dziwne, uprawnienia nie przeszły do pliku .csv, który przeszedł do katalogu plików. moje uprawnienia do katalogu plików czytają drwxrwxrwx, a moje uprawnienia do pliku log.csv czytane -rw-rw --- - .. tylko fyi)
źródło
Możesz pobrać taki plik Sigle:
adb exec-out run-as debuggable.app.package.name cat files/file.mp4 > file.mp4
Przed pobraniem możesz nie przyjrzeć się strukturze plików w katalogu aplikacji. W tym celu wykonaj następujące kroki
THelper
wymienione powyżej:Android Studio sposób
Shahidul
wymienić ( https://stackoverflow.com/a/44089388/1256697 ) również pracę. Dla tych, którzy nie widząDeviceFile Explorer
opcji w menu: Pamiętaj, aby otworzyć katalog / android-in Android Studio. Np. Natywni użytkownicy mają to w swoim folderze projektu na tym samym poziomie, co katalog / ios.źródło
Jednym z prostych sposobów jest utworzenie bazy danych na karcie SD. Ponieważ nie możesz uzyskać dostępu do folderu danych telefonu w pamięci wewnętrznej, chyba że zrootujesz telefon. Dlaczego więc nie utworzyć bazy danych na karcie SD.
Ponadto, jeśli chcesz, możesz napisać kod do kopiowania plików, aby skopiować istniejący plik bazy danych (z pamięci wewnętrznej) do pamięci zewnętrznej bez konieczności rootowania.
źródło
File
wskazującą na kartę SD i możesz zacząćdostęp do tego folderu może wymagać uprawnień administracyjnych.
więc masz dwie opcje: -
ps: jeśli używasz jednej z powyższych dwóch opcji, możesz uzyskać dostęp do tego folderu, wykonując następujące kroki
i stamtąd możesz wyciągnąć plik
źródło
adb backup
nie działało dla mnie, więc oto co zrobiłem (Xiaomi Redmi Note 4X, Android 6.0):1. Przejdź do Ustawienia> Ustawienia dodatkowe> Kopia zapasowa i resetowanie> Lokalne kopie zapasowe .
2. Stuknij „Utwórz kopię zapasową” u dołu ekranu.
3. Odznacz „System” i „Aplikacje”.
4. Stuknij przycisk ujawnienia szczegółów po prawej stronie komórki „Aplikacje”, aby przejść do ekranu wyboru aplikacji.
5. Wybierz żądaną aplikację i dotknij OK.
6. Po zakończeniu tworzenia kopii zapasowej rzeczywisty plik musi zostać w jakiś sposób zlokalizowany. Mój można znaleźć w / MIUI / backup / AllBackup / _FOLDER_NAMED_AFTER_BACKUP_CREATION_DATE_ .
7. Następnie wykonałem kroki od tej odpowiedzi przez RonTLVaby faktycznie przekonwertować plik kopii zapasowej (w moim przypadku .bak) na tar (duplikacja oryginalnej odpowiedzi):
„
a) Idź tutaj i pobierz: https://sourceforge.net/projects/adbextractor/
b) Wyodrębnij pobrany plik i przejdź do folderu, do którego rozpakowałeś.
c) uruchom to z własnymi nazwami plików: java -jar abe.jar rozpakuj c: \ Intel \ xxx.ab c: \ Intel \ xxx.tar
"
źródło
możesz skopiować ten plik db gdzieś w eksploratorze eclipse (np .: sdcard lub PC) i możesz użyć sqlite, aby uzyskać dostęp do tego pliku db i zaktualizować go.
źródło
Pytanie brzmi: jak uzyskać dostęp do danych-folderów-danych na urządzeniu z Androidem?
Jeśli urządzenie z Androidem to Bluestacks * Root Browser APK wyświetla dane / dane / ..
Spróbuj pobrać przeglądarkę root z https://apkpure.com/root-browser/com.jrummy.root.browserfree
Jeśli plik jest plikiem tekstowym, musisz kliknąć „Otwórz jako”, „Plik tekstowy”, „Otwórz jako”, „RB Text Editor”
źródło
Możesz także spróbować skopiować plik do folderu SD Card, który jest folderem publicznym, a następnie możesz skopiować plik na komputer, gdzie możesz użyć sqlite, aby uzyskać do niego dostęp.
Oto kod, którego możesz użyć do skopiowania pliku z danych / danych do publicznego folderu przechowywania:
Oczywisty:
źródło
Baza danych SQLlite jest przechowywana na telefonie użytkownika i ukrywa się pod ścieżką:
masz tutaj 2 opcje:
źródło