一种基于反射机制的Android应用自动更新方法及系统技术方案

技术编号:14897572 阅读:53 留言:0更新日期:2017-03-29 12:54
本发明专利技术公开了一种基于反射机制的Android应用自动更新方法及系统,该方法包括以下步骤:S1、用户打开需要更新的应用程序时,执行Android应用自动更新的命令,下载新版本的应用程序;S2、通过java的反射机制,获取Android系统的安装程序调用服务,通过安装程序调用服务调用安装包管理对象和其中的程序自动安装方法;S3、自动关闭当前版本的应用程序,通过程序自动安装方法对应用程序进行自动更新,更新完毕后返回安装状态参数;S4、根据返回的安装状态参数,判断自动更新的应用程序是否安装正确,若安装正确则自动打开更新后的应用程序。本发明专利技术无需获取管理员权限就能完成对程序的自动更新,且更新过程用户体验较好。

【技术实现步骤摘要】

本专利技术涉及Android系统
,尤其涉及一种基于反射机制的Android应用自动更新方法及系统。
技术介绍
近年来Android应用在日益增多,每个Android应用的版本会非常频繁的更新,但是普通的更新方式还需要让用户点来点去的安装。这会导致用户对于更新程序有一定的反感,如果有一种方案能让程序实现自动更新,这对于不管是开发者开始使用者都是一个很好的方案。一方面Android应用会及时使用最新的功能。另一方面,开发者也不用再去考虑旧版本的兼容问题了。当前已有的自动更新方案都是需要用户手机有root权限,这对于用户来说是很敏感的,因为有了root权限后就会增加手机信息泄露的风险。因此,对于用户来说,为了自动更新而给予应用root权限是一件非常不划算的事情。
技术实现思路
本专利技术要解决的技术问题在于针对现有技术中自动更新软件需要获取管理员权限的缺陷,提供一种基于反射机制的Android应用自动更新方法及系统。本专利技术解决其技术问题所采用的技术方案是:本专利技术提供一种基于反射机制的Android应用自动更新方法,包括以下步骤:S1、用户打开应用程序时,若该应用程序有需要更新的版本,执行Android应用自动更新的命令,下载新版本的应用程序,并获取已经下载完成的应用程序在系统中的安装包路径;S2、通过java的反射机制,获取Android系统的安装程序调用服务,通过安装程序调用服务调用安装包管理对象,并获取安装包管理对象中的程序自动安装方法;S3、自动关闭当前版本的应用程序,通过程序自动安装方法对应用程序进行自动更新,更新完毕后返回安装状态参数;S4、根据返回的安装状态参数,判断自动更新的应用程序是否安装正确,若安装正确则自动打开更新后的应用程序。进一步地,本专利技术的步骤S2中获取的Android系统的安装程序调用服务为android.os.ServiceManager服务。进一步地,本专利技术的步骤S2中调用的安装包管理对象为IPackageManager对象。进一步地,本专利技术的步骤S2中的程序自动安装方法为installPackage方法。进一步地,本专利技术的步骤S2中通过java反射机制获取程序自动安装方法的具体方法为:S21、获取Android系统类中的forName方法,向forName方法中填入参数android.os.ServiceManager来获取到反射类;S22、通过向系统类getMethod中填入参数getService和String.class,获取到反射类中的getService方法;S23、通过系统类getMethod中的invoke方法向getService方法填入参数null和package名称得到IBinder方法;S24、结合IBinder方法和Stub.asInterface方法,填入参数IBinder得到生成的IPackageManager对象;S25、调取IPackageManager对象中的installPackage方法。进一步地,本专利技术的步骤S3中返回的安装状态参数包括:basePackageName、returnCode、msg和extras;其中:basePackageName用于判断安装的应用程序的名称是否一致,若名称一致,则继续执行自动更新操作;若名称不一致,则终止自动更新操作;returnCode用于判断应用程序是否安装成功,若returnCode的值为1,则表示应用程序安装成功,调用startApp方法开启应用程序;若returnCode的值不为1,则表示应用程序安装失败。进一步地,本专利技术的该方法还包括提升自动更新程序的系统级别的方法,具体包括:若自动更新程序受到手机厂商设置的权限限制时,在配置清单文件里面添加INSTALL_PACKAGE权限然后把该应用的uid设置为系统级别,在manifest标签下添加以下属性:android:sharedUserId=\android.uid.system\。本专利技术提供一种基于反射机制的Android应用自动更新系统,包括:自动更新程序启动单元,用于在用户打开应用程序时,若该应用程序有需要更新的版本,执行Android应用自动更新的命令,下载新版本的应用程序,并获取已经下载完成的应用程序在系统中的安装包路径;反射机制单元,用于通过java的反射机制,获取Android系统的安装程序调用服务,通过安装程序调用服务调用安装包管理对象,并获取安装包管理对象中的程序自动安装方法;程序自动安装单元,用于自动关闭当前版本的应用程序,通过程序自动安装方法对应用程序进行自动更新,更新完毕后返回安装状态参数;程序检验单元,用于根据返回的安装状态参数,判断自动更新的应用程序是否安装正确,若安装正确则自动打开更新后的应用程序。进一步地,本专利技术的反射机制单元包括:安装程序调用模块,用于获取系统的android.os.ServiceManager服务作为安装程序调用服务,并获取系统类中的forName方法,向forName方法中填入参数android.os.ServiceManager来获取到反射类;安装包管理对象调用模块,用于向系统类getMethod中填入参数getService和String.class,获取到反射类中的getService方法,通过getService方法得到IBinder方法,并生成IPackageManager对象进行安装包管理对象的调用;自动安装方法调用模块,用于调取进行安装包管理的PackageManager对象中的installPackage方法。进一步地,本专利技术的系统还包括能够加载到Android系统中的系统自动更新程序级别提升单元,用于在自动更新程序受到手机厂商设置的权限限制时,在配置清单文件里面添加INSTALL_PACKAGE权限然后把该应用的uid设置为系统级别,在manifest标签下添加以下属性:android:sharedUserId=\android.uid.system\。本专利技术产生的有益效果是:本专利技术的基于反射机制的Android应用自动更新方法,通过反射机制获取系统的自动更新方法,不用获取Android系统的root权限,使自动安装过程更加安全,有效的防止恶意软件通过root权限获取手机信息;并且该安装方法无需用户点击更新,避免了大量的应用进行频繁更新对用户体验的影响,提高了用户使用手机时的舒适度;另外,在自动安装完成后,通过对自动更新的程序进行检测,进一步的保证了安装的程序的准确性,提高了安全性。附图说明下面将结合附图及实施例对本专利技术作进一步说明,附图中:图1是本专利技术实施例的流程图;图2是本专利技术实施例的具体流程图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术。如图1所示,本专利技术实施例的基于反射机制的Android应用自动更新方法,包括以下步骤:S1、用户打开应用程序时,若该应用程序有需要更新的版本,执行Android应用自动更新的命令,下载新版本的应用程序,并获取已经下载完成的应用程序在系统中的安装包路径;S2、通过java的反射机制,获取本文档来自技高网...

【技术保护点】
一种基于反射机制的Android应用自动更新方法,其特征在于,包括以下步骤:S1、用户打开应用程序时,若该应用程序有需要更新的版本,执行Android应用自动更新的命令,下载新版本的应用程序,并获取已经下载完成的应用程序在系统中的安装包路径;S2、通过java的反射机制,获取Android系统的安装程序调用服务,通过安装程序调用服务调用安装包管理对象,并获取安装包管理对象中的程序自动安装方法;S3、自动关闭当前版本的应用程序,通过程序自动安装方法对应用程序进行自动更新,更新完毕后返回安装状态参数;S4、根据返回的安装状态参数,判断自动更新的应用程序是否安装正确,若安装正确则自动打开更新后的应用程序。

【技术特征摘要】
1.一种基于反射机制的Android应用自动更新方法,其特征在于,包括以下步骤:S1、用户打开应用程序时,若该应用程序有需要更新的版本,执行Android应用自动更新的命令,下载新版本的应用程序,并获取已经下载完成的应用程序在系统中的安装包路径;S2、通过java的反射机制,获取Android系统的安装程序调用服务,通过安装程序调用服务调用安装包管理对象,并获取安装包管理对象中的程序自动安装方法;S3、自动关闭当前版本的应用程序,通过程序自动安装方法对应用程序进行自动更新,更新完毕后返回安装状态参数;S4、根据返回的安装状态参数,判断自动更新的应用程序是否安装正确,若安装正确则自动打开更新后的应用程序。2.根据权利要求1所述的基于反射机制的Android应用自动更新方法,其特征在于,步骤S2中获取的Android系统的安装程序调用服务为android.os.ServiceManager服务。3.根据权利要求2所述的基于反射机制的Android应用自动更新方法,其特征在于,步骤S2中调用的安装包管理对象为IPackageManager对象。4.根据权利要求3所述的基于反射机制的Android应用自动更新方法,其特征在于,步骤S2中的程序自动安装方法为installPackage方法。5.根据权利要求4所述的基于反射机制的Android应用自动更新方法,其特征在于,步骤S2中通过java反射机制获取程序自动安装方法的具体方法为:S21、获取Android系统类中的forName方法,向forName方法中填入参数android.os.ServiceManager来获取到反射类;S22、通过向系统类getMethod中填入参数getService和String.class,获取到反射类中的getService方法;S23、通过系统类getMethod中的invoke方法向getService方法填入参数null和package名称得到IBinder方法;S24、结合IBinder方法和Stub.asInterface方法,填入参数IBinder得到生成的IPackageManager对象;S25、调取PackageManager对象中的installPackage方法。6.根据权利要求1所述的基于反射机制的Android应用自动更新方法,其特征在于,步骤S3中返回的安装状态参数包括:basePackageName、returnCode、msg和extras;其中:basePackageName用于判断安装的应用程序的名称是否一致,若名称一致,则继续执行自动更新操作;若名称不一致,则终止自动更新操作;returnCode用于判断应用程序是否安装成功,若returnCode的值为1,则表示应...

【专利技术属性】
技术研发人员:丁鹏
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1