- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想获取设备中存在的所有包的 Activity 信息(例如 configchanges、resizemode,如果支持画中画)。
我可以使用带有 GET_ACTIVITIES
标志的 PackageManager
获取 Activity 信息。这样我就可以使用 ActivityInfo.configChanges
获取 configChanges
值。
但是,如果在 android:configChanges
中设置了多个配置值,该值将返回一个随机 int。
例如:
如果设置了以下值
android:configChanges="uiMode|smallestScreenSize|locale|colorMode|density"
使用以下代码获取 configchanges 值
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 Studio 中,我可以看到 Debug模式下的值。
以上任何线索/帮助都将非常有用。
最佳答案
configChanges
是位掩码。
要检查给定位是否已设置,您只需使用适当的 bitwise operator .
例如,要检查是否设置了 uiMode
,您可以这样做:
int configChanges = activityInfo.configChanges;
if ((configChanges & ActivityInfo.CONFIG_UI_MODE) == ActivityInfo.CONFIG_UI_MODE) {
// uiMode is set
} else {
// uiMode is not set
}
定义一个方法可能会更容易:
public boolean isConfigSet(int configMask, int configToCheck) {
return (configMask & configToCheck) == configToCheck;
}
你会这样调用它:
int configChanges = activityInfo.configChanges;
boolean uiModeSet = isConfigSet(configChanges, ActivityInfo.CONFIG_UI_MODE);
boolean colorModeSet = isConfigSet(configChanges, ActivityInfo.CONFIG_COLOR_MODE);
// ...
In Addition to that is there any way we can get
activity.resizeMode
. I understand that it is@hide
api.
可靠的是,没有。尽管 Google 发布了 blog post,您也许可以通过反射 API 访问它。最近声明如下:
Starting in the next release of Android, some non-SDK methods and fields will be restricted so that you cannot access them -- either directly, via reflection, or JNI.
(强烈建议不要通过反射访问隐藏字段)
关于android - 如何获取android :configChanges values from ActivityInfo class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50127593/
带有“r.activityInfo”的行在编译时返回“错误:找不到符号变量activityInfo” 公共(public)类 MainActivity 扩展了 ActionBarActivity {
我对以下用法的区别感到困惑: SCREEN_ORIENTATION_LANDSCAPE SCREEN_ORIENTATION_SENSOR_LANDSCAPE 我查看了它的解释,但不知道这些丝束之间的
背景 我知道已经有 Logo 和图标(解释了差异 here )。 问题 从 API 20(“L”?或者 Android wear?)开始,现在有一个新的,称为“banner”。以下是文档中关于它的内容
ActivityInfo 的元数据是什么? Bundle bundle = actInfo.metaData; Bundle 包含什么样的数据,如果不知道 key 对,如何从 Bundle 中检索数据
我尝试创建一个方法,它返回屏幕方向依赖于无论设备是手持设备还是平板电脑。 public int getScreenOrientation(boolean isTablet){ if(isTab
这是 API 18 中的一项功能,我无法真正锁定它。我整晚都在阅读如何手动处理您自己的配置更改,并尝试了很多东西,但我目前的代码无效。 目标:我需要有一个 Activity ,在用户拍摄视频(将他们带
我在辅助类中有一个 Activity 的实例,我正在尝试从它在 AndroidManifest.xml 文件中的条目获取属性。 我可以获得所有 ActivityInfo 实例的列表,但是如何为我的应用
本文整理了Java中org.activityinfo.model.type.time.YearValue类的一些代码示例,展示了YearValue类的具体用法。这些代码示例主要来源于Github/St
尝试检索每个包的所有 Activity 会导致所有 Activity 的 ActivityInfo 数组为空: List packageInfos = mPackageManager.getInsta
我期待看到特定 Activity 的类别属于 ActivityInfo 类,但我找不到任何引用 ActivityInfo 类中的类别。任何人知道在何处维护 Activity 的类别信息吗? 最佳答案
我想获取设备中存在的所有包的 Activity 信息(例如 configchanges、resizemode,如果支持画中画)。 我可以使用带有 GET_ACTIVITIES 标志的 PackageM
我需要从 AndroidManifest.xml 文件中检索一个值,存储为元数据: 在onCreate 方法中,我调用了以下方法: private Object getMetaData(String
我的应用程序的一部分是一个启动器,用户可以在其中添加(或删除)网格中的应用程序。我用来获取 ActivityInfo 的代码如下: Intent intent = new Intent(); inte
我想了解设备的详细方向,最好是 SCREEN_ORIENTATION_LANDSCAPE、SCREEN_ORIENTATION_PORTRAIT、SCREEN_ORIENTATION_REVERSE_
本文整理了Java中org.activityinfo.legacy.shared.reports.content.YearCategory类的一些代码示例,展示了YearCategory类的具体用法。
本文整理了Java中org.activityinfo.model.type.time.YearValue.getYear()方法的一些代码示例,展示了YearValue.getYear()的具体用法。
我需要检查已安装的应用程序是否具有特定的启动器 Activity 类(基于应用程序的包名称)。 我可以获得 Activity 列表并找到正确的类(class): PackageInfo info =
本文整理了Java中org.activityinfo.legacy.shared.reports.content.YearCategory.getYear()方法的一些代码示例,展示了YearCate
我是一名优秀的程序员,十分优秀!