- 浏览: 848770 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
loveseed1989:
您好,我用您的方法运行Cone.java,会给我报java.l ...
vtk学习笔记 --- 编译vtk库和java库 -
60love5:
60love5 写道首先谢谢你的解析,但你这个验证可见性的小程 ...
多线程中共享对象的可见性 -
60love5:
首先谢谢你的解析,但你这个验证可见性的小程序是存在问题的,你的 ...
多线程中共享对象的可见性 -
Gamehu520:
...
java 中的Unsafe -
shanpao1234560:
这个list不是静态的第一种情况下也会有线程安全的问题么,求指 ...
一个看似线程安全的示例
老早之前,写了一个android软件包静默安装的应用,放在工作空间很久了,今天整理项目的时候发现了,拿出来晒晒!
软件实现的功能:当需要静默安装(即不弹出安装确认对话框,后台自动安装)时,启动安装服务,将待安装的软件包的路径放置到intent中,然后启动安装服务即可,在软件成功安装以后,会发送广播,你只需要接受对应的广播,即可获知软件是否安装成功!
软件的关键代码:
class PackageInstallObserver extends IPackageInstallObserver.Stub { public void packageInstalled(String packageName, int returnCode) { Intent intent = new Intent(Constants.ACTION_INSTALLED); intent.putExtra(Constants.EXTRA_INSTALL_RESULT, returnCode); intent.putExtra(Constants.EXTRA_PACKAGE_NAME, packageName); String apkName = map.get(packageName); if( apkName != null )intent.putExtra(Constants.EXTRA_APK_NAME, apkName); mContext.sendBroadcast(intent); } }
这个类通过名字大概可以看出来,就是一个观察者,当安装成功或者失败的时候,就会调用该类的packageInstalled方法,因此,我们可以将安装成功或者失败的响应代码写在这里,上面的类就是发送广播,告诉别人软件安装成功。
public void install(String apkPath,String apkName) { File file = new File(apkPath); if( !file.exists()) return ; Uri mPackageURI = Uri.fromFile(file); int installFlags = 0; PackageManager pm = getPackageManager(); PackageInfo info = pm.getPackageArchiveInfo(apkPath, PackageManager.GET_ACTIVITIES); if(info != null){ try { PackageInfo pi = pm.getPackageInfo(info.packageName,PackageManager.GET_UNINSTALLED_PACKAGES); if( pi != null){ installFlags |= PackageManager.INSTALL_REPLACE_EXISTING; } } catch (NameNotFoundException e) { } //把包名和apkName对应起来,后面需要使用 map.put(info.packageName, apkName); IPackageInstallObserver observer = new PackageInstallObserver(); pm.installPackage(mPackageURI, observer, installFlags, info.packageName); } }
这个方法就是关键的软件包安装方法,首先检查给定的软件安装包是否存在,后面的代码就是判断系统当前是否已经安装了该软件,如果已经安装了,则设置安装参数为替换。
pm.installPackage(mPackageURI, observer, installFlags, info.packageName);
这行代码调用PackageManager的installPackage方法进行软件包安装,并注册一个观察者。
另一种方式安装软件包,是通过发送intent请求,让系统来安装,所以我们无法控制安装提示界面。而该方式是自己直接调用系统的核心方法,跳过了安装确认界面,这样来实现静默安装。
分析,因为这个api是系统影藏api,直接调用会报错,因此这个应用需要到源码环境下才能编译成功,关键源码环境的搭建可以参考博客:http://aswang.iteye.com/blog/1089841。
另外,由于是调用了系统隐藏api,所以这个应用也必须安装到系统app目录下才能够调用成功。因此,使用这种方式适合这样的需求:第一,适合于内置到rom中,第二,或者是获取了系统root权限,然后将该app拷贝到system/app目录,并设置好权限,现在android手机基本都获取了root权限,这种方式也不难实现。
希望能给需要的人一点帮助~
评论
1.文章中提到“或者是获取了系统root权限,然后将该app拷贝到system/app目录,并设置好权限,”,请问设置好权限这个应该怎么操作。
2.程序源码的Manifest.xml没加入system.uid对吧?纯是移动到system/app目录下?
3.接1,如果我放到data/app目录下也相当于安装了程序,但是我发现权限和正常安装到机器中的不一样,请问那个权限要怎么更改呢。
4.将程序移动到system/app目录下,这个操作在没有数据线的前提条件下需要用户手动操作对吗?
请解答,谢谢。
另外留一个联系方式,希望能得到LZ的帮助 QQ 371641911,谢谢。
手机如果破解了,可以使用chmod这样的命令来修改文件的权限,也可以使用其他的命令来将apk复制到指定的目录。
如果是在system/app目录,就不需要加system.uid。直接复制到data/apk目录,还是需要看看权限对不,不对也需要修改
感谢您的解答。
还有两个疑惑。
具体的修改权限代码能否提供一个呢,另外在写在哪里呢,可以理解为写到onCreate么,具体是否还需要其他代码诸如权限。
另一个,用命令将apk移动到system/app,复制过去以后是否还需要修改权限,另外可以程序自身复制自己么?
1.文章中提到“或者是获取了系统root权限,然后将该app拷贝到system/app目录,并设置好权限,”,请问设置好权限这个应该怎么操作。
2.程序源码的Manifest.xml没加入system.uid对吧?纯是移动到system/app目录下?
3.接1,如果我放到data/app目录下也相当于安装了程序,但是我发现权限和正常安装到机器中的不一样,请问那个权限要怎么更改呢。
4.将程序移动到system/app目录下,这个操作在没有数据线的前提条件下需要用户手动操作对吗?
请解答,谢谢。
另外留一个联系方式,希望能得到LZ的帮助 QQ 371641911,谢谢。
手机如果破解了,可以使用chmod这样的命令来修改文件的权限,也可以使用其他的命令来将apk复制到指定的目录。
如果是在system/app目录,就不需要加system.uid。直接复制到data/apk目录,还是需要看看权限对不,不对也需要修改
1.文章中提到“或者是获取了系统root权限,然后将该app拷贝到system/app目录,并设置好权限,”,请问设置好权限这个应该怎么操作。
2.程序源码的Manifest.xml没加入system.uid对吧?纯是移动到system/app目录下?
3.接1,如果我放到data/app目录下也相当于安装了程序,但是我发现权限和正常安装到机器中的不一样,请问那个权限要怎么更改呢。
4.将程序移动到system/app目录下,这个操作在没有数据线的前提条件下需要用户手动操作对吗?
请解答,谢谢。
另外留一个联系方式,希望能得到LZ的帮助 QQ 371641911,谢谢。
首先搭建源码环境,然后把eclipse中的项目拷贝到源码的某个目录,一般是放到packages/app目录,然后对比这其它的app,新建一个Android.mk文件,最后使用ndk-build来编译
不会吧,我还没看过他是如何实现的
发表评论
-
基于Oracle Streams + Oracle AQ 捕获变更,发布变更(二)
2014-11-21 22:23 3220要求:使用Oracle Streams捕获某个用户下部 ... -
基于Oracle Streams + Oracle AQ 捕获变更,发布变更(一)
2014-11-20 22:23 2813要求:使用Oracle Streams捕获某个用户下部分表 ... -
如何去掉在浏览器中打开java applet时的警告对话框
2013-08-24 12:10 7003好久没更新博客了! 最近,由于项目要求,需要将sw ... -
Android 内存泄露笔记
2013-03-05 23:10 01、大部分内存泄露都是错误的持有了Activity或者Con ... -
java 虚拟机总结 【思维导图】
2012-12-22 20:11 2101java虚拟机总结思维导图: 参考《深入理解jav ... -
Java虚拟机字节码执行引擎 【思维导图】
2012-12-22 19:51 1700java虚拟机字节码执行引擎思维导图总结: 参考《深入理 ... -
java 垃圾回收相关总结 【思维导图】
2012-12-21 19:03 3292java垃圾回收相关总结: 参考《深入理解java ... -
java并发中的延迟初始化
2012-12-12 19:17 4711在《java并发编程实战 ... -
java同步容器与并发容器
2012-12-09 18:07 4368何为同步容器:可以简 ... -
一个看似线程安全的示例
2012-12-09 14:56 5085在《java并发编程实战》第四章4.4.1节给出了一个程序示 ... -
多线程中的long和double
2012-12-08 19:26 4213在看一些代码的时候,会发现在定义long型和double型的 ... -
多线程中共享对象的可见性
2012-12-08 18:52 5165在阅读《java并发编程实战》的第三章的时候,看到书中的一个 ... -
一个快速、轻量级 Collection 库 Trove
2012-12-07 09:35 3777Trove一个快速、轻量级针对java原子类型(byte,i ... -
java 中的Unsafe
2012-12-05 22:25 32770在阅读AtomicInteger的源码时,看到了这个类:su ... -
在ubuntu10上编译Thrift0.8.0
2012-08-01 15:34 2165下载thrift0.8.0 ,地址: http:// ... -
生活小工具--记账小助手1.0发布
2012-05-31 15:08 1767因为自己平时喜欢记账,把每日的消费情况都记录下来,所以希望找 ... -
话费速查升级版v1.3发布
2012-05-04 12:47 1447前段时间开发了一个话费速查的小应用,最近一直保持每周更新一个 ... -
编译zeromq的java绑定:jzmq
2012-05-03 22:47 135541、 下载zeromq源码:http://www.ze ... -
最方便的联通话费,余额查询软件来了! --- 联通话费速查v1.2
2012-04-12 18:01 4052软件介绍: 联通话费速查是一款针对联通 ... -
android开发之定制标题栏 --- 附源码
2012-04-11 21:53 12188在开发上个应用 话费 ...
相关推荐
"SMART 200系列地址库:灵活配置的位读写系统",SMART 200 寻址-库 6个子 位:一个读,一个写 读:例如 读取从V0.0开始的第N个位的状态 写:例如 将值写入V0.0开始的第N个位中 起始地址和第几个位都可自定义 字节:读写一体,引脚控制读或写 字:读写一体,引脚控制读或写 双字:读写一体,引脚控制读或写 实数:读写一体,引脚控制读或写 ,核心关键词:SMART 200; 寻址-库; 子位; 读; 写; 起始地址; 自定义; 字节; 字; 双字; 实数。,"SMART 200库:位寻址与多读写功能"
1、文件内容:perl-ExtUtils-Manifest-1.61-244.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/perl-ExtUtils-Manifest-1.61-244.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
多水下航行器协同定位的MATLAB仿真:基于《Cooperative Localization for Autonomous Underwater Vehicles》的研究与实践,【7】MATLAB仿真 多水下航行器协同定位,有参考文档。 主要参考文档: 1. Cooperative Localization for Autonomous Underwater Vehicles,The International Journal of Robotics Research 主要供文档方法的学习 非全文复现。 ,MATLAB仿真; 多水下航行器协同定位; 参考文档; 自主水下航行器; 机器人学国际期刊; Cooperative Localization。,MATLAB仿真:多水下航行器协同定位研究参考国际期刊论文
基于大语言模型的多模态社交媒体信息流行度预测研究
1、文件内容:perl-Algorithm-Diff-1.1902-17.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/perl-Algorithm-Diff-1.1902-17.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
《基于分时电价下电动汽车多类型充放电调度策略优化及其经济与负荷曲线改善分析》,11-分时电价下电动汽车充放电调度策略优化-100% 摘要:代码主要做的是分时电价下电动汽车充放电策略的优化,电动汽车选取了四种典型的类型,包括比亚迪EV,尼桑EV,宝马mini以及三菱EV,四种类型电动汽车取若干辆,约束重点关注充放电约束、蓄电量约束、0-1启停约束等等,目标函数为经济效益最优,同时考虑负荷曲线的改善,并通过图展示其结果,具体看下图。 ,核心关键词: 分时电价; 电动汽车; 充放电策略优化; 类型; 约束; 经济效益; 负荷曲线改善; 图展示。,电价优化下电动汽车充放电调度策略研究
IMG_20250130_120659.jpg
该项目是一款基于JavaScript、TypeScript和微信小程序开发的火车票购票系统源码,包含1634个文件,涵盖395个JavaScript文件、293个TypeScript文件、271个JSON配置文件、240个WXML模板文件、232个WXSS样式文件、138个WXS脚本文件,并辅以22个PNG图片、19个Markdown文档和1个JPG图片。该系统旨在提供便捷的火车票购票服务。
驱动DHT11要学会看数据手册
《COMSOL模拟增强型地热开采采热井温度变化一年周期的瞬态分析》,comsol增强型地热开采 本模型采用达西定律接口、多孔介质传热接口、非等温管道流接口,采用瞬态求解器,求解采热井一年的温度变化 ,comsol; 增强型地热开采; 达西定律接口; 多孔介质传热接口; 非等温管道流接口; 瞬态求解器; 采热井温度变化,《COMSOL模型在地热开采中模拟采热井一年温度变化的研究》
0016-08-16122503-曾洋.zip
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
week01_lab_solutions.ipynb
免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
Golang. KisFlow(Keep It Simple Flow).
免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1、文件内容:perl-B-Keywords-1.13-2.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/perl-B-Keywords-1.13-2.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
1、文件内容:perl-Net-DNS-Nameserver-0.72-6.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/perl-Net-DNS-Nameserver-0.72-6.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
基于Comsol模拟的近场金属探针激发表面等离子体激元(SPP)的研究,Comsol近场金属探针激发SPP。 ,Comsol; 近场金属探针; SPP; 激发。,"Comsol模拟激发金属探针的SPP现象"