Ho sviluppato un'applicazione Android che interagisce con altre applicazioni installate sul dispositivo tramite un file sharedpreference.Preferenze condivise Android su diverse applicazioni
Questo file è stato creato come MODE.WORLD_READABLE e ogni applicazione installata ha il proprio file con un nome e una proprietà definiti in comune (ciò che cambia è il valore per quella specifica proprietà).
Ad esempio, AppA e AppB devono avere ciascuno un file condiviso denominato "app_shared_file.xml" con una proprietà "file_shared_data".
Dalla mia applicazione voglio prima accedere a questo file e leggere quel valore di proprietà, e in base al risultato che voglio creare/aggiornare il mio.
Tuttavia, sto avendo qualche problema nel raggiungimento di questo. Sulla documentazione di Android vedo che:
recuperare e tenere il contenuto dei file delle preferenze 'nome', tornando a SharedPreferences attraverso il quale è possibile recuperare e modificare i suoi valori. Solo un'istanza dell'oggetto SharedPreferences viene restituita a tutti i chiamanti con lo stesso nome, nel senso che vedranno reciprocamente le modifiche non appena vengono apportate.
Dopo aver letto l'altro file delle preferenze condivise dell'applicazione, quando provo a creare/aggiornare il mio sistema invece di modificare il mio si utilizza quello che ho letto in precedenza. Se, al contrario, inizio aggiornando il mio e leggo l'altra app in un secondo momento - invece di leggere l'altro, quello a cui si accede è mio.
Qualche idea?
Il codice che sto utilizzando per la lettura del pref condivisa è [dove packageName è l'altra applicazione pckg]:
Context con = context.createPackageContext(packageName, Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences pref = con.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_WORLD_READABLE);
pref.getBoolean(SHARED_PREF_PROP, false);
Il codice che sto utilizzando per la scrittura in app condiviso pref è:
SharedPreferences prefs= getSharedPreferences(SHARED_PREF_NAME, context.MODE_WORLD_READABLE);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(SHARED_PREF_PROP, value);
editor.commit();
Grazie in anticipo.
Sì, ci sono due diverse applicazioni e ogni applicazione ha il proprio file di preferenze condivise memorizzato nella propria cartella shared_prefs. Sì, conosco il nome del pacchetto dell'altra applicazione tramite PackageManager, ma non ho alcuna opzione per sapere quale attività/classe lo gestirà. Avevo già visto quel collegamento, il problema qui è di accedere a due diverse pref condivise con lo stesso nome - la mia e l'altra applicazione. Dopo aver aperto uno, quando provo ad aprire l'altro i punti di riferimento a quello inizialmente aperto e non quello inviato come contesto. – user1683087