From de9b69e051efedee902c9c76e930bc5d2bb49fe3 Mon Sep 17 00:00:00 2001 From: Till Kottmann Date: Tue, 31 Jul 2018 21:54:29 +0200 Subject: [PATCH] Fix NPE when a gesture tries to open an uninstalled app --- res/values/strings.xml | 1 + .../gestures/handlers/LauncherGestureHandlers.kt | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 4d9b76b8c2..c37153640f 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -596,4 +596,5 @@ By disabling device admin, you will not be able to use double tap to lock on your home screen. \"%s\" has been applied successfully! + Opening app failed diff --git a/src/ch/deletescape/lawnchair/gestures/handlers/LauncherGestureHandlers.kt b/src/ch/deletescape/lawnchair/gestures/handlers/LauncherGestureHandlers.kt index 441c19bcf0..2f7c8d514f 100644 --- a/src/ch/deletescape/lawnchair/gestures/handlers/LauncherGestureHandlers.kt +++ b/src/ch/deletescape/lawnchair/gestures/handlers/LauncherGestureHandlers.kt @@ -4,10 +4,12 @@ import android.content.Context import android.content.Intent import android.os.UserHandle import android.support.annotation.Keep +import android.widget.Toast import ch.deletescape.lawnchair.gestures.GestureController import ch.deletescape.lawnchair.gestures.GestureHandler import ch.deletescape.lawnchair.gestures.ui.SelectAppActivity import com.android.launcher3.R +import com.android.launcher3.Utilities import com.android.launcher3.compat.LauncherAppsCompat import com.android.launcher3.compat.UserManagerCompat import com.android.launcher3.shortcuts.DeepShortcutManager @@ -159,8 +161,13 @@ class StartAppGestureHandler(context: Context, config: JSONObject?) : GestureHan override fun onGestureTrigger(controller: GestureController) { when (type) { "app" -> { - LauncherAppsCompat.getInstance(context) - .startActivityForProfile(target!!.componentName, target!!.user, null, null) + try { + LauncherAppsCompat.getInstance(context) + .startActivityForProfile(target!!.componentName, target!!.user, null, null) + } catch (e: NullPointerException){ + // App is probably not installed anymore, show a Toast + Toast.makeText(context, R.string.app_gesture_failed_toast, Toast.LENGTH_LONG).show() + } } "shortcut" -> { DeepShortcutManager.getInstance(context)