Android 非出口活动:在模拟器上启动;手机上的安全例外
我的项目中有一个非导出活动 如果我尝试在手机上使用Android 非出口活动:在模拟器上启动;手机上的安全例外,android,android-activity,android-emulator,adb,root,Android,Android Activity,Android Emulator,Adb,Root,我的项目中有一个非导出活动 如果我尝试在手机上使用adb: adb shell am start -n "packagename/activityname" 我得到一个错误: java.lang.SecurityException: Permission Denial: starting Intent { ... } from null (...) not exported from uid ... 但是,如果我在模拟器上运行相同的命令,那么一切正常。怎么会这样 但是,如果我在模拟器上运行相
adb
:
adb shell am start -n "packagename/activityname"
我得到一个错误:
java.lang.SecurityException:
Permission Denial: starting Intent { ... } from null (...) not exported from uid ...
但是,如果我在模拟器上运行相同的命令,那么一切正常。怎么会这样
但是,如果我在模拟器上运行相同的命令,那么一切正常。怎么会这样
默认情况下,emulator实例以root运行,这意味着与非根设备相比,有更多的系统进程具有root权限
考虑ps
命令输出grep
-ed与adbd
和sh
(即adb shell ps | grep'adbd'
和adb shell ps | grep'sh'
)。您可能会看到以下内容(当然,在您的设备/模拟器上使用不同的PID
和PPID
):
- 非根设备
USER PID PPID NAME shell 166 1 /sbin/adbd ... shell 15721 166 /system/bin/sh
- 仿真器
USER PID PPID NAME root 1183 1 /sbin/adbd ... root 2884 1183 /system/bin/sh
sh
进程及其父进程adbd
,在仿真器上属于root
,而在非root设备上属于shell
所有者。尽管属性设置为false
,adb shell
运行的用户帐户在模拟器AFAIK上拥有更大的权限,但root
用户拥有访问应用程序沙箱的“权限”。