//省略............if(receivers !=null){// A special case for PACKAGE_ADDED: do not allow the package// being added to see this broadcast. This prevents them from// using this as a back door to get run as soon as they are// installed. Maybe in the future we want to have a special install// broadcast or such for apps, but we'd like to deliberately make// this decision.String skipPackages[]=null;if(Intent.ACTION_PACKAGE_ADDED.equals(intent.getAction())||Intent.ACTION_PACKAGE_RESTARTED.equals(intent.getAction())||Intent.ACTION_PACKAGE_DATA_CLEARED.equals(intent.getAction())){Uri data = intent.getData();if(data !=null){String pkgName = data.getSchemeSpecificPart();if(pkgName !=null){
skipPackages =newString[]{ pkgName };}}}elseif(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE.equals(intent.getAction())){
skipPackages = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST);//start add for whitelist BOOT_COMPLETED receiver// 对开机广播做处理,在白名单中(whitelist_boot_receiver)包名再能发送开机广播}elseif(Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())){Resources res = mContext.getResources();String[] whitelist = res.getStringArray(R.array.whitelist_boot_receiver);Set<String> pkgs =newArraySet();for(int i =0, j = receivers.size(); i < j; i++){ResolveInfo curt =(ResolveInfo) receivers.get(i);if(ArrayUtils.contains(whitelist, curt.activityInfo.packageName)){continue;}
pkgs.add(curt.activityInfo.packageName);}if(!pkgs.isEmpty()){
skipPackages = pkgs.stream().toArray(String[]::new);}}//toptech add endif(skipPackages !=null&&(skipPackages.length >0)){for(String skipPackage : skipPackages){if(skipPackage !=null){int NT = receivers.size();for(int it=0; it<NT; it++){ResolveInfo curt =(ResolveInfo)receivers.get(it);if(curt.activityInfo.packageName.equals(skipPackage)){
receivers.remove(it);
it--;
NT--;}}}}}//省略............
frameworks/base/core/res/res/values/arrays.xml
<string-array name="whitelist_boot_receiver"><item>android</item><item>com.bestv.voiceAssist</item><item>com.android.tv.settings</item><item>com.mediatek.hotkey.dispatcher</item><item>com.toptech.tv.service</item><item>com.aispeech.tvui</item><item>com.android.packageinstaller</item><item>com.android.providers.downloads</item><item>com.android.providers.media</item><item>com.android.providers.tv</item><item>com.funshion.publicity</item><item>com.toptech.systemupdate</item><item>tv.fun.appstore</item><item>tv.fun.bugreporter</item><item>tv.fun.master</item><item>tv.fun.ottsecurity</item><item>tv.fun.pushcenter</item><item>tv.fun.sdkmanager</item><item>tv.fun.tvupgrade</item></string-array>