From 85fc55a976a1f1605ad22deff74f5ceb080913e6 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Tue, 31 May 2016 10:44:03 -0700 Subject: [PATCH] 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 --- src/com/android/launcher3/Launcher.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 6a95a90924..ca31ea54d5 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -880,7 +880,7 @@ public class Launcher extends Activity 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 @@ public class Launcher extends Activity } 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,