I found
http://developer.android.com/reference/android/app/ActivityManager.html#getRunningTasks(int)
to retrieve current application's baseActivity or topActivity. Then I was able to get the Activity's Resources object.
However, the api is no longer available to third party applications in Lollipop
You can retrieve the launcher Intent
for an application using PackageManager.getLaunchIntentForPackage
and PackageManager.getActivityInfo
will return the ActivityInfo
for it.
Once you have that information you can create a new Theme
, then use the resources from PackageManager.getResourcesForApplication
to retrieve the attrs needed to find the colorPrimary
value.
try {
final PackageManager pm = getPackageManager();
// The package name of the app you want to receive resources from
final String appPackageName = ...;
// Retrieve the Resources from the app
final Resources res = pm.getResourcesForApplication(appPackageName);
// Create the attribute set used to get the colorPrimary color
final int[] attrs = new int[] {
/** AppCompat attr */
res.getIdentifier("colorPrimary", "attr", appPackageName),
/** Framework attr */
android.R.attr.colorPrimary
};
// Create a new Theme and apply the style from the launcher Activity
final Theme theme = res.newTheme();
final ComponentName cn = pm.getLaunchIntentForPackage(appPackageName).getComponent();
theme.applyStyle(pm.getActivityInfo(cn, 0).theme, false);
// Obtain the colorPrimary color from the attrs
TypedArray a = theme.obtainStyledAttributes(attrs);
// Do something with the color
final int colorPrimary = a.getColor(0, a.getColor(1, Color.WHITE));
// Make sure you recycle the TypedArray
a.recycle();
a = null;
} catch (final NameNotFoundException e) {
e.printStackTrace();
}
One caveat is that the launcher Activity
may not contain a theme
attribute, in which case you may consider using PackageManager.getApplicationInfo
, but there's no guarantee the Application
tag contains a theme
attribute as well.
Here are some examples:
Contacts
Play Music
Gmail
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With