有没有人知道是否可以将参数传递到AndroidManifest.xml文件中的Activity?我想在几个应用程序中使用相同的活动,但有办法根据应用程序调整该活动的外观。
E.g。我想写一些像(在AndroidManifest.xml中)
的东西<activity android:name=".MyActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<extradata>
<item name="foo" value="bar"/>
</extradata>
</activity>
..并且能够在活动的onCreate中读出bar的值。这是否可以通过intent过滤器中的data属性来完成?
谢谢,
答案 0 :(得分:9)
实际上,有办法做到这一点。查看这篇文章:
http://blog.iangclifton.com/2010/10/08/using-meta-data-in-an-androidmanifest/
简而言之,您可以使用以下方法获取代码的内容:
ApplicationInfo ai = getPackageManager().getApplicationInfo(activity.getPackageName(), PackageManager.GET_META_DATA);
Bundle bundle = ai.metaData;
String myApiKey = bundle.getString("my_api_key");
元数据标签定义如下:
<meta-data android:name="my_api_key" android:value="mykey123" />
可以访问值中的数据,但是如果要指定与活动相关的内容,则这是更清晰的方法。
希望它有所帮助。
答案 1 :(得分:1)
使用res / values / strings.xml
在此处保存您的数据。使用像
这样的东西<string-array name = "foo">
<item>bar1</item>
<item>bar2</item>
<item>red</item>
<item>blue</item>
<item>one</item>
<item>two</item>
</string-array>
然后您可以使用
来获取此信息Resources r;
r = getResources():
String[] foos = r.getStringArray(R.array.foo);
我认为这就是你要找的东西。但是如果你想要设计你的应用程序风格,那么你应该看看使用主题。
[主题的android示例] [1]
[1]:http://www.androidengineer.com/2010/06/using-themes-in-android-applications.html“主题示例”
答案 2 :(得分:0)
我认为没有办法做到这一点。 (糟糕的黑客可能是使用活动的进程名称来表示这样的信号。)更好的方法是在每个应用程序中指定一个标准资源,其中包含活动所需的信息。