我正在尝试远程更新应用。所有设备都是root。 由于应用程序和设备的性质,没有用户,设备监视一系列传感器并将信息从关键位置发送回服务器。
我知道
"pm install -r app.apk\n"
将安装下载的apk。 但是如何在没有用户的情况下运行它。 一旦这个命令执行,app停止并且所有服务都停止。
是否有安装+ run命令?
am start -n com.package.name/com.package.name.ActivityName
没有执行并且不会启动服务,因为在安装命令
之后没有到达此代码修改
这是下载apk后的代码
dataOutputStream.WriteBytes("mount -o rw,remount -t /system\n");
dataOutputStream.Flush();
dataOutputStream.WriteBytes("chmod -R 777 "+localPath+"\n");
dataOutputStream.Flush();
dataOutputStream.WriteBytes("mount -o ro,remount -t /system\n");
dataOutputStream.Flush();
dataOutputStream.WriteBytes("pm install -r "+localPath+"\n");
dataOutputStream.Flush();
//The code below is not reached because the install kills the app
dataOutputStream.WriteBytes("am start -n com.company.remote/com.company.remote.RebootServices\n");
dataOutputStream.Flush();
答案 0 :(得分:0)
每当您通过Android Studio安装应用时,它都会安装您的应用并在之后立即启动它。通过查看它执行的命令,我找到了以下行,它可能对你有所帮助:
am start[...]
注意意图过滤器标志:-a for" action"和-c为"类别"如清单中所定义。如果你有一个意图过滤器,你也可以使用它们。
编辑:在阅读了SushiHangover的评论之后,这确实是这个问题的重复:https://stackoverflow.com/a/4567928/3673616
根据那里的答案,您需要使用adb shell am start[...]
而不是{{1}}