Android:将应用添加到固件,使用WRITE_SECURE_SETTINGS

我正在尝试编写一个可以打开和关闭移动数据连接的应用程序.
已经获得了源代码并构建了自己的SDK,在其中我删除了@hide语句,因此可以使用相关功能

cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
cm.setMobileDataEnabled(true);

还找出了我需要哪些权限,特别是WRITE_SECURE_SETTINGS,该权限仅适用于系统应用程序.我读了adamk的comment,现在需要知道如何执行他建议的操作(将应用添加到系统或使用平台密钥对其进行签名).

首先,我只想在仿真器上执行此操作,然后在我的手机(已植根并使用自定义ROM)上执行此操作.
我尝试将其推送到模拟器上的系统目录:

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

无法正常运行,则未找到并安装该应用.

我忘记了什么?如何正确地做到这一点?

最佳答案
因此,我终于找到了问题并解决了.
我实际上很接近:

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

这是在模拟器上执行此操作的正确方法(不需要adb同步).我查看了logcat,发现您需要对.apk文件进行签名,因此系统不会拒绝它,即使在这种情况下不会增加任何有效性.
如果您以这种方式推送已签名的.apk,它将获得所需的权限并按预期工作—在我的情况下,打开和关闭移动数据连接.
对于电话部分(使用ClockworkMod):
引导到恢复模式,挂载/ system文件夹并启用USB存储.然后,以与仿真器相同的方式进行操作,重新启动电话,一切顺利.
希望这对遇到相同问题的人有所帮助.

相关文章

AdvserView.java package com.earen.viewflipper; import an...
ImageView的scaleType的属性有好几种,分别是matrix(默认)...
文章浏览阅读8.8k次,点赞9次,收藏20次。本文操作环境:win1...
文章浏览阅读1.2w次,点赞15次,收藏69次。实现目的:由main...
文章浏览阅读3.8w次。前言:最近在找Android上的全局代理软件...
文章浏览阅读2.5w次,点赞17次,收藏6次。创建项目后,运行项...