You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android API 26及以上版本如何实现应用安装后自动启动?

Android API 26+ 应用安装后自动启动实现说明

结论前置

原生Android 8.0(API26)及以上系统对隐式广播和应用自启做了严格限制,普通第三方应用无法无感知实现自身安装完成后自动启动,仅特定场景下可以实现该功能。

补充基础规则:应用自身无法接收自己被安装的ACTION_PACKAGE_ADDED系统广播,该广播只会发送给系统中已经安装完成的其他应用,所以应用无法靠自身监听广播触发自启。

可实现的场景及操作方案

场景1:你是安装器应用,要启动你刚刚安装的其他应用

该场景是官方允许的合规场景,不需要申请特殊权限,通过安装结果回调即可实现:

  1. 构造安装APK的Intent,注意API24及以上需要通过FileProvider获取APK文件的Uri:
// Kotlin 示例代码
val apkFile = File("你的APK文件路径")
val apkUri = FileProvider.getUriForFile(
    this,
    "${packageName}.fileprovider",
    apkFile
)
val installIntent = Intent(Intent.ACTION_VIEW).apply {
    setDataAndType(apkUri, "application/vnd.android.package-archive")
    addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
    addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}
  1. 使用Activity Result API监听安装结果,安装成功后启动目标应用:
val installLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
    if (result.resultCode == Activity.RESULT_OK) {
        // 安装成功,获取目标应用的启动Intent
        val targetPkgName = "你安装的应用包名"
        val launchIntent = packageManager.getLaunchIntentForPackage(targetPkgName)
        launchIntent?.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        launchIntent?.let { startActivity(it) }
    }
}
// 调用安装流程
installLauncher.launch(installIntent)

场景2:你的应用拥有系统签名/是系统预制应用

该场景下可以申请特殊权限,监听系统的ACTION_PACKAGE_ADDED广播触发启动:

  1. 在AndroidManifest.xml中静态注册广播接收器:
<receiver
    android:name=".InstallEventReceiver"
    android:exported="true"
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
    <intent-filter>
        <action android:name="android.intent.action.PACKAGE_ADDED" />
        <data android:scheme="package" />
    </intent-filter>
</receiver>
  1. 实现广播接收器逻辑,匹配到目标应用包名后启动:
public class InstallEventReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (Intent.ACTION_PACKAGE_ADDED.equals(intent.getAction())) {
            String installedPkg = intent.getData().getSchemeSpecificPart();
            // 匹配你要启动的应用包名
            if ("目标应用包名".equals(installedPkg)) {
                Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage(installedPkg);
                if (launchIntent != null) {
                    launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    context.startActivity(launchIntent);
                }
            }
        }
    }
}

场景3:普通第三方应用想要实现自身安装后自启

该场景原生系统不支持,仅部分国内定制ROM提供了相关权限入口:

  • 你可以引导用户手动到系统设置中开启「允许应用安装后自启」的权限,不同ROM的权限位置不同,需针对厂商做适配
  • 最合规的方案是在安装完成后的系统引导页,提示用户手动点击「打开」按钮启动应用,适配所有系统版本,不需要额外权限

注意事项

  • 不要尝试用黑科技绕过系统权限限制,这类方案兼容性差,后续系统版本大概率会被封堵,还可能导致应用被应用市场下架
  • 谷歌官方不推荐普通应用实现安装后自动启动的行为,会影响用户体验,非必要场景不建议实现该功能

内容的提问来源于stack exchange,提问作者Andrew07

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:57:03