title: What's "PackageInstaller" class on Lollipop, and how to use it?
body: <h2>Background</h2>
  
  <p>I've noticed there is a new function on the PackageManager called "<a href="http://developer.android.com/reference/android/content/pm/PackageManager.html#getPackageInstaller()" rel="nofollow"><strong>getPackageInstaller</strong></a>" , with minAPI 21 (Lollipop).</p>
  
  <p>I've reached the "<a href="http://developer.android.com/reference/android/content/pm/PackageInstaller.html" rel="nofollow"><strong>PackageInstaller</strong></a>" class, and this is what it is written about it:</p>
  
  <blockquote>
    <p>Offers the ability to install, upgrade, and remove applications on the
    device. This includes support for apps packaged either as a single
    "monolithic" APK, or apps packaged as multiple "split" APKs.</p>
    
    <p>An app is delivered for installation through a
    PackageInstaller.Session, which any app can create. Once the session
    is created, the installer can stream one or more APKs into place until
    it decides to either commit or destroy the session. Committing may
    require user intervention to complete the installation.</p>
    
    <p>Sessions can install brand new apps, upgrade existing apps, or add new
    splits into an existing app.</p>
  </blockquote>
  
  <h2>Questions</h2>
  
  <ol>
  <li>What is this class used for? Is it even available for third party apps (I don't see any mentioning of this) ?</li>
  <li>Can it really install apps? </li>
  <li>Does it do it in the background?</li>
  <li>What are the restrictions? </li>
  <li>Does it require permissions? If so, which?</li>
  <li>Is there any tutorial of how to use it?</li>
  </ol>