在 Android 中通过 ADB 在工作资料中安装 APK

Install APK in Work Profile via ADB in Android

假设我们在 Android 设备中启用了工作配置文件(Android 用于工作)。有谁知道如何在工作资料而不是个人资料中通过 ADB 安装 APK。

我看过 ADB 文档,有一种获取用户 ID 的方法,但使用相同的 ID 我无法安装 APK。

获取 ID:adb shell pm list users 安装命令:adb install -r --user 12 app_name.apk

错误信息:

Performing Streamed Install
adb: failed to install app-prodDebug.apk: Security exception: Shell does not have permission to access user 12
 com.android.server.am.ActivityManagerService.handleIncomingUser:22541 android.app.ActivityManager.handleIncomingUser:3989 com.android.server.pm.PackageManagerShellCommand.translateUserId:2434

java.lang.SecurityException: Shell does not have permission to access user 12
 com.android.server.am.ActivityManagerService.handleIncomingUser:22541 android.app.ActivityManager.handleIncomingUser:3989 com.android.server.pm.PackageManagerShellComma

有什么办法解决这个问题吗?我在这里的用例是替换一个启用了调试选项的应用程序,这样我就可以解决安装在工作配置文件中的特定应用程序发生的任何问题。

adb push android.apk /data/local/tmp
adb shell pm install --user 12 /data/local/tmp/android.apk
  • 来自@jtmcodle 的上述解决方案工作正常。

  • 但要查找用户 ID,请使用以下命令

  • adb shell dumpsys user

  • 在我的例子中,上面的命令给出了以下输出

  • UserInfo{11:10100030} serialNo=11

  • 所以我运行下面的命令让它工作

  • adb shell pm install --user 12 /data/local/tmp/android.apk

如果已接受的答案 () 不起作用,则在 运行 这 2 个步骤之前从 DPC 调用以下命令:

devicePolicyManager.clearUserRestriction(componentName,UserManager.DISALLOW_DEBUGGING_FEATURES

其中 'componentName' 是扩展 DeviceAdminReceiver 的 class 的组件名称。

根据 Android 开发者网站,如果您使用 adb 命令通过 USB 安装应用程序,它将安装在两个配置文件中:

Android Developer Site

If you manually install an app over a USB cable to a device which has a work profile, the app is installed on both the personal and the work profile. Once you have installed the app, you can test the app under the following conditions: