即使在清单中添加 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 构建