我試圖實現this great technique跨兩個不同的應用程序共享首選項,同時仍MODE_PRIVATE。在同一個APK中可能有兩個包?
我的問題是第一個應用程序不能假設第一個應用程序安裝(反之亦然)等:
Context c = createPackageContext("com.app.first", MODE_PRIVATE);
必須替換爲:
Context c = createPackageContext("com.app.shared", MODE_PRIVATE);
但是,任務增加那com.app.shared
是真的,它轉換成第二個APK?
換句話說,有只有一個AndroidManifest.xml
每APK和只有一個<manifest package= >
每清單文件。因此,每個APK只有一個實際包裝?
我不希望每個應用程序有2個APK,我只希望每個應用程序有一個APK。
有沒有辦法做到這一點?
謝謝你救了我一個災難性的方法。我現在意識到,儘管「共享」偏好的「廣告」可用性,但它需要很多解決方法和技巧,因此這必定有些不安全。我現在認爲,通過[內容提供商](http://developer.android.com/guide/topics/providers/content-providers.html),在應用程序之間共享任何內容的正確方法。我在正確的方向嗎? – ef2011 2012-08-03 23:06:04
@ ef2011:在應用程序之間共享信息的方式有很多 - 「ContentProvider」是一種可能性。就個人而言,在這種情況下,當應用程序的首選項發生更改時,我會發送許可保護的廣播,以便由其他應用程序獲取並應用於其自己的副本。這樣,通過兩個應用程序鏡像設置,您就不必擔心一個應用程序被卸載,並且同時使用這兩個應用程序的設置。此外,你不關心哪個應用程序首先安裝。而且,作爲一個附帶的好處,它可以無縫地擴展到三個或更多的應用程序,如果需要的話。 – CommonsWare 2012-08-03 23:22:44
不幸的是,由於[INSTALL_FAILED_CONFLICTING_PROVIDER](http://stackoverflow.com/q/6273592/722603)限制(即兩個不同的包不能共享相同的內容提供者),ContentProvider甚至不可能。所以,看起來**唯一的方法就是你建議的「許可保護廣播」。任何可以瞭解更多信息的鏈接? – ef2011 2012-08-07 18:08:20