实现adb install替换Android应用的apk后应用自动运行

背景

对于在启动后,仅在后台运行一个或多个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 上有效

你可能感兴趣的:(Android开发)