From 873e19384cb538b77d003d99f202b73fc0d3963f Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Tue, 29 Jan 2019 18:33:07 -0500 Subject: [PATCH] Fixed NPE when passing intent to permissioncontroller OngoingPrivacyDialog only assigns clickListeners to lines with a valid package name. Test: manual, Device Services is not clickable Bug: 123581716 Change-Id: I7775cc39b7446fc93c53cbf0c70b9214e406cd74 --- .../systemui/privacy/OngoingPrivacyDialog.kt | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/privacy/OngoingPrivacyDialog.kt b/packages/SystemUI/src/com/android/systemui/privacy/OngoingPrivacyDialog.kt index db5c244d95b2a..e2688f13134ca 100644 --- a/packages/SystemUI/src/com/android/systemui/privacy/OngoingPrivacyDialog.kt +++ b/packages/SystemUI/src/com/android/systemui/privacy/OngoingPrivacyDialog.kt @@ -19,6 +19,7 @@ import android.app.Dialog import android.content.Context import android.content.DialogInterface import android.content.Intent +import android.content.pm.PackageManager import android.content.res.ColorStateList import android.os.UserHandle import android.util.IconDrawableFactory @@ -157,16 +158,21 @@ class OngoingPrivacyDialog constructor( } else { icons.visibility = View.GONE } - item.setOnClickListener(object : View.OnClickListener { - val intent = Intent(Intent.ACTION_REVIEW_APP_PERMISSION_USAGE) - .putExtra(Intent.EXTRA_PACKAGE_NAME, app.packageName) - .putExtra(Intent.EXTRA_USER, UserHandle.getUserHandleForUid(app.uid)) - override fun onClick(v: View?) { - Dependency.get(ActivityStarter::class.java) - .postStartActivityDismissingKeyguard(intent, 0) - dismissDialog?.invoke() - } - }) + try { + // Check if package exists + context.packageManager.getPackageInfo(app.packageName, 0) + item.setOnClickListener(object : View.OnClickListener { + val intent = Intent(Intent.ACTION_REVIEW_APP_PERMISSION_USAGE) + .putExtra(Intent.EXTRA_PACKAGE_NAME, app.packageName) + .putExtra(Intent.EXTRA_USER, UserHandle.getUserHandleForUid(app.uid)) + override fun onClick(v: View?) { + Dependency.get(ActivityStarter::class.java) + .postStartActivityDismissingKeyguard(intent, 0) + dismissDialog?.invoke() + } + }) + } catch (e: PackageManager.NameNotFoundException) {} + itemList.addView(item) } }