我有一个Android项目,有两个应用程序。
AppA从代码(不在其清单中)注册ACTION_PACKAGE_ADDED
或ACTION_PACKAGE_REPLACED
操作的接收器。
当我用adb install AppB.apk
从命令行安装AppB时,我看到来自AppA的BroadcastReceiver按预期接收广播意图。
当我直接从AndroidStudio部署AppB(启动调试按钮):BroadcastReceiver从AppA不接收任何广播意图。
是预期的吗?当apk与启动调试按钮一起部署时,在AndroidStudio中是否有什么可以做/setup来强制广播?
What I tried ?
尝试1:
我用选项"Always install with PackageManager"(在AndroidStudio启动配置窗口),但它没有帮助。
尝试2:
AndroidStudio启动配置提供了在启动前执行外部工具的能力。因此,我试图通过在启动AppB之前执行:adb shell am broadcast -a android.intent.action.PACKAGE_ADDED -d com.company.app.b -t package
来显式广播PACKAGE_ADDED动作。
不幸的是,这会生成一个java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.PACKAGE_ADDED
,这并不奇怪,因为PACKAGE_ADDED当然是一个受保护的广播。
是否可以禁用即时运行Android工作室和尝试。当启用即时运行时,Android studio能够直接替换索引文件,这可能是您没有获得add或replace操作的潜在原因。
你可以用指定的Action name从B应用程序发送一个广播,并在应用程序a中注册它