2

我們擁有一套具有一組功能(服務)的舊應用程序。我們還有一款新應用程序開始實施一些舊應用程序的功能。我們的目標是,當有人開始在新應用中使用該服務時,我們希望舊應用關閉這些服務。我的第一個想法是一個非常簡單的機制,例如設置一個標誌(在SharedPreferences),並以某種方式讓舊應用程序查詢此標誌,然後關閉其服務。在兩個Android應用程序之間共享數據/標誌

我讀過關於MODE_WORLD_READABLESharedPreferences,但不再推薦。那麼,有沒有人有一個很好的方法/解決方案呢?

PS!這些應用程序使用不同的證書籤名,但都是由我們開發的。

+0

所以你無論如何都要修改舊的應用程序...然後只需添加「關閉」要求 – pskink

+0

@pskink我不太明白評論,但是是的,我們必須修改舊的應用程序,但重要的是舊應用程序在確定新應用程序已啓動它之前不會停止其服務。 (備份服務) – Christian

回答

1

BroadcastReceiver,接收系統範圍的廣播意圖sould工作正常。 較新版本的應用程序將發送'新版本激活'的意圖,並且,如果有舊版本運行,它將接收該廣播並關閉這些服務。

+0

這也是我想到的,所以也許我會試試這個:) – Christian

1

嗨,你可以使用的ContentProvider ContentProvider

或者使用SharedPreferences

集sharedUserId中既有像com.example應用程序是相同的。從包裝

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.hello" 
android:versionCode="1" 
android:versionName="1.0" 
android:sharedUserId="com.example"> 

獲取上下文:

mContext = context.createPackageContext(
         "com.example.otherapp", 
         Context.MODE_PRIVATE); 
mPrefs = mContext.getSharedPreferences("sameFileNameHere", Activity.MODE_PRIVATE); 
+0

我會定義測試這個!如果它的工作,它將是完美:) – Christian

+0

[相同的答案在這裏。](http://stackoverflow.com/a/24748043/218198) – milkersarac

0

內容提供商絕對是你的一個解決方案。

其他選項 是要在進程之間傳遞數據,它需要相應地編組和拆散。這種對原始類型的數據封送和非語音操作是OS可以理解的,如果手動完成的話,通過進程間通信(IPC)可能是乏味和容易出錯的。 Android interface definition language (AIDL) helps solve this problem.

遵循here

http://developer.samsung.com/technical-doc/view.do;jsessionid=C7B3534740D7D9C4B3A7E44D08D55D75?v=T000000110

http://codetheory.in/android-interprocess-communication-ipc-with-aidl/

相關問題