diff options
author | Gabriele M <moto.falcon.git@gmail.com> | 2017-04-02 19:22:40 +0200 |
---|---|---|
committer | Dan Pasanen <dan.pasanen@gmail.com> | 2017-04-25 14:53:55 +0000 |
commit | 99649a575c74b7a76308cf955502a0bf33954a35 (patch) | |
tree | ad8c7c142d801519f8198cb852bbaf0464819277 | |
parent | 1cc5cef42654a6e5545e16ae4c8b2f858d701bf7 (diff) | |
download | android_packages_apps_Trebuchet-99649a575c74b7a76308cf955502a0bf33954a35.tar.gz android_packages_apps_Trebuchet-99649a575c74b7a76308cf955502a0bf33954a35.tar.bz2 android_packages_apps_Trebuchet-99649a575c74b7a76308cf955502a0bf33954a35.zip |
Don't show market links if market app is protected
Trebuchet is a protected component manager, therefore it can start
protected apps without asking for a password. When a user looks for
an app that isn't installed using the search box in the app drawer,
Trebuchet shows a link to start the default market app. This allows
any user to start the market app without inserting the password, even
when protected, so hide the link in this case.
BUGBASH-358
Change-Id: Ic42355cfc1b689818c5d6682a61cf1c98d37bc80
-rw-r--r-- | src/com/android/launcher3/AppInfo.java | 5 | ||||
-rw-r--r-- | src/com/android/launcher3/allapps/AllAppsGridAdapter.java | 25 |
2 files changed, 27 insertions, 3 deletions
diff --git a/src/com/android/launcher3/AppInfo.java b/src/com/android/launcher3/AppInfo.java index ca8ae255c..515f8b586 100644 --- a/src/com/android/launcher3/AppInfo.java +++ b/src/com/android/launcher3/AppInfo.java @@ -102,7 +102,10 @@ public class AppInfo extends ItemInfo { } public static int initFlags(LauncherActivityInfoCompat info) { - int appFlags = info.getApplicationInfo().flags; + return initFlags(info.getApplicationInfo().flags); + } + + public static int initFlags(int appFlags) { int flags = 0; if ((appFlags & android.content.pm.ApplicationInfo.FLAG_SYSTEM) == 0) { flags |= DOWNLOADED_FLAG; diff --git a/src/com/android/launcher3/allapps/AllAppsGridAdapter.java b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java index 643182588..12cda2571 100644 --- a/src/com/android/launcher3/allapps/AllAppsGridAdapter.java +++ b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java @@ -41,6 +41,7 @@ import com.android.launcher3.BaseRecyclerViewFastScrollBar.FastScrollFocusApplic import com.android.launcher3.BaseRecyclerViewFastScrollBar.FastScrollFocusable; import com.android.launcher3.BubbleTextView; import com.android.launcher3.Launcher; +import com.android.launcher3.ProtectedComponentsHelper; import com.android.launcher3.R; import com.android.launcher3.RemoteFolderManager; import com.android.launcher3.Utilities; @@ -350,6 +351,12 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter. // The name of the market app which handles searches, to be used in the format str // below when updating the search-market view. Only needs to be loaded once. private String mMarketAppName; + // The package name of the market app which handles searches, to be used to + // check if the app is protected or not. Only needs to be loaded once. + private String mMarketAppPackageName; + // The flags of the market app which handles searches, to be used to check if the + // market app is protected or not. Only needs to be loaded once. + private int mMarketAppFlags; // The text to show when there is a market app which can handle a specific query, updated // each time the search query changes. private String mMarketSearchMessage; @@ -417,7 +424,15 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter. ResolveInfo marketInfo = pm.resolveActivity(createMarketSearchIntent(""), PackageManager.MATCH_DEFAULT_ONLY); if (marketInfo != null) { - mMarketAppName = marketInfo.loadLabel(pm).toString(); + try { + String packageName = marketInfo.activityInfo.packageName; + int flags = pm.getApplicationInfo(packageName, 0).flags; + mMarketAppFlags = AppInfo.initFlags(flags); + mMarketAppPackageName = packageName; + mMarketAppName = marketInfo.loadLabel(pm).toString(); + } catch (PackageManager.NameNotFoundException e) { + // Don't do anything + } } mRemoteFolderManager = launcher.getRemoteFolderManager(); @@ -614,7 +629,7 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter. break; case SEARCH_MARKET_VIEW_TYPE: TextView searchView = (TextView) holder.mContent; - if (mMarketSearchIntent != null) { + if (showMarketLink()) { searchView.setVisibility(View.VISIBLE); searchView.setContentDescription(mMarketSearchMessage); searchView.setGravity(mApps.hasNoFilteredResults() ? Gravity.CENTER : @@ -713,4 +728,10 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter. marketSearchIntent.setData(marketSearchUri); return marketSearchIntent; } + + private boolean showMarketLink() { + return mMarketAppPackageName != null && + !ProtectedComponentsHelper.isProtectedPackage(mMarketAppFlags, + mMarketAppPackageName); + } } |