如何以编程方式在清单或字符串资源中以字符串值更改元数据
答案 0 :(得分:1)
使用将构建变量注入清单中,您可以通过编程方式更改元数据值
在build.gradle中
defaultConfig {
manifestPlaceholders = [ senderid:"12345"]
}
buildTypes {
release {
manifestPlaceholders = [ senderid:"56789"]
}
}
在清单文件中
<meta-data
android:name="SENDER_ID"
android:value="${senderid}" />
参考链接: https://developer.android.com/studio/build/manifest-build-variables.html
答案 1 :(得分:0)
您无法修改资源,当您将信息作为资源(在res文件夹中)提供时,无法以编程方式进行修改, 您不能在该目录中写入。与Android Manifest相同,清单元数据在运行时无法更改。
最好有两个字符串,例如第一个值和第二个值,所以您可以使用以下字符串:
Java:
thing.setText(getResources.getString(R.id.variablename2))
科特琳:
thing.text = resources.getString(R.id.variablename2)
答案 2 :(得分:0)
可以通过将元数据添加到AndroidManifest.xml文件中来更改元数据。以后,您可以从活动中使用捆绑软件访问它。这是示例。
AndroidManifest.xml
androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2'
读取此元数据仅需要几行Java
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.readmetadata"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainMenu" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data android:name="my_api_key" android:value="mykey123" />
</application>
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="8" />
</manifest>
Activity扩展了具有getPackageManager()方法的ContextWrapper。该方法返回PackageManager,该软件包用于通过传递包名称和元数据标志来获取ApplicationInfo。返回的ApplicationInfo包含一个字段metaData,它实际上是一个包含所有元数据的Bundle。第4行获取与XML中的“ android:name”参数相同的字符串。希望对您有帮助!