在做Android的GPS这一块时,根据原生代码写的Widget,运行时总是会报错说需要android.permission.WRITE_SECURE_SETTINGS权限,于是便在Manifest.xml中添加该权限,但是保存时会报错提示该权限仅用于系统的app
查看了很多资料都说需要将自写的apk文件push到system app目录下,可是项目已经报错根本就不能运行啊!!!也不知道这是什么原理,后来在群里问到需要clean一下,clean之后果真就没报错了,所以运行能生成apk,直接在手机上运行,还是报错,看来还是得要push到系统下去啊!如何push?:
以下来自http://longshuai2007.blog.163.com/blog/static/1420944142013310113737233/
在 Android 中,如果要使用系统限制的权限(比如 android.permission.WRITE_SECURE_SETTINGS),我们需要把程序安装到 /system/app/ 下。
一般手机/system目录是mount成只读的,所以我们需要重新mount成读写的
下面以 WidgetSet02.apk 为例,演示这个操作。需要准备一台已经获得 Root 权限的手机。
1、通过 USB 连接手机和电脑。
2、使用 adb 控制手机。
$ adb push WidgetSet02.apk /sdcard/ // 上传要安装的文件,为安装做准备。
$ adb shell $ su // 切换到 root 用户。如果没有获得 Root 权限,这一步不会成功。
# mount //显示当前mount情况
# mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system // 让分区可写。
# cat /sdcard/WidgetSet02.apk > /system/app/WidgetSet02.apk // 这一步可以用 cp 实现,但一般设备中没有包含该命令。如果使用 mv 会出现错误:failed on '/sdcard/NetWork.apk' - Cross-device link。
# mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system // 还原分区属性,只读。
# exit $ exit
重启,可以看到 WidgetSet02已经安装好。
其实还有一种简单的方法(Linux系统):
先一直cd,cd到你的apk文件所在的目录,然后直接将其push到系统app目录下:
$ adb remount
$ adb push WidgetSet02.apk /system/app (这样就可以直接使用该widget了)