为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码供您参考。
appManagerPlus封装了Android上与手机App管理相关的接口,开发者可调用该插件接口管理Android手机上的应用。包括获取手机上所有应用的信息(包括图标)、获取应用大小、静默安装应用、静默卸载应用、打开指定应用、监听手机上App安装和卸载等。
获取Android手机上所有应用的信息,包括应用图标、名字、包名、版本号等。获取到的应用图标保存在本地,可通过fs路径或Android原生路径获取图标。img标签用Android原生路径显示图片的方法:img标签的src属性设置为: "file://"+ Android原生路径。见示例代码。该接口为耗时接口,开发者调用该接口后可做等待提示,增加用户体验。
getInstalledApplications({params},callback(ret))
appType:
ret:
"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及更高版本
打开系统安装应用(apk)界面
installApp({params},callback(ret))
apkPath:
ret:
{
"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及更高版本
静默安装应用,手机需要Root且调用该方法后应用请求获取root权限(弹框方式弹出),用户同意获取root权限后方可进行静默安装。
installSilent({params},callback(ret))
apkPath:
ret:
{
"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({params},callback(ret))
pkgName:
ret:
{
"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及更高版本
静默卸载应用,手机需要Root且调用该方法后应用请求获取root权限(弹框方式弹出),用户同意获取root权限后方可进行静默卸载。
unInstallSilent({params},callback(ret))
pkgName:
ret:
{
"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及更高版本
判断应用是否已经安装到手机上,可根据包名或或者应用名称判断,但应用名判断可能不准确,因为Android上允许有多个同名的应用(但他们的包名不会相同),而包名是应用在手机上的唯一标识,所以用包名判断绝对准确,建议用包名。该方法为耗时方法。
isInstalled({params},callback(ret))
paramType:
paramStr:
ret:
{
"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({params},callback(ret))
pkgName:
ret:
{
"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({params},callback(ret))
sizeType:
pkgName:
ret:
{
"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及更高版本
打开指定应用的默认页面,类似用户从桌面直接点击应用图标打开应用。调用该方法前需判断传入的应用是否已经安装(调用isInstalled方法)
jumpToApp({params},callback(ret))
jumpType:
name:
ret:
{
"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及更高版本
监听Android上应用的安装卸载,包括其他应用的安装、卸载、升级,本接口不能监听自身的安装、卸载和升级。如要监听自身的升级可参考本插件的isVersionChanged接口。本接口监听后立即返回,当有其他应用安装、卸载、升级时再次触发回调。开发者可在应用安装后启动应用,或者进行其他操作。注意:本应用(调用该接口的应用)还在运行时才能监听到应用的安装卸载,如果本应用被系统杀掉或刚开机未启动,则不能监听到应用的安装卸载
registerAppReceiver(callback(ret))
ret:
{
"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及更高版本
用于判断是否已经升级到新版本,本接口根据Android应用的版本号(versionCode)是否增大来判断,对应于应用打包上编译正式版本的Android version code 。所以热更新如果没有改变版本号,该接口会返回false状态。注意:该接口要在新版本(已经升级的版本)中调用才有效,且要求旧版本也调用过该接口,开发者可在应用启动时调用该接口判断是否版本已经升级,如果是 可以给用户弹出“升级成功”的提示,增加用户体验。
isVersionChanged(callback(ret))
ret:
{
"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及更高版本