com.android.server.pm.Settings.readStoppedLPw() is invoked on BOOT_COMPLETE and it checks for
String tagName = parser.getName();so, what is this "nl" ? When you install an apk, your broadcast receiver will listed on /data/system/packages-stopped.xml
if (tagName.equals("pkg")) {
String name = parser.getAttributeValue(null, "name");
PackageSetting ps = mPackages.get(name);
if (ps != null) {
ps.stopped = true;
if ("1".equals(parser.getAttributeValue(null, "nl"))) {
ps.notLaunched = true;
}
} else {
Slog.w(PackageManagerService.TAG, "No package known for stopped package: " + name);
}
<stopped-packages>
<pkg name="test.broadcast" nl="1" />
</stopped-packages>
to get it to work.
and then rebroadcast the BOOT_COMPLETED and you should be fine
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
to do all these you must have root. otherwise no choice