有没有办法在运行时检查清单中声明了哪些BroadcastReceivers?检查运行时清单中是否声明了BroadcastReceiver?
3
A
回答
1
谢谢,但不是我的本意。我想获得知道,如果一个特定的接收器在运行的应用程序中声明运行时,取得这样说:
private <Receiver extends CyborgReceiver<?>> boolean checkIfBroadcastReceiverIsRegisteredInManifest(Class<Receiver> receiverType) {
PackageManager pm = application.getPackageManager();
try {
ActivityInfo info = pm.getReceiverInfo(new ComponentName(application, receiverType), PackageManager.GET_RECEIVERS);
return info.enabled;
} catch (NameNotFoundException e) {
return false;
}
}
3
使用PackageManager
,你可以queryBroadcastReceivers()
找到谁将回应一个特定的Intent
和getInstalledPackages()
,你可以找到每个包安装的接收器。
+0
你打我吧...:d – t0mm13b 2012-08-10 00:36:25
3
的代码会是这样的相似,从活动中:
// Query all packages that have the BroadcastReceivers...
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
PackageManager pm = getPackageManager();
final List<ResolveInfo> listPkgs = pm.queryBroadcast(mainIntent, 0);
if (listPkgs != null && listPkgs.size() > 0){
for(ResolveInfo resInfo : listPkgs){
// Now resInfo will contain the list of packages that has receivers...
}
}
0
传入应用程序对象作为第一个参数,你可以做到这一点与(Application)context.GetApplicationContext()
如果你有,那么你的类,它实现了广播接收器类作为第二通论点例如broadcastReceiver.class
public static boolean validateReceiverInManifest(Application application, Class receiverClass) throws PackageManager.NameNotFoundException {
PackageManager pm = application.getPackageManager();
String packageName = application.getPackageName();
PackageInfo packageInfo = pm.getPackageInfo(packageName, PackageManager.GET_RECEIVERS);
ActivityInfo[] receivers = packageInfo.receivers;
String receiverClassName = receiverClass.getName();
for (ActivityInfo activityInfo : receivers) {
if (activityInfo.name.equals(receiverClassName)) {
return true;
}
}
return false;
}
相关问题
- 1. 清单中声明的BroadcastReceiver未收到广播
- 2. Php检查是否声明了静态类
- 3. 检查是否使用Fortran 77声明了一个变量?
- 4. 检查是否安装了咕噜声?
- 5. 检查是否在运行时定义了常量Obj-C
- 6. 检查tomcat是否运行?
- 7. 检查是否声明了另一个函数,否则更改位置
- 8. 检查超时是否已被清除?
- 9. 检查是否在X Window中运行
- 10. 在Mysql声明中运行子查询
- 11. 如何检查组中是否检查了单选按钮
- 12. ACTION_USER_PRESENT BroadcastReceiver是否可以在清单中注册?
- 13. 加入声明的清单
- 14. SQL案例当声明检查字段是否在临时表中时
- 15. 如何检查loadfunctionlibrary是否在运行时在UFT中成功加载了库。
- 16. 如何检查变量是否在D中声明?
- 17. 检查变量是否在页面中声明?
- 18. 如何检查变量是否在Python中声明?
- 19. 检查VC2015运行时是否安装了Wix Installer但是找到32bit或64bit
- 20. 检查是否执行了MotionEvent.ACTION_MOVE
- 21. Elif声明检查表单范围
- 22. BroadcastReceiver后运行时异常
- 23. 检测是否Qt是在运行时
- 24. 清单中未识别权限声明
- 25. ClassNotFoundException在清单中声明的类
- 26. 检索在Android清单中声明的所有权限
- 27. 运行Oracle声明
- 28. 如何在运行时检查iOS4中是否存在字体
- 29. 在运行时检查程序中是否存在函数
- 30. 如何检查是否在PowerShell中运行时通过脚本
CyborgReceiver延伸广播接收器,以及关于过滤器,我真的不记得的情况。 – TacB0sS 2013-02-10 00:51:53
我认为这与监视应用程序中的通话事件有关。 – TacB0sS 2013-02-10 00:53:01