我正在寻找允许应用程序(我的应用程序)阻止应用程序启动的解决方案。我希望整个软件包无法启动,而不仅仅是它的启动器意图。
但是我有一些限制:
应用程序可以访问的内容:
这是与MDM相关的内容,或限制某些应用程序的设备策略,但我想禁用系统应用程序启动,例如设置或计算器。
我想要替换的当前解决方案使用ActivityManager的运行进程列表,并且每隔500毫秒运行一次以检查是否已启动任何特定应用程序。对于API 22及以上版本略有改变,因为Lollipop MR1(5.1)包含使用统计服务,从中可以更容易地查询上次启动的应用程序。然后服务继续启动当前的启动器活动,因此"禁用"申请。
我相信如果应用程序启动本身会导致触发器终止进程(请记住,我们拥有root和设备管理员权限)会更好,但是我无法找到有关这样做的任何描述。
答案 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