版权声明:本文为博主原创文章,转载请标明出处并告知博主 https://blog.csdn.net/YSSJZ960427031/article/details/78669504
背景
对于在启动后,仅在后台运行一个或多个Service,而不立马启动一个Activity,且在桌面不显示应图标的应用,默认情况下,通过adb install
安装了apk后,要让其运行起来,须通过adb shell am start xxx
命令来手动启动应用,存在一定的不便之处。
需求
如果adb install的应用不是首次安装,而是替换当前已安装的应用,那期望它在安装完毕后能自动重启运行,而不需通过adb 命令来启动。
解决方案
实现自动启动的通用方案是声明广播接收器并在AndroidManifest中静态注册。为实现如上需求,我们需要在该广播接收器中额外监听PACKAGE_INSTALL,PACKAGE_ADDED,PACKAGE_REPLACED这三个广播,即声明的Service如下所示:
<receiver android:name="xxx"
<intent-filter>
<action android:name="android.intent.action.PACKAGE_INSTALL"/>
<action android:name="android.intent.action.PACKAGE_ADDED"/>
<action android:name="android.intent.action.PACKAGE_REPLACED"/>
<data android:scheme="package"/>
</intent-filter>
</receiver>
同时要声明如下权限:
<uses-permission android:name="android.permission.RESTART_PACKAGES"/>
适用范围
亲测在Android 4.4.3 和5.1 上有效