【问题标题】:Android ADB stop application command like "force-stop" for non rooted deviceAndroid ADB 停止应用程序命令,如非 root 设备的“强制停止”
【发布时间】:2013-07-24 09:05:23
【问题描述】:

我正在尝试停止 Android 2.3.7 设备上的应用程序。但在这个版本的 Android 中,我不能使用“强制停止”命令。您知道在非 root 设备上关闭应用程序的其他方法吗?

【问题讨论】:

    标签: android adb


    【解决方案1】:

    第一种方式
    需要root

    使用kill

    adb shell ps => 将列出设备上所有正在运行的进程及其进程 ID
    adb shell kill <PID> => 而不是 <PID> 使用应用程序的进程 ID

    第二种方式
    在 Eclipse 中打开 DDMS 透视图。
    Devices 视图中,您将找到所有正在运行的进程。
    选择进程并点击Stop

    第三种方式
    它只会杀死应用程序的后台进程。

    adb shell am kill [options] <PACKAGE> => 杀死所有与(应用程序包名称)相关的进程。此命令仅终止可安全终止且不会影响用户体验的进程。
    选项是:

    --用户 |全部 | current:指定要杀死其进程的用户;如果未指定,则为所有用户。

    第四种方式
    需要root

    adb shell pm disable <PACKAGE> => 禁用给定的包或组件(写成“包/类”)。

    第五种方式
    请注意,只有使用调试密钥签名的应用才支持 run-as。

    run-as <package-name> kill <pid>

    第六种方式
    在 Honeycomb 中引入

    adb shell am force-stop <PACKAGE> => 强制停止与(应用程序包名称)相关的所有内容。

    P.S.:我知道第六种方法对你没用,但我觉得把这个方法加入列表很重要,这样大家就知道了。

    【讨论】:

    • 感谢您的回答,但是当我使用 kill 时,我收到“不允许操作”错误。我的设备没有 root 权限,我必须通过 ADB 执行此操作。
    • 我用的是第六个。奇迹般有效。我用它来停止主应用程序,然后恢复出厂设置并重新安装。这个小脚本可能很有用(分号表示换行符,替换它们): adb shell am force-stop ; adb shell 擦除数据; adb shell 擦除缓存; adb 重启恢复;超时 80 /无中断; adb install ;
    • 什么样的方式相当于用户进入应用详情并选择“强制停止”?是第 6 个吗?另外,您如何使应用程序处于“停止”状态,这意味着在用户打开应用程序之前,它没有任何意图,任何事件?
    • 感谢#6,现在大多数人都将目标定位在蜂窝之上。这对我正在编写的脚本非常有效: adb shell am force-stop
    • 如何从我的应用程序中以编程方式执行此操作?任何示例代码都会更有帮助..
    【解决方案2】:

    如果你有 root 设备,你可以使用kill 命令

    使用 adb 连接到您的设备:

    adb shell
    

    会话建立后,您必须提升权限:

    su
    

    然后

    ps
    

    将列出正在运行的进程。记下要终止的进程的 PID。然后摆脱它

    kill PID
    

    【讨论】:

    • 如果进程在被杀死后仍继续运行。那我该怎么办? @EricVB
    【解决方案3】:

    如果你想杀死粘性服务,下面的命令不工作

    adb shell am force-stop <PACKAGE>
    adb shell kill <PID>
    

    以下命令是WORKING

    adb shell pm disable <PACKAGE>
    

    如果要重启应用,必须先运行以下命令:

    adb shell pm enable <PACKAGE>
    

    【讨论】:

    • 但这需要我们处于root模式吗?
    • 就像你一样,am force-stop &lt;PACKAGE&gt; 命令对我不起作用......所以我最终使用了 pm disable &lt;PACKAGE&gt;pm enable &lt;PACKAGE&gt; 组合......但是,因为我还需要启动应用程序,我添加了一个额外的命令行monkey -p &lt;PACKAGE&gt; -c android.intent.category.LAUNCHER 1
    【解决方案4】:

    要从应用程序中杀死,您可以这样做:

    android.os.Process.killProcess(android.os.Process.myPid());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-18
      相关资源
      最近更新 更多