【问题标题】:Install APK in Work Profile via ADB in Android通过 Android 中的 ADB 在 Work Profile 中安装 APK
【发布时间】:2019-07-09 11:34:47
【问题描述】:

假设我们在 Android 设备中启用了工作配置文件 (Android For Work)。有谁知道如何在工作资料而不是个人资料中通过 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

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

【问题讨论】:

  • 有趣的问题

标签: android adb android-for-work


【解决方案1】:
adb push android.apk /data/local/tmp
adb shell pm install --user 12 /data/local/tmp/android.apk

【讨论】:

  • 抱歉回复晚了,这行得通。但是在三星设备中似乎有一些问题。
  • 说成功,但应用未见
  • 不起作用。我在问题中得到了相同的 SecurityException。
  • 在三星S10上试过,说成功,但找不到应用。
  • 获取用户idadb shell pm list users
【解决方案2】:
  • @jtmcodle 的上述解决方案工作正常。

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

  • adb shell dumpsys user

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

  • UserInfo{11:10100030} serialNo=11

  • 所以我运行下面的命令使其工作

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

【讨论】:

  • 我猜你将11 设置为用户,这给了我一个错误android.os.ParcelableException: java.io.IOException: not an approved installer
【解决方案3】:

如果接受的答案 (https://stackoverflow.com/a/59148545/1667216) 不起作用,请在运行这两个步骤之前从您的 DPC 调用以下命令:

devicePolicyManager.clearUserRestriction(componentName,UserManager.DISALLOW_DEBUGGING_FEATURES

其中 'componentName' 是扩展 DeviceAdminReceiver 的类的 ComponentName。

【讨论】:

  • 以及如何或在哪里执行此操作?我怎么知道 adminName?出于安全原因,用户是否应该无法禁用此类功能(如果可以的话,这很有趣)。
  • @CularBytes,我更新了我的评论。现在有意义吗?并且禁用是由 DPC 完成的,因此本质上是 EMM 提供者将通过管理策略调用代码,而不是最终用户。
【解决方案4】:

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

Android Developer Site

如果您通过 USB 数据线手动将应用安装到具有工作配置文件的设备上,则该应用会同时安装在个人配置文件和工作配置文件上。安装应用后,您可以在以下条件下测试应用:

【讨论】:

    猜你喜欢
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 2016-06-19
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多