7

Rozwijam grupę złożonych aplikacji na Androida, które muszą współdzielić wspólne ustawienia stanu i konfiguracji.Udostępnianie i utrwalanie danych między wieloma aplikacjami systemu Android

Na przykład zobaczyć ten obraz wyjaśniający mój scenariusz:

enter image description here

Chcę że APP 1 APP 2 i APP 3 móc dostępu (odczyt/zapis) danych do wspólnego obszaru pamięci. Ponadto potrzebuję ochrony przed odinstalowaniem, tj. Nie chcę, aby dane zostały usunięte, gdy użytkownik odinstaluje którąś z aplikacji.

ja już przeczytać o bazami danych SQLite, ContentProviders i pisanie na wewnętrznych i przechowywania Zewnętrznych, ale każda z wyżej wymienionych metod mają wady, jak wymienione poniżej:

  • w bazie SQLite DB zostanie usunięty na deinstalacji aplikacji i jest prywatny do każdej aplikacji
  • ContentProvider: dane są usuwane, gdy aplikacja z ContentProvider usuwa
  • pamięci wewnętrznej: Czy prywatny do każdej aplikacji i dane są usuwane na deinstalacji aplikacji (http://developer.android.com/training/basics/data-storage/files.html#InternalVsExternalStorage)
  • External Storage: Czy zawodne (użytkownik może wyjąć kartę SD)
  • Przechowuj na serwerze: Nie jest możliwe, użytkownik może nie mieć niezawodne połączenia internetowego

EDIT:

ja nie chcę żadnych zależności od Usług Google Play, ponieważ będę dystrybuować aplikacje za pośrednictwem Sklepu Play i pobierać pliki innych firm.

Proszę mi pomóc.

+1

'Pamięć zewnętrzna: jest niewiarygodna (użytkownik może usunąć kartę SD)'. Zły pomysł. Na większości urządzeń wbudowana jest pamięć zewnętrzna. Jeśli dodasz kartę micro SD, oznacza to pamięć wymienną, ale często nazywa się pamięć zewnętrzną. – greenapps

Odpowiedz

1

Dysk Google robi to za Ciebie. Zasadniczo otrzymujesz zezwolenie na lokalny system plików wspierany przez zdalny. Na większości telefonów jest to preinstalowane, więc problem z odinstalowaniem, o który się martwisz, jest mniejszy.

Można utworzyć folder dla aplikacji, który można następnie odczytać/zapisać.

https://developers.google.com/drive/android/

+0

Ale co, jeśli użytkownik nie ma zainstalowanych Usług Play? W takim przypadku takie podejście nie powiedzie się. – jazdev

+0

Jeśli kierujesz reklamy na rynki Sklepu Google Play (obejmuje to więcej niż większość telefonów), możesz je zainstalować w usłudze Google Play (połączenie APi). Jeśli martwisz się, że jest to problem, polecam bardzo dobrze w bizdev mieć zainstalowaną zdalną instalację systemu plików w partycji systemowej przez wszystkich dużych producentów telefonów komórkowych, aby zwykli użytkownicy nie mogli usunąć go ze swojego telefonu;) A następnie możesz spełnić wszystkie twoje wymagania. Wymaganie dotyczące odinstalowania dowodu jest sprzeczne z modelem aplikacji, który usuwa aplikację i dane jako jeden. –

1

można wykorzystywać wspólne preferencje sprzeciwiają się odczytywać i zapisywać dane preferencje pliku. Najważniejsze jest użycie MODE_MULTI_PROCESS. Bit MODE_MULTI_PROCESS jest używany, jeśli wiele procesów mutuje ten sam plik SharedPreferences.

Użyj następującego kodu:

SharedPreferences shPrefernces = context.getSharedPreferences("filename", MODE_MULTI_PROCESS); 
String s1 = shPrefernces.getString("keytosearch1", ""); 
String pass = shPrefernces.getString("keytosearch2", ""); 
+0

Gdzie jest ten plik? – greenapps

+0

SharedPreferences są przechowywane w pliku XML w folderze dane aplikacji, tj /data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml lub preferencje domyślne na: /data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PACKAGE_NAME_preferences.xml Udostępnione elementy współdzielone w czasie wykonywania nie są przechowywane w projekcie Eclipse. –

+0

Czy można bezpiecznie zapisywać poufne dane za pomocą MODE_MULTI_PROCESS? – jazdev

0

Zgadzam się, że Shared Preferencje z world_readable nie będzie wystarczający dla Ciebie lub wymiany całej internet nie jest to możliwe, ale wciąż można zrobić jedną rzecz.

Korzystanie z odbiorników audycji i emisji niestandardowych. ze zbędnymi wspólnymi danymi we wszystkich aplikacjach ze wspólnymi preferencjami.

Kto aktualizuje dane, wyśle ​​transmisję do systemu. Wszystkie aplikacje realizują odbiornik transmisji.kiedykolwiek otrzymywali nową transmisję, aktualizowali dane we wspólnych preferencjach. Aplikacja A -> wysyła transmisję po aktualizacji danych.

Jeśli aplikacja B jest już zainstalowana, aplikacja B również odbiera nadawanie i zapisuje dane z tego zamiaru.

, jeśli aplikacja B aktualizuje nowe dane. APP B -> wysyła transmisję dla wspólnych danych Inne aplikacje aktualizują dane.

  • Tylko wspólne dane zostaną utracone po usunięciu wszystkich aplikacji. Jeśli zainstalowana jest co najmniej jedna aplikacja, dane pozostają.
0

Dane preferencji będą zawsze przechowywane w każdym kontekście aplikacji. Użyj sharedUserId i zainstaluj nowy plik preferencji we wszystkich aplikacjach. Po otworzeniu każdej aplikacji aplikacja musi sprawdzić wartość preferencji ze wszystkich innych aplikacji i wpisać do jej preferencji na podstawie ostatniej zaktualizowanej wartości czasu dostępnej w preferencji, aby znaleźć najnowszą zaktualizowaną.

Po otwarciu dowolnej aplikacji najnowsze dane będą przechowywane w lokalnej pamięci. jeśli jakakolwiek aplikacja jest zainstalowana lub odinstalowana, powinno to działać poprawnie.