三星手机基于DualMessage实现任意应用双开

概述

Android 系统的多用户机制为应用双开提供了原生支持。三星的 Dual Messenger 功能就是基于此原理实现的。本文将介绍如何利用 Android 多用户机制,突破官方限制,为任意应用实现双开功能。

实现原理

Android 系统支持多用户功能,每个用户拥有独立的应用空间和数据。三星 Dual Messenger 通过创建一个名为 “DUAL_APP” 的特殊用户(通常用户 ID 为 95),在该用户空间中安装应用的第二个实例,从而实现双开。

官方仅支持特定应用(如 WhatsApp、Facebook Messenger 等)的双开,这些应用的白名单硬编码在 /system/app/DAAgent/DAAgent.apkWhiteListApps 类中。通过 ADB 命令,我们可以绕过这个限制,为任意应用创建双开实例。

基础方法:ADB 安装应用到双开空间

前置条件

  • 启用 USB 调试
  • 安装 ADB 工具
  • 至少启用一个官方支持的双开应用(如 WhatsApp)

操作步骤

  1. 查找双开用户 ID

    1
    adb shell pm list users

    输出示例:

    1
    2
    3
    Users:
    UserInfo{0:Owner:c13} running
    UserInfo{95:DUAL_APP:1030} running

    记录 DUAL_APP 的用户 ID(通常是 95)

  2. 安装应用到双开空间

    1
    adb install --user 95 /path/to/app.apk

    安装成功后,应用会出现在双开空间中,图标带有双开标识。

权限配置

方法一:通过系统设置授权

新安装的双开应用默认没有任何权限,需要手动授予:

  1. 进入 设置权限管理器
  2. 选择需要授予的权限类型(如联系人、存储等)
  3. 找到双开应用实例
  4. 点击 查看所有权限 进入完整的权限设置页面
  5. 逐一授予所需权限

方法二:通过 ADB 命令授权

更快捷的方式是使用 ADB 命令直接授权:

1
2
3
4
5
6
7
8
9
10
11
# 授予存储读取权限
adb shell pm grant --user 95 com.package.name android.permission.READ_EXTERNAL_STORAGE

# 授予存储写入权限
adb shell pm grant --user 95 com.package.name android.permission.WRITE_EXTERNAL_STORAGE

# 授予相机权限
adb shell pm grant --user 95 com.package.name android.permission.CAMERA

# 授予联系人权限
adb shell pm grant --user 95 com.package.name android.permission.READ_CONTACTS

com.package.name 替换为实际的应用包名。

高级方案:使用 Aurora Store

为了方便在双开空间中安装和管理应用,可以将 Aurora Store 安装到双开空间。

安装 Aurora Store

  1. 下载 Aurora Store APK

  2. 安装到双开空间

    1
    adb install --user 95 aurora.apk
  3. 授予必要权限

    1
    2
    3
    4
    5
    6
    # 授予存储权限
    adb shell pm grant --user 95 com.aurora.store android.permission.READ_EXTERNAL_STORAGE
    adb shell pm grant --user 95 com.aurora.store android.permission.WRITE_EXTERNAL_STORAGE

    # 授予安装应用权限
    adb shell appops set --user 95 com.aurora.store REQUEST_INSTALL_PACKAGES allow
  4. 使用 Aurora Store

    打开双开空间中的 Aurora Store,即可直接下载安装应用,无需每次都通过 ADB。

分离 APK 的处理

部分现代应用使用分离 APK(Split APKs)格式,无法直接通过 adb install 安装。需要使用专门的安装器。

使用 SAI(Split APKs Installer)

  1. 安装 SAI 到双开空间

    1
    adb install --user 95 sai.apk
  2. 授予权限

    1
    2
    3
    adb shell pm grant --user 95 com.aefyr.sai android.permission.READ_EXTERNAL_STORAGE
    adb shell pm grant --user 95 com.aefyr.sai android.permission.WRITE_EXTERNAL_STORAGE
    adb shell appops set --user 95 com.aefyr.sai REQUEST_INSTALL_PACKAGES allow
  3. 安装分离 APK

    • 下载应用的 .apkm.apks 文件
    • 将文件移动到双开空间的下载目录
    • 使用双开版 SAI 打开并安装

技术深入:修改白名单(需要 Root)

对于已 Root 的设备,可以通过修改系统文件永久添加应用到白名单:

  1. 系统服务 dual_app 维护着支持双开的应用列表
  2. 白名单定义在 /system/app/DAAgent/DAAgent.apk
  3. 可以通过反编译 APK,修改 WhiteListApps 类,重新打包并替换系统文件
  4. 或使用 Xposed/Magisk 模块动态修改白名单

注意:修改系统文件有风险,操作前请做好备份。

注意事项

  1. 兼容性:不同厂商的 Android 系统对多用户的实现可能有差异,本方法主要适用于三星设备
  2. 稳定性:非官方双开的应用可能存在稳定性问题,建议先测试
  3. 数据安全:双开空间的数据独立存储,卸载应用会清除所有数据,注意备份

参考资料

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2015-2026 Kaisar
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信