阻止应用启动

时间:2017-01-19 10:08:13

标签: android

我正在寻找允许应用程序(我的应用程序)阻止应用程序启动的解决方案。我希望整个软件包无法启动,而不仅仅是它的启动器意图。

但是我有一些限制:

  • 申请无法取代家庭
  • 应用程序不能是系统

应用程序可以访问的内容:

  • 设备管理员
  • 常规Android用户空间中的任何其他内容

这是与MDM相关的内容,或限制某些应用程序的设备策略,但我想禁用系统应用程序启动,例如设置或计算器。

我想要替换的当前解决方案使用ActivityManager的运行进程列表,并且每隔500毫秒运行一次以检查是否已启动任何特定应用程序。对于API 22及以上版本略有改变,因为Lollipop MR1(5.1)包含使用统计服务,从中可以更容易地查询上次启动的应用程序。然后服务继续启动当前的启动器活动,因此"禁用"申请。

我相信如果应用程序启动本身会导致触发器终止进程(请记住,我们拥有root和设备管理员权限)会更好,但是我无法找到有关这样做的任何描述。

1 个答案:

答案 0 :(得分:0)

如果您的应用程序具有root访问权限,则可以通过执行命令

来禁用其他应用程序
Android application is debugging. 
Error Starting Application: Failed to forward ports.
One or more errors occurred.

要执行命令,您可以使用此方法:

$dom = new DOMDocument();
$dom->loadHTMLFile('somefile.html');
$sel = $dom->getElementsByTagName("select");
foreach ($sel as $select){
  if ($select->getAttribute("name") == "someselect") {//find select box with name "someselect"
    $optionTags = $select->getElementsByTagName('option');
    foreach ($optionTags as $tag){
        if ($tag->hasAttribute("selected"))
            echo $tag->nodeValue;
    }
}

这将禁用无法再启动的软件包。

如果要检查应用程序是否为系统,可以使用ApplicationInfo标志:

"pm disable " + packageName