P.M*_*lch 23 android android-manifest
我在manifest.xml中指定了一个元数据,如下所示:
<meta-data android:value="5555555555" android:name="foo"></meta-data>
Run Code Online (Sandbox Code Playgroud)
访问元数据时,如下所示:
ActivityInfo ai = act.getPackageManager().getActivityInfo(componentName, PackageManager.GET_META_DATA);
Object value = (Object)ai.metaData.get(key);
Run Code Online (Sandbox Code Playgroud)
这个值被解释为int - 更重要的是 - 错误地解释为(1260588259).
由于类型是由构建系统(布尔值,整数,浮点数和字符串)自动确定的,我想知道是否有任何方法可以强制数据类型为字符串.
我尝试在末尾添加一个空格("5555555555"),但随后该值被解释为5.5555553E9 float!).
我也尝试使用getString而不是get,但是返回null.
有任何想法吗?TIA.
Dav*_*ebb 36
将转义空间放在数字前面似乎有效:
<meta-data android:name="foo" android:value="\ 1234567890"/>
Run Code Online (Sandbox Code Playgroud)
转义的空格不会出现在返回的值中get()
.
如果我诚实的话,我不知道它是如何工作的.
如果您想要记录并因此更可靠,您可以始终将您的字符串值作为资源并引用它:
<meta-data android:name="foo" android:resource="@string/mynumber"/>
Run Code Online (Sandbox Code Playgroud)
小智 9
我也有这样的问题.我的解决方案如下:
<meta-data android:value="5555555555\0" android:name="foo"></meta-data>
Run Code Online (Sandbox Code Playgroud)
我在变量的末尾添加了 - eskape序列"\ 0"(NULL - 通常用于定义字符串的结尾(例如,在语言C中).
这对我有用.
最好的祝福.
归档时间: |
|
查看次数: |
7020 次 |
最近记录: |