appManagerPlus

立即使用

getInstalledApplications

installApp

installSilent

unInstallApp

unInstallSilent

isInstalled

isSystemApp

getAppSize

jumpToApp

registerAppReceiver

isVersionChanged

论坛示例

为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码供您参考。

概述

appManagerPlus封装了Android上与手机App管理相关的接口,开发者可调用该模块接口管理Android手机上的应用。包括获取手机上所有应用的信息(包括图标)、获取应用大小、静默安装应用、静默卸载应用、打开指定应用、监听手机上App安装和卸载等。

模块接口

getInstalledApplications

获取Android手机上所有应用的信息,包括应用图标、名字、包名、版本号等。获取到的应用图标保存在本地,可通过fs路径或Android原生路径获取图标。img标签用Android原生路径显示图片的方法:img标签的src属性设置为: “file://“+ Android原生路径。见示例代码。该接口为耗时接口,开发者调用该接口后可做等待提示,增加用户体验。

getInstalledApplications({params},callback(ret))

params

appType:

  • 类型:数值型
  • 描述:(可选项)获取应用的类型,0:获取第三方应用 ; 1:获取系统应用 ; 2:获取所有的应用。默认0 .

callback(ret)

ret:

  • 类型:JSON对象
  • 描述:返回所有应用的信息列表
  • 内部字段:
  1. "status": 1,//1获取成功,0获取失败
  2. "apps":[//status为1时有该字段
  3. {
  4. "className": "com.qihoo.util.StubApp3333607800",//该应用默认启动的类名(默认Activity,默认页面)
  5. "dataDir": "/data/data/com.youyi.doctor",//该应用存储私有数据的目录
  6. "packageName": "com.youyi.doctor",//应用包名
  7. "processName": "com.youyi.doctor",//应用进程名,一般是包名
  8. "publicSourceDir": "/data/app/com.youyi.doctor-1/base.apk",//应用apk存放的路径(安装后应用是以apk形式存放在手机中,这是apk存放的路径)
  9. "targetSdkVersion": 23,//应用运行的目标Android SDK版本。23对应Android 6.0,每个数字对应一个Android版本。
  10. "appIcon": "/storage/emulated/0/UZMap/A0000000000001/appIcons/com_youyi_doctor.png",//应用图标存放的原生路径。
  11. "appIconFs": "fs://appIcons/com_youyi_doctor.png",//应用图标存放的fs路径。
  12. "appName": "360好药",//应用名称
  13. "versionCode": 16,//应用版本号,数字型
  14. "versionName": "1.9.0",//应用版本名字
  15. "isSystemApp": 0,//是否是系统应用,0:第三方应用,1:系统应用。
  16. "isExternalApp": 0 //是否安装在外部SD卡,0:应用安装在手机内部存储上,1:应用安装在外部SD卡。
  17. },
  18. ...//这里有更多应用信息
  19. ]

示例代码

  1. var appManagerPlus = api.require('appManagerPlus');
  2. appManagerPlus.getInstalledApplications(function(ret){
  3. alert(JSON.stringify(ret));
  4. //"icon1"为img标签的id属性,img标签用Android原生路径显示图片的方法:
  5. //img标签的src属性设置为: "file://"+ Android原生路径
  6. document.getElementById("icon1").src = "file://" + ((ret.apps)[0]).appIcon;
  7. });

可用性

Android系统

可提供的1.0.0及更高版本

installApp

打开系统安装应用(apk)界面

installApp({params},callback(ret))

params

apkPath:

  • 类型:字符串,apk文件路径,支持fs://、widget://、安卓原生绝对路径。
  • 描述:(必填)注意:路径为widget://格式时,该方法会相应耗时。

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. "status": true //true:打开安装界面成功,false:打开安装界面失败
  3. "msg":"路径为空"//错误提示,status为false时有该字段
  4. }

示例代码

  1. var appManagerPlus = api.require('appManagerPlus');
  2. appManagerPlus.installApp({
  3. "apkPath":"/storage/emulated/0/my.apk"
  4. },function(ret){
  5. alert(JSON.stringify(ret));
  6. });

可用性

Android系统

可提供的1.0.0及更高版本

installSilent

静默安装应用,手机需要Root且调用该方法后应用请求获取root权限(弹框方式弹出),用户同意获取root权限后方可进行静默安装。

installSilent({params},callback(ret))

params

apkPath:

  • 类型:字符串,apk文件路径,支持fs://、widget://、安卓原生绝对路径。
  • 描述:(必填)注意:该方法会相应耗时。返回成功提示后,应用就已经安装到手机上。

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. "status": true //true:静默安装成功,false:静默安装失败
  3. "msg":"本应用未获得root权限"//错误提示,status为false时有该字段
  4. }

示例代码

  1. var appManagerPlus = api.require('appManagerPlus');
  2. appManagerPlus.installSilent({
  3. "apkPath":"fs://apks/my.apk"
  4. },function(ret){
  5. alert(JSON.stringify(ret));
  6. });

可用性

Android系统

可提供的1.0.0及更高版本

unInstallApp

打开系统卸载应用界面

unInstallApp({params},callback(ret))

params

pkgName:

  • 类型:字符串,要卸载的应用包名,可通过getInstalledApplications获取。
  • 描述:(必填)

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. "status": true //true:打开卸载界面成功,false:打开失败
  3. "msg":"包名为空"//错误提示,status为false时有该字段
  4. }

示例代码

  1. var appManagerPlus = api.require('appManagerPlus');
  2. appManagerPlus.unInstallApp({
  3. "pkgName":"com.etx.mgr"
  4. },function(ret){
  5. alert(JSON.stringify(ret));
  6. });

可用性

Android系统

可提供的1.0.0及更高版本

unInstallSilent

静默卸载应用,手机需要Root且调用该方法后应用请求获取root权限(弹框方式弹出),用户同意获取root权限后方可进行静默卸载。

unInstallSilent({params},callback(ret))

params

pkgName:

  • 类型:字符串,要卸载的应用包名,可通过getInstalledApplications获取。
  • 描述:(必填)注意:该方法会相应耗时。返回成功提示后,应用就已经在手机上卸载完成。

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. "status": true //true:静默卸载成功,false:静默卸载失败
  3. "msg":"本应用未获得root权限"//错误提示,status为false时有该字段
  4. }

示例代码

  1. var appManagerPlus = api.require('appManagerPlus');
  2. appManagerPlus.unInstallSilent({
  3. "pkgName":"com.etx.mgr"
  4. },function(ret){
  5. alert(JSON.stringify(ret));
  6. });

可用性

Android系统

可提供的1.0.0及更高版本

isInstalled

判断应用是否已经安装到手机上,可根据包名或或者应用名称判断,但应用名判断可能不准确,因为Android上允许有多个同名的应用(但他们的包名不会相同),而包名是应用在手机上的唯一标识,所以用包名判断绝对准确,建议用包名。该方法为耗时方法。

isInstalled({params},callback(ret))

params

paramType:

  • 类型:数值型
  • 描述:(可选)参数paramStr传入的是包名还是应用名称,0为包名,1为应用名称 。默认0

paramStr:

  • 类型:字符串。
  • 描述:(必填)包名(paramType为0时)或应用名称(paramType为1时)。

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. "status": true //true:已安装,false:未安装
  3. "msg":"paramStr参数为空"//错误提示,paramStr参数为空时有该字段
  4. }

示例代码

  1. var appManagerPlus = api.require('appManagerPlus');
  2. appManagerPlus.isInstalled({
  3. "paramType":1,
  4. "paramStr":"微信"
  5. },function(ret){
  6. alert(JSON.stringify(ret));
  7. });

可用性

Android系统

可提供的1.0.0及更高版本

isSystemApp

判断应用是否是系统应用。

isSystemApp({params},callback(ret))

params

pkgName:

  • 类型:字符串
  • 描述:(必填)要判断的应用包名。

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. "status": 0 //数值型:0为第三方应用,1为系统应用,2为未安装该应用,3为传入的包名为空
  3. "msg":"包名为空"//错误提示,status参数为3时有该字段
  4. }

示例代码

  1. var appManagerPlus = api.require('appManagerPlus');
  2. appManagerPlus.isSystemApp({
  3. "pkgName":"com.etx.mgr"
  4. },function(ret){
  5. alert(JSON.stringify(ret));
  6. });

可用性

Android系统

可提供的1.0.0及更高版本

getAppSize

获取应用的缓存大小、数据大小、应用本身大小。类似在手机设置中的应用管理中的“应用详情”页中的信息。该方法为耗时方法。

getAppSize({params},callback(ret))

params

sizeType:

  • 类型:数值型
  • 描述:(可选)返回的大小是字节单位还是经过格式化的,经过格式化的单位是以最大的单位开始,如G、M等。:1:字节单位,0:格式化的单位,默认0

pkgName:

  • 类型:字符串
  • 描述:(必填)要获取大小的包名
  • callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. "status": true //true,获取成功,false获取失败
  3. "msg":"包名为空"//错误提示,status参数为false时有该字段
  4. "cachesize":1024,//应用的缓存大小
  5. "datasize":24515,//应用数据大小
  6. "codesize":16288,//应用本身大小
  7. "totalsize":36288,//以上三个大小之和
  8. }

示例代码

  1. var appManagerPlus = api.require('appManagerPlus');
  2. appManagerPlus.getAppSize({
  3. "sizeType":0,
  4. "pkgName":"com.qihoo.browser"
  5. },function(ret){
  6. alert(JSON.stringify(ret));
  7. });

可用性

Android系统

可提供的1.0.0及更高版本

jumpToApp

打开指定应用的默认页面,类似用户从桌面直接点击应用图标打开应用。调用该方法前需判断传入的应用是否已经安装(调用isInstalled方法)

jumpToApp({params},callback(ret))

params

jumpType:

  • 类型:数值型
  • 描述:(可选)指定以应用包名打开还是应用名称打开,0:包名,1:应用名称,默认0

name:

  • 类型:字符串
  • 描述:(必填)包名(jumpType为0时)或应用名称(jumpType为1时)。

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. "status": true //true,启动成功,false启动失败
  3. "msg":"name为空"//错误提示,status参数为false时有该字段
  4. }

示例代码

  1. var appManagerPlus = api.require('appManagerPlus');
  2. appManagerPlus.jumpToApp({
  3. "jumpType":1,
  4. "name":"QQ"
  5. },function(ret){
  6. alert(JSON.stringify(ret));
  7. });

可用性

Android系统

可提供的1.0.0及更高版本

registerAppReceiver

监听Android上应用的安装卸载,包括其他应用的安装、卸载、升级,本接口不能监听自身的安装、卸载和升级。如要监听自身的升级可参考本模块的isVersionChanged接口。本接口监听后立即返回,当有其他应用安装、卸载、升级时再次触发回调。开发者可在应用安装后启动应用,或者进行其他操作。注意:本应用(调用该接口的应用)还在运行时才能监听到应用的安装卸载,如果本应用被系统杀掉或刚开机未启动,则不能监听到应用的安装卸载

registerAppReceiver(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. "status": true //true,监听成功
  3. "action":"ACTION_PACKAGE_ADDED"
  4. //取值范围:
  5. //ACTION_PACKAGE_ADDED:应用安装完毕
  6. //ACTION_PACKAGE_REMOVED:应用卸载完毕
  7. //ACTION_PACKAGE_REPLACED:应用替换成功,即同一个应用由低版本升级到高版本,升级会先后触发ACTION_PACKAGE_REMOVED、ACTION_PACKAGE_ADDED、ACTION_PACKAGE_REPLACED事件。
  8. "package":"com.example.androidtest"//安装、卸载、或升级的包名
  9. }

示例代码

  1. var appManagerPlus = api.require('appManagerPlus');
  2. appManagerPlus.registerAppReceiver(function(ret){
  3. console.log(JSON.stringify(ret));
  4. });

可用性

Android系统

可提供的1.0.0及更高版本

isVersionChanged

用于判断是否已经升级到新版本,本接口根据Android应用的版本号(versionCode)是否增大来判断,对应于云编译上编译正式版本的Android version code 。所以热更新如果没有改变版本号,该接口会返回false状态。注意:该接口要在新版本(已经升级的版本)中调用才有效,且要求旧版本也调用过该接口,开发者可在应用启动时调用该接口判断是否版本已经升级,如果是 可以给用户弹出“升级成功”的提示,增加用户体验。

isVersionChanged(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. "changed": true //true,版本已更新。false:版本未更新
  3. "curVersionCode":2//当前应用版本号
  4. "curVersionName":"1.0.1"//当前应用版本名字
  5. "oldVersionCode":1//旧版本应用版本号
  6. "oldVersionName":"1.0.0"//旧版本应用版本名字
  7. }

示例代码

  1. var appManagerPlus = api.require('appManagerPlus');
  2. appManagerPlus.isVersionChanged(function(ret){
  3. alert(JSON.stringify(ret));
  4. });

可用性

Android系统

可提供的1.0.0及更高版本