summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java')
-rw-r--r--core/java/com/android/internal/app/ResolverActivity.java8
1 files changed, 6 insertions, 2 deletions
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java
index 4e48c1b4c166..7eb8708cb916 100644
--- a/core/java/com/android/internal/app/ResolverActivity.java
+++ b/core/java/com/android/internal/app/ResolverActivity.java
@@ -1248,7 +1248,9 @@ public class ResolverActivity extends Activity {
}
// Filter out any activities that the launched uid does not
- // have permission for. We don't do this when we have an explicit
+ // have permission for.
+ // Also filter out those that are suspended because they couldn't
+ // be started. We don't do this when we have an explicit
// list of resolved activities, because that only happens when
// we are being subclassed, so we can safely launch whatever
// they gave us.
@@ -1259,7 +1261,9 @@ public class ResolverActivity extends Activity {
int granted = ActivityManager.checkComponentPermission(
ai.permission, mLaunchedFromUid,
ai.applicationInfo.uid, ai.exported);
- if (granted != PackageManager.PERMISSION_GRANTED) {
+ boolean suspended = (ai.applicationInfo.flags
+ & ApplicationInfo.FLAG_SUSPENDED) != 0;
+ if (granted != PackageManager.PERMISSION_GRANTED || suspended) {
// Access not allowed!
if (mOrigResolveList == currentResolveList) {
mOrigResolveList = new ArrayList<>(mOrigResolveList);