Merge cherrypicks of [2903504, 2902882, 2902883, 2903505, 2903506, 2902675, 2902677, 2902679, 2902681, 2902682, 2902683, 2902684, 2902685, 2902687, 2903524, 2902884, 2903525] into mnc-mr2-release

Change-Id: I5442d99995476c8bbe475bf90fd6e6d8d7d39d6f
diff --git a/src/com/android/packageinstaller/PackageInstallerActivity.java b/src/com/android/packageinstaller/PackageInstallerActivity.java
index 6bcd80e..6887598 100644
--- a/src/com/android/packageinstaller/PackageInstallerActivity.java
+++ b/src/com/android/packageinstaller/PackageInstallerActivity.java
@@ -16,7 +16,6 @@
 */
 package com.android.packageinstaller;
 
-import android.app.Activity;
 import android.app.ActivityManagerNative;
 import android.app.AlertDialog;
 import android.app.Dialog;
@@ -52,6 +51,8 @@
 import android.widget.TabHost;
 import android.widget.TextView;
 
+import com.android.packageinstaller.permission.ui.OverlayTouchActivity;
+
 import java.io.File;
 import java.util.List;
 
@@ -65,7 +66,8 @@
  * Based on the user response the package is then installed by launching InstallAppConfirm
  * sub activity. All state transitions are handled in this activity
  */
-public class PackageInstallerActivity extends Activity implements OnCancelListener, OnClickListener {
+public class PackageInstallerActivity extends OverlayTouchActivity implements OnCancelListener,
+        OnClickListener {
     private static final String TAG = "PackageInstaller";
 
     private int mSessionId = -1;
@@ -563,6 +565,25 @@
         }
     }
 
+    @Override
+    protected void onResume() {
+        super.onResume();
+
+        if (mOk != null) {
+            mOk.setEnabled(mOkCanInstall);
+        }
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+
+        if (mOk != null) {
+            // Don't allow the install button to be clicked as there might be overlays
+            mOk.setEnabled(false);
+        }
+    }
+
     /** Get the ApplicationInfo for the calling package, if available */
     private ApplicationInfo getSourceInfo() {
         String callingPackage = getCallingPackage();