PMX 常见问题
为什么我需要使用 PMX?¶
因为:
- PMX 将所有分散(或无法获取)的权限相关信息和控制项整合到单一界面,让您能够以全面便捷的方式查看并管理它们。
- 原生Android系统中没有官方工具可用于更改 AppOps。 仅部分 manifest 权限 会在权限设置中向用户展示。 PMX 以原始形式暴露所有权限。 相关:Manifest 权限和 AppOps。
- PMX 让您轻松追踪权限的任何不必要的更改。
- 通过控制您的设备, PMX 能够帮助您节省设备资源(如电池电量和网络带宽),并保护您的隐私。 您并非完全受制于应用程序和 ROM 开发者的摆布。 阅读这个 article 来获得一个想法。
- PMX 能够实时监控权限变更,并在您停止使用应用时自动撤销这些权限。 或者它可以执行 预定扫描 的权限。 所以你不必记住一切。
- PMX 让您轻松备份和恢复已安装应用的权限状态,从而无需反复调整应用权限。
另请参阅什么是 PMX?
为什么 PMX 需要 root 权限或 ADB 访问权限?¶
Android 系统有意限制应用修改其他应用的 manifest 或 AppOps 权限(在许多情况下也限制修改自身部分权限)。 这些平台保护用户隐私和系统完整性。
为执行需要提升权限的操作, PMX 采用独立的小型特权辅助程序,而非尝试通过常规应用进程完成所有操作。 默认情况下,该辅助程序在通过 ADB 启动时以 ADB 用户标识(2000)运行,而在已获取root权限的设备上则以系统用户标识(1000)运行。 如果你有一个Root设备,你可以在 Advanced Settings中更改助手的 UID。
设备尚未Root, 如何使用 PMX?¶
使用 PMX 与 ADB。 请阅读最开始的提示, 某些设备可能有一些限制。
为什么 PMX 在最新安卓系统上无法运行或无法正常工作?¶
PMX 依赖于Android的隐藏API或非SDK接口,这些接口与标准API不同,未在Android开发者上进行文档记录。 所以,在每次新的 Android 版本发布后,我们必须通过 Android 源代码来了解哪些API已经损坏(更改或删除)。
此外,修复破损的APIs需要时间;有时需要几个星期,有时需要几个月。 而且它不能保证我们总是能够修复损坏的 API。 有时,谷歌目的使我们难以或不可能继续使用隐藏的 API。
因此,只要最终的AOSP源代码尚未公开发布(在代码搜索或Git仓库上),我们就无法让 PMX 立即在每个新的Android版本(特别是测试阶段)上运行。
PMX该应用程序在GitHub和Google Play商店的应用描述中注明了其最终支持的Android版本。 当您第一次在不支持的版本上运行应用程序时,它会显示类似于以下的警告:

为什么 PMX 在 OEM 操作系统或自定义 ROMs上无法正常工作?¶
PMX 依赖于Android的隐藏API或非SDK接口,这些接口与标准API不同,未在Android开发者上进行文档记录。 因此我们需要访问您 ROM 的源代码,才能准确了解这些隐藏API的工作原理。
太好了,AOSP (由Google开发)是开源的。 但如果您的原始设备制造商(OEM)或 ROM 开发者为定制目的对AOSP进行了修改,我们无法确切知晓他们对原生AOSP代码做了哪些改动。 我们在这里非常无能为力。 这个事实在 GitHub 和 Play Store 上的应用程序描述中被说明。 抱歉。
PMX 如何更改其他应用的权限?¶
PMX 它本身既不能也无法授予或撤销其他应用的权限。 事实上,没有第三方应用程序有权这样做。 它是控制应用权限的 Android 操作系统。 PMX 仅向Android框架发送请求以更改权限状态。 现在完全取决于安卓系统对我们请求的尊重。 并非所有权限都可以更改。 若您无法通过 PMX 修改权限状态,则其他方式也无法实现此操作。
在关闭 ADB 、拒绝root权限或卸载 PMX 后,权限设置是否仍保持变更状态?¶
PMX 它本身既不能也无法授予或撤销其他应用的权限。 事实上,没有第三方应用程序有权这样做。 它是控制应用权限的 Android 操作系统。 PMX 仅向Android框架发送请求以更改权限状态。
因此,一旦权限被更改,无论您卸载 PMX 还是撤销其特权,都不会产生任何影响。 除非您或Android系统再次修改,否则该权限将保持在您所修改的状态。
为什么不能更改某些权限?¶
仅具备危险的保护级别 (和其他少数) 的清单权限是可以更改的。 AppOps 不依赖于其他某些 AppOp 可变。 这就是Android的工作方式,我们不能改变其行为。 参见 Manifest 权限说明 和 AppOps。
此外, PMX 文件保护着若干关键框架应用和权限;修改这些内容可能导致设备变砖。 查看相关问题。
请注意,从 Android 15 开始,具有 开发 保护级别的系统应用的 manifest 权限将无法撤销。 安卓静默忽略请求。
我已经更改了权限,但它无法工作。 为什么?¶
成功更改权限后,如果您没有获得所需的结果,即: 它立即还原或在几个小时或几天后恢复,安卓操作系统将被责备。 请查看:
当您使用应用程序时,安卓系统可能会更改他们的权限。 不幸的是,我们对此无能为力。 权限监视和计划的检查者在这方面可能有帮助。
为什么某些 AppOps 无法更改?¶
有时你会看到“AppOp 模式未更改”。 这意味着Android拒绝了更改 AppOp 模式的请求。 无论您使用何种方法或应用,您都不能更改它。 可能有多种原因。
-
某些 AppOps 依赖于其对应的 manifest 权限。 因此它们无法独立改变。 例如,若授予
android.permission.READ_CONTACTSmanifest 权限,则无法拒绝READ_CONTACTSAppOp。此外,如果应用程序在其 manifest 文件中未请求 manifest 权限,则其 AppOp 权限也无法被授予。 但如果应用程序试图使用它(并被拒绝),它仍可能会出现在应用程序的权限列表中。
SYSTEM_ALERT_WINDOW就是这样一个例子。 -
某些 AppOps 仅用于兼容性(例如
LEGACY_STORAGE),实际上并不控制任何功能。 如果我们了解工作原理,就会发现授予/撤销这种权限是没有必要的。 -
某些权限无法更改,如果应用程序正在运行或针对旧版本或更新版本的 Android 。
-
某些原始设备制造商(OEM)的 ROMs 在处理 AppOps时会表现异常。 参见为何 PMX 在 OEM 操作系统或自定义 ROMs上无法正常工作?
-
许多 AppOps 设备可支持两种模式:包模式和UID模式。 一个可以被更改,而另一个则不能被更改。
通常,UID AppOps 优先于其对应的包 AppOp 。 在此情况下,包 AppOp 的有效模式与其 UID AppOps的模式相同。 因此,您无法单独修改包 AppOp。
某些 AppOps 更倾向于设置为包模式,而非UID模式。 但如果它在 UID 模式中设置错误(有命令行工具或其他应用程序),它就变得无法响应任何更改。 请从右上角菜单执行"重置 AppOps"操作,使其恢复正常。 其他 AppOps 同样如此,它们具有对应的 manifest 权限,该权限包含 AppOp 保护级别。
事实上,如果我们个别挖掘每个应用和权限(这种情况不实际),就会有更多的解释。 如上所述, PMX 本身不会更改其他应用的权限。 所以,即使由于一些未知原因,安卓系统不会更改权限,或立即还原。 我们没有什么能够强迫它,因为这些都是Android 末端的限制。 相反,我应该说这是Android系统的工作方式。
关联:
为什么我在应用列表中看不到某些应用?¶
请检查 Exclusion 过滤器 。 几乎所有系统应用默认都被排除在外。 您可以排除/包含您想要从 / 到可见列表的任何包。
为什么在某些应用中看不到部分权限?¶
请检查 Exclusion 过滤器 。 不可更改的权限被排除在可见列表的默认值之外。
为什么我在ABC软件包中看不到XYZ( AppOp)?¶
请检查排除过滤器,如果 XYZ AppOp 被排除在可见列表之外。 或者ABC 软件包可能没有使用 XYZ 操作。 您无需考虑这些。
但若需查看所有应用的XYZ( AppOp )设置,请前往排除过滤器 → 附加 AppOps,永不排除,并在列表中勾选XYZ( AppOp)。
例如,在搜索框中输入 _CLIPBOARD (同时勾选深度搜索框),即可获取所有曾使用(或尝试使用) READ_CLIPBOARD 或 WRITE_CLIPBOARD 权限的应用。 时间戳也会显示(但并非所有 AppOps都会显示)。
因此,若您关注的应用未出现在搜索结果中,请在上述排除过滤器列表中同时勾选 AppOps。
我应该在高级设置中选择哪个特权守护进程 UID ? 系统还是 ADB?¶
这仅在您使用root权限时才重要,或者您的设备上运行的 adbd 程序具有root权限(最终用户设备并非如此)。
建议使用System(UID 1000),因为它比 ADB(UID 2000)具有更高的权限。 例如, 只有当系统运行时才能更改"系统固定"的权限。
在排除过滤器中什么是“无效的权限”?¶
如果某个应用请求了 manifest 权限,但该权限既未在 Android 框架中声明(提供),也未在任何已安装的软件包中声明(提供),则该权限属于无效权限。 例如,如果您的设备上未安装Play商店应用, com.android.vending.BILLING 将是一个无效的权限。
在排除过滤器中,“额外的 AppOps”指的是什么?¶
并非所有 AppOps 都用于所有已安装的应用程序。 但你可以强制要求任何应用使用 AppOp。 选定附加功能 AppOps 出现在所有应用的权限列表中,以便您进行设置。
AppOp 具有哪些不同的模式?我应该使用哪一种?¶
通常你应该允许或忽略。 或者您可能只想在应用程序在 Foreground (仅在 Android 9 及以上版本上)时允许操作。 Deny 是强烈版本的 Ignore 可能导致请求应用崩溃。 默认值是系统的默认行为,其具体表现因不同的 AppOps而异。
请注意,并非所有 AppOp 模式都能在每个 AppOp 上为每个应用程序设置。 例如在近期发布的Android版本中, CAMERA 和 MICROPHONE 仅允许用户应用在前台使用(即使设置模式为允许)。 同样地,某些 AppOps 永远无法设置为 前景 模式。
相关阅读:为什么某些 AppOps 无法更改?
官方文档:AppOpsManager。
“忽略”和“拒绝”模式有何区别? AppOp¶
Ignore 默默失败。当 Deny 向应用程序丢失错误,应用程序可能不会预料到并且可能崩溃。 您通常应该使用 Ignore。
为什么我无法将 AppOp 模式设置为前景?¶
无法为所有 AppOps设置前景模式。 即使设置完毕,也可能无法提供预期结果。
关联:
请注意,权限模式"仅在使用应用时允许"并不总是将 AppOp 模式设置为"前台":

通常我们只看到 manifest 权限的两种状态:已授予和已撤销。 但安卓使用 flags 将这两个状态分割成多个子州。 对于某些权限,相同的现象被用来实现"只有当应用程序可见时才授予"行为。 AppOp 在此情况下,权限未被使用。
为简化起见, PMX 目前不监控权限标志。 但将来可能会添加一个选项来跟踪对权限标志的更改,即使授予/撤销模式保持不变。
WAKE_LOCK 权限的作用是什么?¶
应用程序按住唤醒屏幕以保持设备唤醒,即不进入Doze模式。
如何修改 INTERNET 的权限?¶
Android 并不允许修改所有权限,例如具有 普通 保护级别 的权限(例如 INTERNET),或具有 固定 标记或 签名 保护级别的权限(通常是系统或框架应用)。 参见 Manifest 权限说明 和 AppOps。
但是如果您已经根目录, Fyrypt可以让您非常强大地控制您设备上发生的网络活动。
固定 权限是什么?¶
系统固定权限由原始设备制造商(OEM)或 ROM 开发者授予预装应用。 它们不是要改变的。 但如果您的设备已获取root权限, PMX 可修改系统固定权限。
政策解决 权限被管理设备的 IT 管理员授予(或拒绝)。 它们是不能改变的。
用户修复 权限由用户固定下来。 如果用户多次拒绝了一个应用请求的某个权限,系统会将该权限标记为用户固定,应用再次请求时不会询问用户是否授予该权限。 用户可以随意更改这种固定的权限。
我如何更改系统固定权限、签名/特权权限或框架应用的权限?¶
若您的设备已获取root权限,在付费版本中可通过高级设置中的允许关键更改选项,对带有系统固定标记、保护级别为签名或特权的权限,以及框架应用的权限进行修改。 但它不建议与系统和框架应用一起玩。 你可能会让设备变砖。
在 AppOp 权限中,"UID模式"指的是什么?¶
这是 AppOp 权限的一种模式,表示修改此 AppOp 时,也会影响其他已安装的应用(具有相同UID的应用)。 参见 sharedUserId。
请注意,对于许多 AppOps,UID 模式优先于包模式。
我能否通过 PMX控制 Android 的“若应用未被使用则移除权限”功能?¶
确定. 此功能自Android 11起可用。 在某些设备上,该功能也被标记为 "暂停未使用的应用程序活动"。

要将此选项从 PMX:
- 前往排除过滤器 → 附加 AppOps 列表,并勾选
AUTO_REVOKE_PERMISSIONS_IF_UNUSED。 - 返回主屏幕后,在顶部的搜索栏中输入
AUTO_REVOKE_PERMISSIONS_IF_UNUSED。 请确保在搜索设置中启用深度搜索。 - 设置模式允许 或 忽略 为您想要的应用。
您也可以使用 权限视图 或 批处理操作 来代替步骤 2 和 3 。 下面是使用批处理操作的指南:
为什么我总收到大量"Bad ROM"的弹窗?¶
设备制造商会对AOSP 代码 (由Google开发) 做出大量更改。 ROMs 因此,在某些定制/OEM设备上, AppOps 框架会返回出乎意料的结果,而 PMX 无法理解这些结果。 您可以忽略这些警告,但部分功能可能失效。
您可以在设置 → 常规设置 → 禁用不良 ROM 通知中关闭这些弹窗。
参见为何 PMX 在 OEM 操作系统或自定义 ROMs上无法正常工作?
”从列表中隐藏“(长按弹出)功能有何作用?¶
他们都是在可见列表中隐藏应用程序或权限。 如果您不想更改任何应用的权限,您可以隐藏它。 它将不会出现在任何应用中。 若要取消隐藏,请再次到 排除过滤器 设置。
同样,如果您不关心某个应用的权限,您可以将其排除在可见列表之外。

是否有包含所有权限及其说明的完整列表?¶
没有完整的权限列表描述,至少据我所知是这样。 PMX 专业版会显示常见权限 manifest 和 AppOp 的简要说明。
有第三方资源,比如Izzy的这个。 Android的官方开发者网站和源代码也是很好的学习来源。
每次新的 Android 版本都会添加一些新的权限,有些权限会过时。 此外,并非所有权限都需要由每个用户处理。
如何在工作资料/多用户环境中使用本应用?¶
专业版支持工作配置文件和多用户功能。 从下拉菜单中选择一个用户。

PMX 与 XPrivacyLua相比如何? 可以相互替代吗?¶
PMX 并非旨在取代,而是旨在补充诸如 XPrivacyLua之类的项目。 它们的设计目标不同。
XPrivacyLua 通过钩入内部API来破解Android的标准功能,使用 Xposed 将部分Android库替换为破解版本。 因此,我们得到了额外的功能,如向应用程序提供虚假数据,并得到与权限有关的事件的通知,而这是我们无法通过任何其他正常手段知道的。
PMX 另一方面,它并非作为框架模块而设计。 它可以方便地访问某些正常应用无法使用的特权API。 它不会以任何方式修改Android系统的标准功能。 PMX 执行的多数任务也可通过命令行完成,但部分操作除外,例如修改系统固定权限。
获取root权限和 Xposed 是使用 XPrivacyLua的两个严格要求。 PMX 不需要这两者中的任何一个。 这两样东西对许多设备来说都是不可用的,或者由于所涉及的技术困难、保修失效、SafetyNet失效和其他问题,许多用户不考虑将其作为一种选择。
PMX 能否像Bouncer那样在应用关闭时自动撤销权限?¶
确定. 参见权限监视器和定时检查。 但它不使用 Android 的 Accessibility 功能来代表用户在屏幕上进行taps / 点击(尽管这是一个好的功能,无需额外设置)。 PMX 依赖于root或 ADB 权限。 因此它能实现的功能远超辅助功能所能提供的(详见什么是 PMX?)。
若您使用的是 ADB且非 root 用户,权限监视器 在某些设备上可能无法正常工作。 请参阅 ADB的限制。
安装新应用时是否有通知提示?¶
确定. 请参阅权限Watcher。
因为Android 8无法让后台(无法运行) 应用获得新安装应用的通知。 所以我们必须运行一个前台服务(持续通知) 才能接收此事件。 或者,您可以考虑使用 计划的检查 来保留物品。
当安装新应用时, PMX 能否默认取消其权限?¶
确定. 但是没有权限删除。 所有可撤销的 manifest 权限均已撤销,并将保持撤销状态,除非用户明确授予这些权限。 就 AppOps 而言,其中许多文件至少在应用程序使用一次后才会出现,例如 VIBRATE 和 READ_CLIPBOARD。 正如所指出的,许多其他用户(例如 READ_CONTACTS)的 manifest 权限已被降级。 因此在应用安装时无法预知应移除哪个 AppOps。
但当安装新应用时会显示通知(若使用权限监视器),用户可逐项设置权限或应用配置文件。
为什么 PMX 需要互联网权限?¶
独立的专业版 需要互联网连接以验证许可证。 其他 versions可以完全离线工作。 虽然Play Store应用程序需要互联网连接才能验证许可证。
可选使用 android.permission.INTERNET 权限¶
- 检查更新. 您可以在应用设置中禁用此功能。
本地(设备上)使用 android.permission.INTERNET 权限¶
Android 系统不允许应用在未获得 INTERNET 权限的情况下创建网络套接字,即使这些套接字仅用于本地操作而非互联网连接。 PMX 本地(设备内)连接(即在 127.0.0.1创建 localhost 套接字的能力)有两种用途,用于进程间通信(IPC):
- PMX 启动一个具有 root / ADB 特权的后台进程,并通过网络套接字与该进程通信。 在最初握手后,这两个进程开始在绑定器上交谈。 我们做这件事没有更好的方法,因为安卓系统也不允许应用程序通过 UNIX 域套接字。
- 如果您的设备未获取root权限,且您使用 PMX 配合 ADB,则连接
adbd需要互联网权限。 PMX 是否通过 ADB 在网络上监视我?
因此,如果应用无法创建或使用本地网络套接字,它将失败。 若需阻止 PMX 访问互联网,必须确保该应用仍能通过 用于进程间通信的回环接口 与设备上的进程进行通信。 这种情况通常出现在基于 iptables的防火墙(如Fyrypt)以及基于VPN的防火墙(如NetGuard)中。 但某些 ROMs 内置了禁止网络访问的功能:

这不仅会阻止应用使用互联网,而且也会禁用其为 IPC 创建循环套接口的能力。 因此,如果拒绝此权限,PMX 将无法获得root/ ADB 权限。
PMX 对隐私的友好程度如何? 您是否收集用户数据?¶
否. 我们不收集您的数据。 永远没有。 连一个字节都没有。 PMX 拥有开源版本。 我们坚信用户应当充分了解并知晓为何使用 PMX。 我们尊重你的隐私,所以从未收集过任何数据,甚至是崩溃日志。 您可能还想查看我们的隐私政策。
PMX 是否通过 ADB 在网络上监视我?¶
否.
PMX 通过本地主机(127.0.0.1)与 adbd 进程进行通信。 但无法仅在本地主机监听 adbd ,而不监听其他网络接口(因为 ADB 本应在外部PC上使用)。 您完全可以阻止 adbd 监听外部IP地址,如果可以的话。 PMX 仍可正常运行,且无需向外部暴露任何端口。
此外,您还可以在高级设置中将 5555 端口更改为任意数字。 它不是硬编码的。
此外, ADB 由于 Android 4.2 旨在通过 RSA 密钥认证(最强大的认证机制之一)进行保护。 因此,即使该设备可通过互联网访问(这种情况极不可能发生),在未经身份验证的情况下,任何人都无法建立 ADB 连接。
无论你想以何种方式验证这些说法。 我们来这里是为了向你提供技术援助。
PMX 是否滥用 root 权限来收集我的数据?¶
我们坚信最小权限原则。 但由于Android操作系统的限制性, PMX 在没有高权限的情况下无法运行。 我们能提供的是,如果你是一个技术熟练的人,我们可以教你如何使应用程序难以连接到网络,即使有root权限。
我认为 PMX 毫无用处。 你为什么要开发这个软件?¶
我们尊重你的意见。 PMX 并非适合所有人(正因如此,它多年未打磨发布,因为我们深知受众极其有限)。 它只适用于一些对自己的隐私和设备控制格外关注的熟谙科技的灵魂。 大多数的手机用户只是任他们的设备制造商和应用程序开发人员所把持。 他们不知道他们做了些什么和他们的数据。 多数人更看重便利而非隐私。 这很好。