Android 从清单配置文件元数据中获取值


(1)从AndroidManifest.xml配置文件中获取meta数据

  1. // 从Manifest.xml配置文件中获取数据
  2. public static String getMetaValue(Context context, String metaKey) {
  3. Bundle metaData = null;
  4. String metaValue = null;
  5. if (context == null || metaKey == null) {
  6. return null;
  7. }
  8. try {
  9. ApplicationInfo ai = context.getPackageManager().getApplicationInfo(
  10. context.getPackageName(), PackageManager.GET_META_DATA);
  11. if (null != ai) {
  12. metaData = ai.metaData;
  13. }
  14. if (null != metaData) {
  15. metaValue = metaData.getString(metaKey);
  16. }
  17. } catch (NameNotFoundException e) {
  18. }
  19. return metaValue;// xxx
  20. }
  21. <meta-data android:name="api_key" android:value="xxx" />
复制代码

(2)获取layout文件中的一些控件,如下是一个Activity

  1. public class CustomActivity extends Activity {
  2. @Override
  3. public void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);

  5. Resources resource = this.getResources();
  6. String pkgName = this.getPackageName();

  7. setContentView(resource.getIdentifier("custom_activity", "layout", pkgName));
  8.     // 获取pkgName包下名为custom_activity的一个layout文件

  9. TextView titleView = (TextView) this.findViewById(resource.getIdentifier("title", "id", pkgName));
  10.     // 获取pkgName包下id为title的一个widget

  11. }
  12. }
复制代码

之后在AndroidManifest.xml中,对该Activity进行配置,配置包名为完全路径名。

下面是查看resource.getIdentifier()方法分析

  1. public int getIdentifier(String name, String defType, String defPackage) {
  2. try {
  3. return Integer.parseInt(name);
  4. } catch (Exception e) {
  5. // Ignore
  6. }
  7. return mAssets.getResourceIdentifier(name, defType, defPackage);
  8.     // getResources().getIdentifier(name, defType, defPackage)
  9. }
复制代码

返回给定的resource_name所对应的标识符,类似于R文件中的id(个人理解)!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值