无卸载系统应用权限怎么办

核心提示黑科技我们都知道一般预置的 APP 是不能卸载的,需要有 root 权限,今天分享一个命令,帮你卸载那些你想卸载又不能卸载的系统预置的 APP。adb shell pm uninstall [-k] [--user USER_ID] 包名参

未来科技

我们都知道一般的预置app是不能卸载的,需要有root权限。今天分享一个命令,帮你卸载那些你想卸载却卸载不了的系统预置app。

adshell pm uninstall[-k][-user user _ id]软件包名称

参数描述:

-k卸载应用程序并保留数据和缓存。如果没有添加-k,则将其全部删除。

- user指定用户id。Android系统支持多用户,默认用户只有一个,id=0。

您可以使用此命令,用户和调试版本都可以使用,并且可以卸载所有应用程序。是不是有点苛刻?但是,我喜欢。

比如在这里卸载360浏览器:

亚行shell pm卸载-k - user 0 com.qihoo.browser

看到成功二字,表示卸载成功。

问与答(Question and Answer)

当我第一次把这个黑科技分享给星球和集团的时候,有朋友有一些疑问:

1.我想卸载一个应用,但是不知道应用包名称?

也共享,打开应用程序并执行以下命令:

adb shell转储系统窗口| grep mCurrentFocus

返回:

mCurrentFocus = Window { 38 a8f 240 u0 com.qihoo.browser/com.qihoo.browser.BrowserActivity}

可以看到包名和当前页面类名,非常完美。

2.我卸载了一些系统应用程序。我该如何恢复它们?

黑科技虽然好,但是不要卸载那些必要的应用,比如手机。如果真的一时冲动卸载了,可以通过恢复出厂设置来恢复。没什么大问题,不用慌。

黄叔叔接着说道:

除了adb,还可以使用Debloater卸载。

Debloater是一款Android设备管理工具。Debloater无需设备root即可删除预装的安卓应用,让你的安卓设备变得轻松!Debloater由国外知名开发商gatesjunior开发。它是专门为预装了很多应用的安卓设备设计的,这样就可以不需要手机root就可以删除不需要的应用。

实现-自动权限配置

1.创建一个新的辅助函数类。

创建一个新类来继承AccessibilityService,然后使用singleton模式返回实例。

公共类AccessibilityServiceMonitor扩展AccessibilityService { private static mAccessibilityServiceMonitor;公共静态getinstance {if {//toast。MakeText,“辅助服务未启动”,Toast。LENGTH_SHORT)。展示;}返回;} @ Override public void onCreate { = this;} @覆盖public void onServiceConnected { super . onServiceConnected;//可以做一些点击两次返回Log.d等打开操作;=这个;}}

2.清单文件配置

在AndroidManifest.xml文件中配置服务

以下是一些需要注意的参数:

Android:label是系统设置中显示的辅助模式列表的标题。android:这里的资源是当前辅助模式的配置文件。具体配置见下一步。

3.辅助配置文件

在res文件夹下创建新的xml文件夹,然后创建新的文件accessibility_config.xml

这里也有必要解释一下这些参数的含义。

Android: Accessibility Event types可以模拟哪些事件类型AllMask全局事件类型typeViewClicked Click事件Android:Accessibility类型反馈类型反馈Generic通用反馈Audible语音反馈反馈口语语音反馈android:accessibilityFlags配置后,可以通过node节点获取对应节点的id。Android:CanRetrieveWindowContent允许我们的程序读取窗口中的节点和内容,当然是trueandroid:description,打开辅助功能设置界面的介绍,用来介绍哪些应用需要使用辅助功能。android:packageNames指定了要监控哪些应用的包名,这里没有配置窗口活动来监控所有应用。

从上一段我们已经知道至少有两种行为,一种是跳转,一种是点击,然后我们可以想到另一种是结束消息。所以这里定义了三种消息类型。

public static final int WHAT _ JUMP = 1;//跳转到public static final int what _ find = 2;//找到节点,用于点击public static final int what _ complete = 3;//当前进程结束。

定义消息后,在handler的handleMessage方法中处理它。

class DelayedHandler扩展处理程序{ @ override public void handle message { super . handle message;switch { case WHAT _ JUMP:break;case WHAT _ FIND:break;case WHAT _ COMPLETE:break;} } }}

4.定义具体的行为。

知道了如何实现流程之后,又遇到了一个问题,就是如何定义所有的动作。不同的权限需要打开不同的界面,不同手机的按键id也不一定相同,需要返回操作。这就不可避免地需要一个配置文件来配置整个流程,所以我们可以用一个json文件来定义整个流程和所有行为。创建新的资源文件夹assets,然后创建新的json文件step.json

[{"delay _ time": 600," type _ id": 5," describe ":"在其他应用程序上显示"," intention ":{ " uri data ":" package com . example . auto permission "," ACTION name ":" Android . settings . ACTION . manage _ overlay _ permission " }," step": [{:600," find _ text ":"其他应用程序"," action_type": "ACTION_CLICK "," click_type": "child "," reality _ node _ name ":" Android . widget . textview "," reality _ node _ id "::::":reality

这定义了两个权限:在其他应用程序上打开显示和修改系统设置。具体步骤如下

使用action跳转到其他应用程序上显示的界面。

找到包含其他已应用文本的文本视图,然后点按同一视图级别的开关或复选框。

执行ACTION_CLICK单击按钮打开。

执行GLOBAL_ACTION_BACK返回到我们的应用程序。

重复上述操作,打开修改系统设置的权限。

此时,我们自动打开两个权限,如果需要其他权限,也可以在json文件中配置。开放所有权限也不是不可能。

5.如何知道不同手机的控件名称?

刚才我们发现配置文件中配置了三种类型的开关按钮。我们怎么知道不同手机的开关按键的名字?这个时候,我们需要一个视图分析工具。这个工具在sdk文件夹的monitor.bat文件中,所以可以打开monitor工具,然后就可以分析应用视图树了。

 
友情链接
鄂ICP备19019357号-22