即使在Manifest中添加了WRITE_SECURE_SETTINGS权限错误

时间:2012-10-24 08:17:13

标签: android android-manifest application-settings

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

我已经看过很多关于此问题的讨论,并且第三方软件阻止了此设置。

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

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

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

6 个答案:

答案 0 :(得分:13)

首先,正如您之前所读到的,WRITE_SECURE_SETTINGS NOT 可供应用程序使用!因此,无论您是使用root用户还是生成版本,都无法使用此权限。

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

其他一些应用程序使用像Reflection这样的技术来使用Java来访问未通过API公开的函数,你可以尝试相同的。

其次,adb remount不能像生产版本一样工作,除非手机是root用户或默认情况下固件启用它。

答案 1 :(得分:12)

我最近在努力解决这个问题。我的客户想要一个应用程序,可以在设备充电时关闭NFC(无线充电器),然后在从充电器中取出时打开。我在我的Nexus 7上运行KitKat,即使我在清单中有WRITE_SECURE_SETTINGS,在/system/app/中有应用程序,也无法运行。

事实证明,在4.4中他们增加了额外的安全性。然而,在4.3中,如果有三件事情是真的,它就会起作用:

  1. 清单有WRITE_SECURE_SETTINGS
  2. 应用位于/system/app/
  3. 包裹由钥匙(任意钥匙)
  4. 签名

    我使用来自http://www.wugfresh.com/nrt/的真棒Nexus Root Toolkit(NRT)对设备进行了植根,然后从以下位置安装了BusyBox和系统app mover:

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

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

答案 2 :(得分:3)

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

<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/

答案 3 :(得分:2)

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

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

答案 4 :(得分:0)

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

答案 5 :(得分:-3)

我能够通过启用通知访问来解决此问题。

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