android - 如何以编程方式设置 Admob appID (19.1.0)?
问题描述
在19.1.0 版本之前,可以像这样以编程方式设置 appID:
MobileAds.initialize (Context context, String appID)
新方法是
initialize(Context, OnInitializationCompleteListener)
在内部,该方法null
作为 appID 传递:
public static void initialize(Context var0, OnInitializationCompleteListener var1) {
zzxw.zzqq().zza(var0, (String)null, var1);
}
这是否意味着 appID 不应再以编程方式设置?
解决方案
您必须将 APPLICATION_ID 放在清单文件中,您可以在 AdMob UI 中找到您的 App ID。对于 android:value,请在引号中插入您自己的 AdMob 应用 ID,如下所示。
<manifest>
<application>
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
</application>
之后,您可以以编程方式更改它
try {
ApplicationInfo ai = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
Bundle bundle = ai.metaData;
String myApiKey = bundle.getString("com.google.android.gms.ads.APPLICATION_ID");
Log.d(TAG, "Name Found: " + myApiKey);
ai.metaData.putString("com.google.android.gms.ads.APPLICATION_ID", "ca-app-pub-3940256099942544~3347511713");//you can replace your key APPLICATION_ID here
String ApiKey = bundle.getString("com.google.android.gms.ads.APPLICATION_ID");
Log.d(TAG, "ReNamed Found: " + ApiKey);
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "Failed to load meta-data, NameNotFound: " + e.getMessage());
} catch (NullPointerException e) {
Log.e(TAG, "Failed to load meta-data, NullPointer: " + e.getMessage());
}
推荐阅读
- python - 在 python 中处理文本文件时发现错误
- android - 带有渐变轮廓的自定义按钮和带有透明背景的图标
- sql - 如何在需要过滤的两个表上左连接?
- matlab - 将方程应用于数组的特定行并将答案连接到数组
- .net - .Net 中是否有管理权限的标准
- sql - SSDT中数据库项目之间的嵌套引用无法解析
- typescript - 是否可以使用 TypeScripts 装饰器来验证方法参数的值?
- c++ - 有没有一种快速的方法可以知道班级成员对大型班级的可访问性?
- python - 有没有与 is_superuser 相对的字段?
- mysql - Oracle .NET MySQL 8.0.21 客户端抛出奇怪的“不支持同名”错误