SU命令用于更新

时间:2016-10-05 11:35:29

标签: c# android xamarin su

我正在尝试远程更新应用。所有设备都是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();

1 个答案:

答案 0 :(得分:0)

每当您通过Android Studio安装应用时,它都会安装您的应用并在之后立即启动它。通过查看它执行的命令,我找到了以下行,它可能对你有所帮助:

am start[...]

注意意图过滤器标志:-a for" action"和-c为"类别"如清单中所定义。如果你有一个意图过滤器,你也可以使用它们。

编辑:在阅读了SushiHangover的评论之后,这确实是这个问题的重复:https://stackoverflow.com/a/4567928/3673616

根据那里的答案,您需要使用adb shell am start[...]而不是{{1}}