Android 不同應用通過SharedPreference實現共享資料

yangxi_001發表於2016-07-21
 Android不同應用之間資料的共享有許多方式,但是我覺得還是使用sharedPreference比較簡單和輕量級。如果程式B想要訪問程式A的sharedPreference可以通過下面的語句來實現:

  1.         try {
  2.             AContext =createPackageContext(A_PACKAGE_NAME,
  3.                     Context.CONTEXT_IGNORE_SECURITY);
  4.         } catch (NameNotFoundException e) {
  5.             Log.e(TAG, "find package error!");
  6.         }
  7.         SharedPreferences sp = AContext.getSharedPreferences(PREFERENCES_NAME,
  8.                 Context.MODE_WORLD_READABLE);
  9.         sp.getInt(PREF_NAME, 0);
     當然在A程式裡建立SharedPreference的時候也需要使用Context.MODE_WORLD_READABLE屬性。另外SharedPreference還有Context.MODE_WORLD_WRITEABLE屬性。根據SDK的解釋,就是允許別的應用程式來對SharedPreference進行寫操作。但是在實際程式實驗中發現即使加上了這個屬性,寫操作也是無法成功的,會提示一個錯誤:Couldn't rename file /data/data/....PREFERENCES_NAME.XML to  /data/data/....PREFERENCES_NAME.XML.bak。這個錯誤的原因應該是很明確了,程式B在程式A的目錄裡面沒有建立和重新命名檔案的許可權。

     那麼到底要怎麼樣才能讓程式B在程式A的SharedPreferences裡面寫東西呢,其實很簡單,在manifest.xml裡面將兩個應用程式的android:sharedUserId屬性設為相同的就可以了。而且SharedPreference的屬性也不需要Context.MODE_WORLD_WRITEABLE了,只需要Context.MODE_PRIVATE也可以完成讀寫操作。

相關文章