gpt4 book ai didi

android - 是否有可能获得另一个应用程序的原色,如 Lollipop 的最近 View

转载 作者:太空宇宙 更新时间:2023-11-03 13:21:28 24 4
gpt4 key购买 nike

我找到了

http://developer.android.com/reference/android/app/ActivityManager.html#getRunningTasks(int)

检索当前应用程序的 baseActivity 或 topActivity。然后我就能够获取 Activity 的 Resources 对象。

但是,该 API 不再对 Lollipop 中的第三方应用程序可用

最佳答案

您可以使用 PackageManager.getLaunchIntentForPackage 检索应用程序的启动器 IntentPackageManager.getActivityInfo将返回 ActivityInfo

获得该信息后,您可以创建一个新的 Theme ,然后使用来自 PackageManager.getResourcesForApplication 的资源检索查找 colorPrimary 值所需的属性。

    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();
}

需要注意的是启动器 Activity 可能不包含 theme 属性,在这种情况下您可以考虑使用 PackageManager.getApplicationInfo ,但不能保证 Application 标记也包含 theme 属性。

这里有一些例子:

联系人

contacts

播放音乐

play music

Gmail

gmail

关于android - 是否有可能获得另一个应用程序的原色,如 Lollipop 的最近 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27121919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com