2012-10-24 27 views
6

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

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

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

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

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

回答

10

首先,正如你之前阅读,WRITE_SECURE_SETTINGS是提供给应用程序!因此,无论您是在根目录还是在生产版本中,都无法使用此权限。

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

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

其次,adb remount不能像生产版本那样工作,除非电话是固定的或固件默认启用它。

11

我最近很苦恼这件事。我的客户想要一个应用程序,可以在设备充电时关闭NFC(无线充电器),然后再从充电器中取出NFC。我在Nexus 7上运行KitKat,即使我在清单中有WRITE_SECURE_SETTINGS,而在/system/app/中的应用程序,它也不起作用。

原来,他们在4.4中增加了额外的安全性。然而,在4.3,它的工作原理,如果三样东西是真实的:

  1. 清单有WRITE_SECURE_SETTINGS
  2. 应用程序是在/system/app/
  3. 封装是关键(任意键)签署

我扎根该设备使用来自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,并使用系统应用移动设备将其移动到位,然后重新启动设备。它工作完美。希望这可以帮助。

+0

你知道是什么额外的安全性在4.4? – brianestey

+0

已经有6个多月的时间了,但是我记得应用程序在4.4中以root身份运行/ system/app时,必须使用与签署系统相同的APK签名密钥进行签名。 –

+0

我知道这已经有一段时间了,但你有任何链接或参考指出这一点?我没有在网上找到任何东西,但我已经读过关于/ system/priv-app作为放置系统应用程序的新位置......虽然这似乎也不适用于我。 – brianestey

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

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

0

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

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

我遇到这种情况也一样,然后我按照规则如下:在清单 1.增加WRITE_SECURE_SETTINGS 2.make我自己的固件 3.添加LOCAL_CERTIRICATE:=平台

相关问题