2017-11-15 2 views
0

私はsharedUserIdの下にApp AとApp Bを持っています。 App Bでは、AのsharedPreferencesを取得したいと思います。今、私はアプリケーションAのsharedPreferencesを得ることができますが、再コンパイル時のみです。これは可能ですか?sharedUserIDを持つアプリ間でOnSharedPreferenceChangeListenerが実装されていますか?

これは私がアプリBにしようとしてるものの例である:

// get Context of Shared App 
    sharedContext = this.createPackageContext("com.app.A",Context.CONTEXT_IGNORE_SECURITY); 
// get desired preferences from app A 
    myPrefs = sharedContext.getSharedPreferences(PREFERENCES,Context.MODE_PRIVATE); 
// keeping local copy of this listener 
    listener = new SharedPreferences.OnSharedPreferenceChangeListener() { 
    public void onSharedPreferenceChanged(SharedPreferences myPrefs, String key) { 
      if (key.equals(PREFERENCES)) { 
         // Do something 
       Log.d("Test", "preferences were updated"); 
       } 
      } 
    }; 
// register listener 
myPrefs.registerOnSharedPreferenceChangeListener(listener); 
+0

「アプリケーションが同じLinuxユーザーIDを共有し、同じ証明書で署名されている場合、異なるアプリケーションのコンポーネントが同じプロセスで実行されるように、android:processを設定することもできます。 - これは実現可能な道でしょうか? – Elisabeth

+0

プロセスの間でオブジェクトを共有することは不可能なため、IPCなしで別のプロセスの変更を聞くことも不可能です。 – F43nd1r

+0

リスナーがピックアップしています:)!ときには、あなたが問題にこだわっていることが面白いです。あなたがコミュニケーションをとるとすぐに、答えを見つけることができます。 – Elisabeth

答えて

0

は、各アプリのマニフェストにandroid:processを設定します。

また、共有優先設定の名前ではなく、key.equals("key:example")を取得する特定の設定の名前にする必要があります。

関連する問題