Android:安装另一个应用程序并检测它何时首次启动

问题描述:

我有一个应用程序,可以像Google Play Store一样安装其他应用程序。为了完成分析链,我需要能够检测安装的应用程序何时第一次启动。Android:安装另一个应用程序并检测它何时首次启动

Google Play Store肯定会以某种方式实施它。

Android系统为您做到了这一点。当已安装的应用程序第一次启动时,软件包管理器向安装程序广播Intent.ACTION_PACKAGE_FIRST_LAUNCH。为了确保您收到它,您需要:

  • 安装应用程序后立即设置安装程序包名称,因为广播限制为为正在启动的应用程序设置的安装程序包名称。
  • 确保您不使用PackageManager.INSTALL_REPLACE_EXISTING,因为它会被认为是一个更新,其中广播不是由系统
  • 发送注册您的接收器在运行时的动作Intent.ACTION_PACKAGE_FIRST_LAUNCH,而不是在清单。

注册的广播接收器:

registerReceiver(new LaunchReceiver(), new IntentFilter(Intent.ACTION_PACKAGE_FIRST_LAUNCH)); 

样品广播接收器:

public class LaunchReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getData() != null) { 
      Log.d(TAG, "Package name: " + intent.getDataString().replace("package:", "")); 
     } 
    } 
} 

欲了解更多信息,请阅读实际的代码在这里:PackageManagerService.notifyFirstLaunch()