如何将用户定义的属性/值添加到Android清单文件中?

ino*_*nor 34 android android-manifest android-custom-attributes

我想在清单文件中添加自定义属性/属性,并能够在运行时读取它.我想这样做,所以我可以通过这些清单属性自定义应用程序的行为.如何才能做到这一点?

P.M*_*lch 70

您可以将元数据添加到AndroidManifest.xml文件中,然后在应用程序中读取它.

像这样写数据:

<meta-data android:value="bar" android:name="foo"></meta-data>
Run Code Online (Sandbox Code Playgroud)

并读取数据如下:

ApplicationInfo ai = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
Object value = (Object)ai.metaData.get("foo");
Run Code Online (Sandbox Code Playgroud)

请参阅http://developer.android.com/guide/topics/manifest/meta-data-element.html

  • 这里的通话工作完美。值得一提的是,如果其他用户遇到这种情况,您将需要使用 try/catch PackageManager.NameNotFoundException 来包装它(特别是在 Android Studio 中,如果不包装它,这甚至无法编译)。 (2认同)

nan*_*ack 8

您可以在res/values中创建一个空资源文件,并为其添加字符串和项(对于bool或整数值).

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="foo">bar</string">
    <item name="testint" type="integer">33</item>
    <item name="testbool" type="bool">true</item>
</resources>
Run Code Online (Sandbox Code Playgroud)

或者,您可以简单地使用Constants对象,在该对象中将属性定义为最终静态变量.

  • 应该是getResources().getString(R.string.foo)getResources().getInteger(R.integer.testint)getResources.getBoolean(R.bool.testbool)请参阅http://developer.android.com/guide/topics /resources/more-resources.html了解更多详情 (4认同)