lac*_*ker 6 android android-manifest android-service android-xml android-library
我正在编写一个提供服务的库,其他开发人员将其包含在他们的项目中.因此,我无法控制AndroidManifest.xml.我解释了在文档中要做什么,但是一个常见的问题是,人们忽略了将相应的<service />标记添加到其清单中,或者将其添加到错误的位置.
现在,当我的库调用startService而未在清单中声明服务时,唯一发生的事情是ActivityManager记录一个警告.我希望在发生这种情况时抛出异常,以便开发人员知道如何解决它.如何检测清单是否实际声明了此服务?
我想你应该在库中有一个上下文来做这件事.一个清洁的方式将查询packagemanager的intent要启动service用.
public boolean isServiceAvailable(Context context, String action) {
final PackageManager packageManager = context.getPackageManager();
final Intent intent = new Intent(context, MyService.class);
List resolveInfo =
packageManager.queryIntentServices(intent,
PackageManager.MATCH_DEFAULT_ONLY);
if (resolveInfo.size() > 0) {
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
有点愚蠢让我忽略这一点,但是如果找不到这样的服务,startService()将返回null,否则返回ComponentName.这对我来说是最简单的方式.看起来使用PackageManager也会起作用.
| 归档时间: |
|
| 查看次数: |
6852 次 |
| 最近记录: |