Index: chrome/android/java/src/org/chromium/chrome/browser/payments/PackageManagerDelegate.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/PackageManagerDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/PackageManagerDelegate.java |
index 8afbbc2a609d5c5c4d9969f9db224309056a953f..a943eb3a9e67c08de35e7df874570bd4a037b57f 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/PackageManagerDelegate.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/PackageManagerDelegate.java |
@@ -5,10 +5,12 @@ |
package org.chromium.chrome.browser.payments; |
import android.content.Intent; |
+import android.content.pm.ApplicationInfo; |
import android.content.pm.PackageInfo; |
import android.content.pm.PackageManager; |
import android.content.pm.PackageManager.NameNotFoundException; |
import android.content.pm.ResolveInfo; |
+import android.content.res.Resources; |
import android.graphics.drawable.Drawable; |
import android.os.StrictMode; |
import android.os.StrictMode.ThreadPolicy; |
@@ -17,6 +19,8 @@ import org.chromium.base.ContextUtils; |
import java.util.List; |
+import javax.annotation.Nullable; |
+ |
/** Abstraction of Android's package manager to enable unit testing. */ |
public class PackageManagerDelegate { |
/** |
@@ -96,4 +100,50 @@ public class PackageManagerDelegate { |
public Drawable getAppIcon(ResolveInfo resolveInfo) { |
return resolveInfo.loadIcon(ContextUtils.getApplicationContext().getPackageManager()); |
} |
+ |
+ /** |
+ * Gets the given string array meta data from the given app. |
+ * |
+ * @param packageName The package name of the app containing the meta data. |
+ * @param metaDataName The meta data name of the string array. |
+ * @return The string array or null. |
+ */ |
+ @Nullable |
+ public String[] getStringArrayMetaData(String packageName, String metaDataName) { |
+ try { |
+ PackageManager packageManager = |
+ ContextUtils.getApplicationContext().getPackageManager(); |
+ ApplicationInfo appInfo = |
+ packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA); |
+ if (appInfo.metaData == null) return null; |
+ |
+ int resId = appInfo.metaData.getInt(metaDataName); |
+ Resources resources = packageManager.getResourcesForApplication(appInfo); |
+ return resources.getStringArray(resId); |
+ } catch (NameNotFoundException e) { |
please use gerrit instead
2017/03/31 15:47:08
Let's wrap in try-catch only the function that thr
gogerald1
2017/03/31 16:18:44
Done. getResourcesForApplication might also throug
|
+ return null; |
+ } |
+ } |
+ |
+ /** |
+ * Gets the given string meta data from the given app. |
+ * |
+ * @param packageName The package name of the app containing the meta data. |
+ * @param metaDataName The meta data name of the string. |
+ * @return The string or null. |
+ */ |
+ @Nullable |
+ public String getStringMetaData(String packageName, String metaDataName) { |
+ try { |
+ PackageManager packageManager = |
+ ContextUtils.getApplicationContext().getPackageManager(); |
+ ApplicationInfo appInfo = |
+ packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA); |
+ if (appInfo.metaData == null) return null; |
+ |
+ return appInfo.metaData.getString(metaDataName); |
+ } catch (NameNotFoundException e) { |
please use gerrit instead
2017/03/31 15:47:08
Ditto.
gogerald1
2017/03/31 16:18:44
Done. Ditto
|
+ return null; |
+ } |
+ } |
} |