关于Android(安卓)Manifest中的
16lz
2021-01-24
语法
PackageItemInfo.metaData
字段提供给父控件。
属性
-
android:name
:该item的唯一名称。为了保证其名字唯一性,可以使用 Java 命名风格 -
android:resource
:对资源的引用。其值为资源的ID,可以通过该Bundle的Bundle.getIn()
方法获取其ID值 -
android:value
:分配给该item的值。更多类型及介绍见官网文档
用法
在Android中,可以在 AndroidManifest.xml
中定义meta-data
信息。
基本用法
最基本的用法增加item用来存储信息,且该信息可以被整个项目所使用。这时,
定义在外面,且在
内,例如:
读取时如下:
ApplicationInfo ai = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);Bundle bundle = ai.metaData;String myApiKey = bundle.getString("my_test_metagadata");
其中,可以存储的类型还包括boolean
, int
, string
, float
用于第三方库或APIs
项目中经常需要引用第三方库或使用其API,但对于详细的产品,需要一个KEY
来识别,例如:判断不同的使用者或不同的机型,这个KEY
必须由开发者定义,并使用相应API,但由于安全性,这个KEY
不可能被共享。
通过使用
,开发人员可以与使用者共享第三方库或APIs的KEY
,例子如下:
try { ApplicationInfo ai = getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA); Bundle bundle = ai.metaData; String myApiKey = bundle.getString("my_test_metagadata");} catch (Exception e) { Log.e(TAG, "Dear developer. Don't forget to configure in your AndroidManifest.xml file.");}
例如,为了能够使用 HockeyApp 的 crash report功能,需要在AndroidManifest
中添加如下代码:
这行代码会在加载 net.hockeyapp.android.appIdentifier
时使用value值为${HOCKEYAPP_APP_ID}的数据,所以,HockeyApp 可以知道是哪一台设备请求获取crash report功能。
配置Activity
的另一个应用是配置Activity,通过这种方式,可以为当前Acitivity配置数据,项目能够更好的处理Activity。这时,
标签在标签内。例如:
从标签内读取数据可以通过如下方式:
try { ActivityInfo ai = getPackageManager().getActivityInfo(this.getComponentName(), PackageManager.GET_META_DATA); Bundle bundle = ai.metaData; if (bundle != null) { String apiKey = bundle.getString("apikey"); Log.d(this.getClass().getSimpleName(), "apiKey = " + apiKey); } } } catch (PackageManager.NameNotFoundException e) { Utilities.log(this.getClass().getSimpleName(), "Failed to load meta-data, NameNotFound: " + e.getMessage()); } catch (NullPointerException e) { Log.e(this.getClass().getSimpleName(), "Failed to load meta-data, NullPointer: " + e.getMessage()); }
更多相关文章
- 如何查看android的avd中的sqlite数据库的表
- Android(安卓)基础控件 TextView
- Android学习-五布局之绝对布局(AbsoluteLayout)
- 【Android】TextView倾斜文字
- Android中系统自带数据库文件中的多表联合查询疑问
- Android(安卓)- fill_parent、wrap_content和match_parent的区别
- ARGB,RGB颜色值表示
- Android(安卓)自定义水平进度条的圆角进度
- Android直接连接数据库服务器