appManagerPlus

论坛示例

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

概述

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

installApp

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

installApp({params},callback(ret))

params

apkPath:

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

callback(ret)

ret:

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

installSilent

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

installSilent({params},callback(ret))

params

apkPath:

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

callback(ret)

ret:

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

unInstallApp

打开系统卸载应用界面

unInstallApp({params},callback(ret))

params

pkgName:

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

callback(ret)

ret:

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

unInstallSilent

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

unInstallSilent({params},callback(ret))

params

pkgName:

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

callback(ret)

ret:

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

示例代码

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

可用性

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对象
  • 内部字段:
{
    "status": true //true:已安装,false:未安装
    "msg":"paramStr参数为空"//错误提示,paramStr参数为空时有该字段
}

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

isSystemApp

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

isSystemApp({params},callback(ret))

params

pkgName:

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

callback(ret)

ret:

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

getAppSize

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

getAppSize({params},callback(ret))

params

sizeType:

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

pkgName:

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

callback(ret)

ret:

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

示例代码

var appManagerPlus  = api.require('appManagerPlus');
appManagerPlus.getAppSize({
    "sizeType":0, 
    "pkgName":"com.qihoo.browser"
},function(ret){
        alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

jumpToApp

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

jumpToApp({params},callback(ret))

params

jumpType:

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

name:

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

callback(ret)

ret:

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

registerAppReceiver

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

registerAppReceiver(callback(ret))

callback(ret)

ret:

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

isVersionChanged

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

isVersionChanged(callback(ret))

callback(ret)

ret:

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

是否仍需要帮助? 请保持联络!
最后更新于 2024/11/18