有沒有辦法在運行時檢查清單中聲明瞭哪些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. 簡單錯誤檢查是否聲明
- 2. SQL檢查是否運行了「CHECK CONSTRAINT」?
- 3. 清單中聲明的BroadcastReceiver未收到廣播
- 4. 在清單中聲明的BroadcastReceiver不會輸出到Log.d
- 5. 等待檢查是否聲明..?
- 6. 自動檢查是否聲明PHP
- 7. 檢查是否使用Fortran 77聲明瞭一個變量?
- 8. 檢查垃圾收集器是否聲明瞭變量
- 9. Php檢查是否聲明瞭靜態類
- 10. 檢查是否安裝了咕嚕聲?
- 11. 檢查是否在運行時定義了常量Obj-C
- 12. 檢查IEnumerable是否爲ValueType(運行時)
- 13. 檢查是否CountDownTimer運行
- 14. 檢查tomcat是否運行?
- 15. 檢查是否聲明瞭另一個函數,否則更改位置
- 16. handlebars.js - 聲明是否聲明
- 17. 檢查超時是否已被清除?
- 18. 檢查是否在X Window中運行
- 19. 如何檢查組中是否檢查了單選按鈕
- 20. 檢查是否在struts2中檢查了某個單選按鈕。
- 21. 在Mysql聲明中運行子查詢
- 22. ACTION_USER_PRESENT BroadcastReceiver是否可以在清單中註冊?
- 23. 檢查是否編輯了單元格
- 24. SQL案例當聲明檢查字段是否在臨時表中時
- 25. 加入聲明的清單
- 26. 聲明庫活動清單
- 27. 如何檢查loadfunctionlibrary是否在運行時在UFT中成功加載了庫。
- 28. 檢查VC2015運行時是否安裝了Wix Installer但是找到32bit或64bit
- 29. 如何檢查變量是否在D中聲明?
- 30. 如何檢查變量是否在Python中聲明?
CyborgReceiver延伸廣播接收器,以及關於過濾器,我真的不記得的情況。 – TacB0sS 2013-02-10 00:51:53
我認爲這與監視應用程序中的通話事件有關。 – TacB0sS 2013-02-10 00:53:01