在两个Android应用之间共享数据/标记

时间:2016-11-19 09:28:49

标签: java android permissions sharedpreferences android-permissions

我们有一个带有一组功能(服务)的旧应用程序。我们还有一个新的应用程序已经开始实现一些旧的应用程序的功能。我们的目标是当有人开始在新应用中使用该服务时,我们希望旧应用关闭这些服务。

我的第一个想法是一个非常简单的机制,比如设置一个标志(在SharedPreferences中)并以某种方式让旧应用程序查询此标志,然后关闭其服务。

我读过关于MODE_WORLD_READABLESharedPreferences的内容,但不再推荐这样做了。那么有人有一个很好的方法/解决方案吗?

PS!这些应用程序使用不同的证书进行签名,但两者都是由我们开发的。

3 个答案:

答案 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://developer.samsung.com/technical-doc/view.do;jsessionid=C7B3534740D7D9C4B3A7E44D08D55D75?v=T000000110

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