Android-Can';不要以“开始”开始活动;“上午开始”;在Android 11上以用户身份运行时

Android-Can';不要以“开始”开始活动;“上午开始”;在Android 11上以用户身份运行时,android,activity-manager,Android,Activity Manager,我不知道这是否是一个新的限制,但对于安卓11设备,当我作为应用程序的用户运行时,我不能从本机代码或shell运行“am”。它运行良好,无需运行。这是一个新的限制,还是我可以请求应用程序允许它的一些权限?安卓10没有这个问题 例如: adb shell run-as com.example.app am start -a com.example.app.someactivity 结果是 Exception occurred while executing 'start': java.lang.S

我不知道这是否是一个新的限制,但对于安卓11设备,当我作为应用程序的用户运行时,我不能从本机代码或shell运行“am”。它运行良好,无需运行。这是一个新的限制,还是我可以请求应用程序允许它的一些权限?安卓10没有这个问题

例如:

adb shell
run-as com.example.app
am start -a com.example.app.someactivity
结果是

Exception occurred while executing 'start':
java.lang.SecurityException: Permission Denial: package=com.android.shell does not belong to uid=10262
    at com.android.server.wm.ActivityTaskManagerService.assertPackageMatchesCallingUid(ActivityTaskManagerService.java:2598)
    at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1081)
    at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1072)
    at com.android.server.am.ActivityManagerService.startActivityAsUserWithFeature(ActivityManagerService.java:3678)
    at com.android.server.am.ActivityManagerShellCommand.runStartActivity(ActivityManagerShellCommand.java:544)
    at com.android.server.am.ActivityManagerShellCommand.onCommand(ActivityManagerShellCommand.java:186)
    at android.os.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:98)
    at android.os.ShellCommand.exec(ShellCommand.java:44)
    at com.android.server.am.ActivityManagerService.onShellCommand(ActivityManagerService.java:10522)
    at android.os.Binder.shellCommand(Binder.java:929)
    at android.os.Binder.onTransact(Binder.java:813)
    at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:5027)
    at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2883)
    at android.os.Binder.execTransactInternal(Binder.java:1159)
    at android.os.Binder.execTransact(Binder.java:1123)

另外,“am启动前台服务”没有这个问题。

无论出于何种原因,这个限制是真实的,显然没有记录在案

我的解决方案是使用“am启动前台服务”启动一个新的服务,然后启动一个活动。篮圈跳起来,代码膨胀,现在开始工作

总之,“am start-a”现在在应用程序用户使用时被破坏,但“am start前台服务”不是,并且服务可以为用户启动活动(不幸的是,重复了工作了十年但现在消失的功能)