即使在清单中添加 WRITE_SECURE_SETTINGS 权限错误

Posted

技术标签:

【中文标题】即使在清单中添加 WRITE_SECURE_SETTINGS 权限错误【英文标题】:WRITE_SECURE_SETTINGS permission error even when added in Manifest 【发布时间】:2012-10-14 06:15:51 【问题描述】:

我在 Manifest 中添加了“android.permission.WRITE_SECURE_SETTINGS”。但我仍然收到一条错误消息 - 需要“WRITE_SECURE_SETTINGS”。

我已经看到很多关于此的讨论,并且第三方软件禁止此设置。

我可以通过其他方式添加我的应用程序以获得此权限吗?

我已经看到了这个 adb 命令,但我不太熟悉如何使用它来将我的应用程序添加到我的设备,下面的命令是需要 root 我的设备才能使用它,因为它无法通过只读文件复制系统?

adb remount
adb push app.apk /system/app/

【问题讨论】:

某些应用程序以某种方式使用该设置。可能通过反射?可以通过adb shell pm 系列命令添加权限。 我不得不暂时取消选择开发人员设置 > 应用程序 > 启用权限监控。 【参考方案1】:

首先,正如您之前阅读的,WRITE_SECURE_SETTINGS 可用于应用程序!因此,无论您是使用 root 版本还是生产版本,都不能使用此权限。

因此,如果您希望启用此设置,请创建您自己的固件来满足您的需求,并将该固件加载到您希望的任何设备上。或者,将您的更改贡献给现有的固件模块(例如 Cyanogen)。

其他一些应用程序使用 Reflection 等技术使用 Java 来访问未通过 API 公开的函数,您或许可以尝试同样的方法。

其次,adb remount 在生产版本中无法正常工作,除非手机已获得 root 权限或固件默认启用它。

【讨论】:

请注意,许多安全设置可用于专用 cosu 设备; developer.android.com/work/cosu【参考方案2】:

我想补充一点,可以通过 adb 授予 WRITE_SECURE_SETTINGS 权限,并且这种方法不需要 root。这是一个命令:

adb shell pm grant your.package.name android.permission.WRITE_SECURE_SETTINGS

【讨论】:

为我工作,伙计。我们可以在应用程序中以编程方式运行此 ADB 命令吗? 不,你不能。用户必须手动运行它,但之后您的应用将拥有 WRITE_SECURE_SETTINGS 直到它被卸载或应用数据被擦除 感谢@JustHobby 的回复。更新应用程序后遗嘱权限会删除还是会保留? 不适用于小米红米 Note 6 (Android Oreo): 有谁知道要求用户这样做是否符合 Google Play 政策?如果我要求用户做违反他们政策的事情,我害怕被禁止。【参考方案3】:

我最近在这件事上苦苦挣扎。我的客户想要一个应用程序,它可以在设备充电(无线充电器)时关闭 NFC,然后在从充电器中取出时打开。我在我的 Nexus 7 上运行 KitKat,即使我在 Manifest 中有 WRITE_SECURE_SETTINGS,在 /system/app/ 中有应用程序,它也无法工作。

事实证明,在 4.4 中他们增加了额外的安全性。但是,在 4.3 中,如果满足以下三点,它就会起作用:

    清单有WRITE_SECURE_SETTINGS 应用在/system/app/ 包由密钥(任意密钥)签名

我使用来自http://www.wugfresh.com/nrt/ 的出色 Nexus Root Toolkit (NRT) 对设备进行了植根,然后从以下位置安装了 BusyBox 和系统应用程序移动器:

https://play.google.com/store/apps/details?id=stericson.busybox https://play.google.com/store/apps/details?id=de.j4velin.systemappmover

我安装了我的自定义签名 APK 并使用系统应用程序移动器将其移动到位,然后重新启动设备。它工作得很好。希望这会有所帮助。

【讨论】:

你知道 4.4 中有哪些额外的安全性吗? 已经 6 个多月了,但我记得在 4.4 中,要在 /system/app 中以 root 身份运行的应用程序必须使用与系统签名相同的 APK 签名密钥进行签名。 我知道已经有一段时间了,但是您有任何链接或参考资料说明这一点吗?我没有在网上找到任何东西,但我已经阅读了有关 /system/priv-app 作为放置系统应用程序的新位置的信息……尽管这似乎对我也不起作用。 我曾在 intangibleobject.com 询问过他们的 Tasker 安全设置插件。其中一位作者,Corey Z,回复了一些关于它的信息。我还没有看到它在线记录。 在 android 4.4 中在 /system/priv-app 上放置一个 apk【参考方案4】:

对于我使用的需要 WRITE_SECURE_SETTINGS 权限的 api,我必须将其包含在清单中:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
...
coreApp="true"
android:sharedUserId="android.uid.system">

<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
...

参考:https://github.com/android/platform_packages_apps_settings/blob/master/AndroidManifest.xml

我还必须将应用程序作为系统应用程序运行(在:/system/app 下)。 这是一个操作方法:http://www.addictivetips.com/mobile/how-to-install-any-app-as-system-app-on-android/

【讨论】:

【参考方案5】:

我也遇到过这种情况,然后我遵循以下规则: 1.在清单中添加 WRITE_SECURE_SETTINGS 2.制作自己的固件 3.添加 LOCAL_CERTIRICATE := 平台

【讨论】:

【参考方案6】:

试试这个,

adb shell pm grant your.package.name android.permission.WRITE_SECURE_SETTINGS

【讨论】:

【参考方案7】:

我可以通过启用通知访问来解决这个问题。

go to settings
click on sound and notification
scroll down
click on notification access

【讨论】:

以上是关于即使在清单中添加 WRITE_SECURE_SETTINGS 权限错误的主要内容,如果未能解决你的问题,请参考以下文章

即使在添加类路径和主类之后也没有主清单属性 maven 构建

即使在清单文件中声明了适当的权限,也无法访问相机

即使在清单中设置了权限,权限异常[重复]

ValueError:即使在 collectstatic 之后也缺少静态文件清单条目

ansible总结

WRITE_EXTERNAL_STORAGE 无法在棒棒糖上工作,即使它已在清单中设置