怎么做网站上翻译泰剧,免费推广的平台都有哪些,网站建设咨询话术技巧,wordpress页面woo分类最近了解到Google 在Android12上新增了权限指示器#xff0c;可以在信号栏的右侧显示当前访问录音机和Camera的应用#xff0c;点击后可以跳转到相应应用的权限界面#xff0c;消费者可以控制权限的开启和关闭。国内手机厂商最近几年都在增加隐私看板供能#xff0c;消费者…最近了解到Google 在Android12上新增了权限指示器可以在信号栏的右侧显示当前访问录音机和Camera的应用点击后可以跳转到相应应用的权限界面消费者可以控制权限的开启和关闭。国内手机厂商最近几年都在增加隐私看板供能消费者可以看到相机、录音机被其他应用访问的记录包含次数、时长等信息。
尤其Android 14强制要求在信号区增加隐私指示器可见安卓在隐私保护上的决心。 我估计手动控制权限的开启和关闭并不是这个特性和核心。关键是Google或者说安卓系统愿意把权限的调用暴露给普通的消费者本身这个态度带来的社会效应至少让消费者最担心的声音和图像的泄露问题得到了缓解。 本文主要是探讨起技术实现原理
google官方文档链接如下中英文还是略微有些区别注意甄别https://source.android.com/docs/core/permissions/privacy-indicators
里面关键的图 上图可见核心的交互模块是AppOpsAppOps并不是Android12的新事物早在Android 4.0就有了其内部核心的几个类
AppOpsManager
IAppOpsService.aidl
AppOpsService
AppOpsCheckingServiceImpl 普通的安卓应用可以调用下述接口监听Ops的访问记录
appOpsManager.startWatchingMode(AppOpsManager.OPSTR_READ_MEDIA_AUDIO, null /* all packages */, mModeListener);其中第二个参数传null代表监听所有应用也可以传具体的包名 当关心的包名访问了具体的Ops监听者就会收到回调。 调试手段
adb shell dumpsys appops可以把ops服务的内部状态dump出来
具体解释如下 Op mode watchers:Op COARSE_LOCATION:#0: ModeCallback{7f9fe97 watchinguid-1 flags0x0 opFINE_LOCATION from uidu0a144 pid4204}#1: ModeCallback{82529b5 watchinguid-1 flags0x1 opCOARSE_LOCATION from uid1000 pid2265}#2: ModeCallback{926d7c2 watchinguid-1 flags0x0 opREAD_WRITE_HEALTH_DATA from uid1000 pid2265}#3: ModeCallback{da82a52 watchinguid-1 flags0x1 opMONITOR_LOCATION from uidu0a21 pid4702}#4: ModeCallback{efa62b9 watchinguid-1 flags0x1 opFINE_LOCATION from uidu0a21 pid4702}Op FINE_LOCATION:#0: ModeCallback{59f601b watchinguid-1 flags0x1 opFINE_LOCATION from uid1000 pid2265}#1: ModeCallback{7f9fe97 watchinguid-1 flags0x0 opFINE_LOCATION from uidu0a144 pid4204}#2: ModeCallback{926d7c2 watchinguid-1 flags0x0 opREAD_WRITE_HEALTH_DATA from uid1000 pid2265}
这是按具体的ops排列打印出所有的监听者可以配合ps -A命令查看具体的pid是哪个进程 Package mode watchers:Pkg com.microsoft.appmanager:#0: ModeCallback{5f879b8 watchinguid-1 flags0x0 opSYSTEM_ALERT_WINDOW from uid1000 pid5190}Pkg com.youku.phone:#0: ModeCallback{4e42e95 watchinguid-1 flags0x0 opSYSTEM_ALERT_WINDOW from uid1000 pid5190}#1: ModeCallback{cd0ffac watchinguid-1 flags0x0 opREQUEST_INSTALL_PACKAGES from uid1000 pid5190}
这是按具体的包名排列打印出所有的监听者可以配合ps -A命令查看具体的pid是哪个进程 Uid u0a237:statecchcapability------appWidgetVisiblefalsePOST_NOTIFICATION: modeignoreLEGACY_STORAGE: modeallowPackage com.alphainventor.filemanager:WAKE_LOCK (allow): null[Access: [top-s] 2023-11-14 11:33:19.924 (-7d1h1m54s148ms) duration42ms]READ_EXTERNAL_STORAGE (allow): null[Access: [top-s] 2023-11-14 11:33:16.111 (-7d1h1m57s961ms)]
这是按具体的Uid包名打印出最近的访问记录