权限管理AppOps


 一 什么叫权限管理?

    所谓权限管理,就是能够手动配置某个 App 的权限,进而阻止恶意软件以及防止隐私泄漏。当然,更进一步的权限管理,是能够在 App 动态使用某个权限的时候,弹窗提示用户允许和拒绝。这样的权限管理就更加类似于 Windows 中的主动防御。

 

二、系统架构

 2.1. 架构

  App Ops 的基本架构如图所示:

  

     其中包含两个重要部分,一个叫做AppOpsService,另外一个叫AppOpsManager。AppOpsService 是一个系统服务,注册的名字叫做 “appops”,由ActivityManagerService启动,启动后会调用 readWhitelist();读取预设的白名单,接下来读取data/system/appops.xml文件,解析里面的元素并存放到一个SparseArray<Op>中,以便权限检查时用。该文件在系统第一次启动的时候是没有的。后续关机或者设置中修改了应用权限的时候通过 writeState() 生成。

    AppOpsManager 是一个访问 AppOps 服务的类,同时有 Java 和 C 的实现,为了应对某些 native code 的服务,比如说 Camera。Settings 可以使用 AppOpsManger 来读取和修改权限管理信息。当其他 App 使用某个权限的时候,会通过 Binder 访问服务端的某项服务。在服务端的各个服务中都插入了检查权限的代码,同样通过使用 AppOpsManger 来检查权限。

2.2. 代码分析

 2.2.1 

  检查用户设定权限的函数是:checkOperation() 和 noteOperation(),区别是 checkOperation() 只是检查 Operation 的情况,noteOperation() 还会记录访问时间等信息,代码如下:

public int checkOperation(int code, intuid, String packageName) {

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在 Android 13 下,如果想要彻底关闭系统剪贴板并使用第三方软件接管,可以通过 ADB 命令行工具来实现。具体步骤如下: 1. 连接 Android 设备到电脑,并确保 ADB 可以正常工作。 2. 在命令行窗口中输入以下命令: ``` adb shell ``` 3. 进入 Android 系统 shell,输入以下命令: ``` cmd appops set com.android.systemui DISALLOW_PASTE 4 ``` 4. 重启系统 UI,可以通过以下命令实现: ``` pkill com.android.systemui ``` 这样就可以彻底关闭系统的剪贴板,使用第三方软件接管系统剪贴板了。请注意,上述操作需要 root 权限,并且不同的设备厂商对系统的限制可能不同,所以请在操作前做好相关准备。 ### 回答2: 要在Android 13下使用adb彻底关闭系统剪贴板并使用第三方软件接管系统剪贴板,可以按照以下步骤进行操作: 1. 首先,需要确保电脑上已经安装了adb(Android Debug Bridge)的驱动程序,并确保adb已正常工作。 2. 连接Android 13设备到电脑上,并确保已经在设备的开发者选项中启用了USB调试模式。 - 要启用USB调试模式,可以在设备的设置中找到“关于手机”或“关于设备”选项,并连续点击“版本号”直到开发者选项被启用。然后返回到设置主界面,找到“开发者选项”并进入,启用USB调试模式。 3. 在电脑上打开命令提示符(或终端)窗口,并输入以下命令来确认设备已成功连接到adb: ``` adb devices ``` 4. 确认设备成功连接到adb后,输入以下命令来关闭系统剪贴板服务: ``` adb shell service call clipboard_manager 2 i32 0 ``` 5. 通过上述命令,系统剪贴板服务已被关闭。现在,你可以安装并使用第三方软件来接管系统剪贴板。 请注意,上述操作需要谨慎执行,并且根据设备的不同,可能需要一些额外的设置或权限。确保你了解并遵守相应设备的安全和使用规定。 ### 回答3: 在Android 13下,要使用adb来彻底关闭系统的剪贴板并将剪贴板管理权转交给第三方软件,您可以按照以下步骤进行操作: 1. 首先,确保您的Android设备已连接到计算机,并已启用USB调试模式。您可以在设备的设置中的开发者选项中启用USB调试模式。 2. 在计算机上打开命令提示符或终端,并切换到adb工具的存储路径。adb工具通常位于Android SDK的平台工具文件夹中。 3. 使用以下命令检查设备是否成功连接: ``` adb devices ``` 如果设备连接成功,将显示设备的序列号。 4. 然后,使用以下命令以Root权限执行adb shell: ``` adb root ``` 这将重新启动设备并使adb shell获得Root权限。 5. 执行以下命令,打开系统的剪贴板服务设置: ``` adb shell settings put secure clipboard_service com.example.clipboardmanager ``` 将"com.example.clipboardmanager"替换为您要使用的第三方剪贴板管理软件的包名。 6. 最后,执行以下命令以确保更改已生效: ``` adb shell settings put secure enabled_input_methods com.example.clipboardmanager/.ClipboardService ``` 将"com.example.clipboardmanager"替换为您要使用的第三方剪贴板管理软件的包名。 现在,您已成功使用adb将系统的剪贴板管理权转交给第三方软件。请确保您的设备已经Root,否则可能无法执行上述步骤。请注意,使用Root权限和adb命令可能会让您的设备变得不稳定,并且可能导致损坏或数据丢失,因此在操作前请务必备份重要数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhongfan520520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值