Disabling stricty mode checks when launching an activity.

The default strict mode policy in NYC cause death penalty when
when sharing file URI in intent. This causes launcher to crash
for users who have shortcuts of images and documents on their
homescreen.

Bug: 28853579
Change-Id: If84cd5ff732713aaff5d3164edf428c8b4233ea2
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 6a95a90..ca31ea5 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -880,7 +880,7 @@
             sPendingAddItem = null;
             if (grantResults.length > 0
                     && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-                startActivity(v, intent, null);
+                startActivitySafely(v, intent, null);
             } else {
                 // TODO: Show a snack bar with link to settings
                 Toast.makeText(this, getString(R.string.msg_no_phone_permission,
@@ -2873,8 +2873,18 @@
             }
 
             if (user == null || user.equals(UserHandleCompat.myUserHandle())) {
-                // Could be launching some bookkeeping activity
-                startActivity(intent, optsBundle);
+                StrictMode.VmPolicy oldPolicy = StrictMode.getVmPolicy();
+                try {
+                    // Temporarily disable deathPenalty on all default checks. For eg, shortcuts
+                    // containing file Uris would cause a crash as penaltyDeathOnFileUriExposure
+                    // is enabled by default on NYC.
+                    StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll()
+                            .penaltyLog().build());
+                    // Could be launching some bookkeeping activity
+                    startActivity(intent, optsBundle);
+                } finally {
+                    StrictMode.setVmPolicy(oldPolicy);
+                }
             } else {
                 // TODO Component can be null when shortcuts are supported for secondary user
                 launcherApps.startActivityForProfile(intent.getComponent(), user,