首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从ActivityInfo类中获取android:configChanges值

如何从ActivityInfo类中获取android:configChanges值
EN

Stack Overflow用户
提问于 2018-05-02 05:22:48
回答 1查看 442关注 0票数 2

我想获取设备中的所有包的活动信息(如configchanges、resizemode (如果支持Picture中的Picture )。

我可以使用带有PackageManager标志的GET_ACTIVITIES获取活动信息。有了它,我可以使用configChanges获得ActivityInfo.configChanges值。

但是,如果在android:configChanges中设置了多个配置值,则该值将返回一个随机int。

前任:

如果设置了下面的值

android:configChanges="uiMode|smallestScreenSize|locale|colorMode|density“

使用以下代码获取configchanges值

代码语言:javascript
运行
复制
PackageInfo packageInfo = mPackageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);

ActivityInfo activityInfo[] = packageInfo.activities;

if(activityInfo!=null) {
    for(ActivityInfo activity : activityInfo) {
      int configChange = activity.configChanges;
    }
}

我得到的activity.configChanges值为23047

23047表示什么,我如何解码它,以便我可以获得在AndroidManifest.xml中设置的配置值

除此之外,我们还有任何方法可以获得activity.resizeMode。据我所知,这是@hide api。在Android中,我可以看到调试模式中的值。

任何通向上面的线索/帮助都是非常有用的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-02 05:55:29

configChanges是个小面具。

要检查是否设置了给定位,只需使用适当的位算子即可。

例如,要检查是否设置了uiMode,可以这样做:

代码语言:javascript
运行
复制
int configChanges = activityInfo.configChanges;

if ((configChanges & ActivityInfo.CONFIG_UI_MODE) == ActivityInfo.CONFIG_UI_MODE) {
    // uiMode is set
} else {
    // uiMode is not set
}

定义一个方法可能会使它更容易:

代码语言:javascript
运行
复制
public boolean isConfigSet(int configMask, int configToCheck) {
    return (configMask & configToCheck) == configToCheck;
}

你可以这样称呼它:

代码语言:javascript
运行
复制
int configChanges = activityInfo.configChanges;

boolean uiModeSet = isConfigSet(configChanges, ActivityInfo.CONFIG_UI_MODE);
boolean colorModeSet = isConfigSet(configChanges, ActivityInfo.CONFIG_COLOR_MODE);
// ...

除此之外,我们还有任何方法可以获得activity.resizeMode。据我所知,这是@hide api。

可靠,不。您可能可以通过反射API访问它,尽管谷歌最近发布了一个博客帖子,声明如下:

从Android的下一个版本开始,一些非SDK方法和字段将受到限制,这样您就不能直接通过反射或JNI访问它们。

(无论如何,强烈不鼓励通过反射访问隐藏字段)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50127593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档