2013-10-05 15 views
6

Ho un paio di applicazioni che implementano alcune logiche di login. Se diciamo che un'applicazione è registrata su [email protected], voglio che tutte queste applicazioni siano registrate su [email protected] Se eseguo il logout, voglio che tutte le applicazioni facciano lo stesso. Ma non voglio fare subito lo stesso. L'applicazione stessa è in grado di gestirlo, ma è necessario sapere se qualche altra applicazione è già stata registrata e, in caso affermativo, effettuare il login per lo stesso indirizzo e-mail di questa app. Quindi ho bisogno di sapere qual è l'indirizzo email per il quale viene registrata l'altra app. Ho bisogno di memorizzare una stringa.Condivisione di piccole quantità di dati tra le app

Prima stavo pensando a SharedPreferences, ma questa è una pessima idea perché ci sono altre opzioni (e lo stackoverflow è pieno di un cattivo esempio di utilizzo di SharedPreferences tra processi). Nonostante ciò ho provato questo. Configura sharedUserId su tutte le app, chiamato createPackageContext e cerca di ottenere le preferenze. Ma non posso leggerlo. Sempre ho ottenuto nulla, anche se ho usato Context.Mode_WORLD_READABLE - che è deprecato a proposito.

Ok, lezione appresa non usare SharedPreferences per quello (suppongo). Ma tutto ciò di cui ho bisogno ora è di memorizzare una stringa singola da qualche parte dove potrebbe essere letta da altre mie app.

Forse dovrei usare ContentProvider? Ma sul serio ... per una stringa? Qual è l'altra opzione? Sono sicuro che per un'operazione così semplice non ho davvero bisogno di Service o ContentProvider, ma in realtà non ho idea di come farlo.

+0

+1 Molto buona domanda. Hai spiegato cosa vuoi fare molto bene. Hai anche mostrato quali opzioni hai considerato nel cercare di trovare la tua soluzione. –

+0

Non conosco un buon modo per farlo a parte un file condiviso (sì, fragile, insicuro) o un ContentProvider. Fa schifo che 'SharedPreferences' abbia condiviso la condivisione, ma forse un giorno ... – Simon

risposta

0

È possibile utilizzare un ricevitore di trasmissione. Tutto quello che dovresti fare è inviare una trasmissione all'applicazione B quando i dati cambiano nell'applicazione A. Quindi l'applicazione B può gestire i dati in background e salvarli comunque è necessario. Potrebbe essere un po 'eccessivo uccidere, e potrebbe esserci un modo migliore per farlo, ma funzionerebbe.

+0

Ma non sono sicuro che tutte le applicazioni siano in esecuzione. Le trasmissioni non vengono consegnate alle applicazioni che vengono chiuse o interrotte dall'utente dalle impostazioni. – sennin

Problemi correlati