我们有一个带有一组功能(服务)的旧应用程序。我们还有一个新的应用程序已经开始实现一些旧的应用程序的功能。我们的目标是当有人开始在新应用中使用该服务时,我们希望旧应用关闭这些服务。
我的第一个想法是一个非常简单的机制,比如设置一个标志(在SharedPreferences
中)并以某种方式让旧应用程序查询此标志,然后关闭其服务。
我读过关于MODE_WORLD_READABLE
和SharedPreferences
的内容,但不再推荐这样做了。那么有人有一个很好的方法/解决方案吗?
PS!这些应用程序使用不同的证书进行签名,但两者都是由我们开发的。
答案 0 :(得分:1)
BroadcastReceiver,接收系统范围的广播意图可以正常工作。 较新版本的应用会发送更新的版本激活'意图,并且,如果有旧版本运行,它将接收该广播并关闭这些服务。
答案 1 :(得分:1)
您好,您可以使用ContentProvider ContentProvider
或使用SharedPreferences
将com.example
个应用中的sharedUserId设置为相同。
<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);
答案 2 :(得分:0)
内容提供商绝对是您的唯一解决方案。
其他选项
是在进程之间传递数据,需要对其进行封送和解组。这种对基本类型的数据编组和非编码是操作系统可以理解的,如果手动完成,它通过进程间通信(IPC)可能是单调乏味且容易出错的。 Android interface definition language (AIDL) helps solve this problem.
关注here
http://codetheory.in/android-interprocess-communication-ipc-with-aidl/