summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabriele M <moto.falcon.git@gmail.com>2017-04-02 19:22:40 +0200
committerDan Pasanen <dan.pasanen@gmail.com>2017-04-25 14:53:55 +0000
commit99649a575c74b7a76308cf955502a0bf33954a35 (patch)
treead8c7c142d801519f8198cb852bbaf0464819277
parent1cc5cef42654a6e5545e16ae4c8b2f858d701bf7 (diff)
downloadandroid_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.java5
-rw-r--r--src/com/android/launcher3/allapps/AllAppsGridAdapter.java25
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);
+ }
}