【问题标题】:SU command for updates用于更新的 SU 命令
【发布时间】:2016-10-05 11:35:29
【问题描述】:

我正在尝试远程更新应用程序。所有设备均已植根。 由于应用程序和设备的性质,没有用户,设备监控一系列传感器并将信息从关键位置发送回服务器。

我知道

"pm install -r  app.apk\n"

将安装下载的 apk。 但是我如何让它在没有用户的情况下运行。 一旦执行此命令,应用程序就会停止,它的所有服务也会停止。

那么有安装+运行的命令吗?

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();

【问题讨论】:

标签: c# android xamarin su


【解决方案1】:

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

adb shell am start -n "com.package.name/com.package.name.ActivityName" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER

注意意图过滤器标志:-a 表示“动作”,-c 表示“类别”,如清单中所定义。如果你有一个意图过滤器,你也可以使用它们。

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

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

【讨论】:

  • 此代码在应用程序内部,adb shell 在这种情况下不适用.. 我的问题是一旦安装了应用程序更新(通过 su 命令),我的应用程序会在启动命令之前自动停止执行
  • @Migz 您需要一个引导应用程序,该应用程序具有始终运行的服务来执行此操作。如果引导服务发现其他应用程序没有运行,它会创建一个意图并启动其他应用程序。
猜你喜欢
  • 1970-01-01
  • 2013-01-21
  • 1970-01-01
  • 1970-01-01
  • 2011-11-25
  • 1970-01-01
  • 2016-01-02
  • 1970-01-01
  • 2012-12-22
相关资源
最近更新 更多