4.4 管理扩展与应用
除了通过chrome://extensions/管理Chrome扩展和应用外,也可以通过Chrome的management
接口管理。management
接口可以获取用户已安装的扩展和应用信息,同时还可以卸载和禁用它们。通过management
接口可以编写出智能管理扩展和应用的程序。
要使用management
接口,需要在Manifest中声明management
权限:
"permissions": [
"management"
]
读取用户已安装扩展和应用的信息。Management提供了两个方法获取用户已安装扩展应用的信息,分别是getAll
和get
。
chrome.management.getAll(function(exInfoArray){
console.log(exInfoArray);
});
chrome.management.get(exId, function(exInfo){
console.log(exInfo);
});
exInfo
是扩展信息对象,其结构如下:
{
id: 扩展id,
name: 扩展名称,
shortName: 扩展短名称,
description: 扩展描述,
version: 扩展版本,
mayDisable: 是否可被用户卸载或禁用,
enabled: 是否已启用,
disabledReason: 扩展被禁用原因,
type: 类型,
appLaunchUrl: 启动url,
homepageUrl: 主页url,
updateUrl: 更新url,
offlineEnabled: 离线是否可用,
optionsUrl: 选项页面url,
icons: [{
size: 图片尺寸,
url: 图片URL
}],
permissions: 扩展权限,
hostPermissions: 扩展有权限访问的host,
installType: 扩展被安装的方式
}
其中type
属性的可能值为extension
、hosted_app
、packaged_app
、legacy_packaged_app
或theme
。installType
可能的值为admin
(管理员安装)、development
(载入未打包的扩展)、normal
(通过crx正常安装)、sideload
(第三方程序安装)或other
(其他)。
获取权限警告。getPermissionWarningsById
和getPermissionWarningsByManifest
方法可以获取权限警告,这些警告与用户安装扩展时网上应用商店弹出的警告类似。
chrome.management.getPermissionWarningsById(exId, function(permissionWarningArray){
console.log(permissionWarningArray);
});
getPermissionWarningsByManifest(exManifest, function(permissionWarningArray){
console.log(permissionWarningArray);
});
上述代码中,exManifest
是字符串型的,不是对象型的。
启用、禁用、卸载扩展和启动应用。setEnabled
方法可以启用或禁用扩展应用,如果一个扩展或应用被禁用,它的后台页面不会运行。
chrome.management.setEnabled(exId, enabled, function(){
if(enabled){
console.log('Extension '+exId+' has been enabled.');
}
else{
console.log('Extension '+exId+' has been disabled.');
}
});
卸载扩展有两种方法,uninstall
可以卸载指定id的扩展,uninstallSelf
可以卸载扩展自身且无需请求management
权限。
uninstall(exId, {
showConfirmDialog: true
}, function(){
console.log('Extension '+exId+' has been uninstalled.');
});
uninstallSelf({
showConfirmDialog: true
}, function(){
console.log('This extension has been uninstalled.');
});
如果不希望在卸载前显示确认窗口,可以将showConfirmDialog
的值设为false
。
通过launchApp
方法启动应用:
chrome.management.launchApp(exId, function(){
console.log('App '+exId+' has been launched.');
});
management
接口提供了四种事件,onInstalled
、onUninstalled
、onEnabled
和onDisabled
,分别用于监听安装、卸载、启用和禁用扩展应用。
chrome.management.onInstalled.addListener(function(exInfo){
console.log('Extension '+exInfo.id+' has been installed.')
});
chrome.management.onUninstalled.addListener(function(exId){
console.log('Extension '+exId+' has been uninstalled.');
});
chrome.management.onEnabled.addListener(function(exInfo){
console.log('Extension '+exInfo.id+' has been enabled.');
});
chrome.management.onDisabled.addListener(function(exInfo){
console.log('Extension '+exInfo.id+' has been disabled.');
});
本节讲解了管理扩展和应用的接口内容,看起来有些枯燥,但如果使用恰当设计合理,可以编写出让用户很feel的扩展。