【问题标题】:Share data/flag between two Android apps在两个 Android 应用程序之间共享数据/标志
【发布时间】:2017-04-03 03:24:19
【问题描述】:

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

我的第一个想法是一个非常简单的机制,比如设置一个标志(在SharedPreferences),然后让旧应用查询这个标志,然后关闭它的服务。

我已经阅读了有关 MODE_WORLD_READABLESharedPreferences 的信息,但不再推荐这样做。那么有人对此有一个好的方法/解决方案吗?

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

【问题讨论】:

  • 所以无论如何你都必须修改你的旧应用......然后只需添加“关闭”请求
  • @pskink 我不太明白那个评论,但是是的,我们必须修改旧应用程序,但重要的是旧应用程序在确定新应用程序之前不会停止它的服务开始了。 (备份服务)

标签: java android permissions sharedpreferences android-permissions


【解决方案1】:

BroadcastReceiver,接收系统范围的广播意图可以正常工作。 较新版本的应用程序将发送“已激活较新版本”意图,如果有旧版本正在运行,它将接收该广播并关闭这些服务。

【讨论】:

  • 这也是我想过的,所以也许我就试试这个吧:)
【解决方案2】:

您好,您可以使用 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);

【讨论】:

  • 我一定会测试的!如果它有效,那将是完美的:)
【解决方案3】:

内容提供商绝对是您的唯一解决方案。

其他选项 是在进程之间传递数据,需要进行相应的编组和解组。这种将数据编组和解组为原始类型的做法是,操作系统可以理解通过进程间通信 (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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多