繁体   English   中英

如何在运行时将元数据信息写入Android Manifest

[英]How to write meta-data info to Android Manifest at runtime

我知道可以编辑android manifest组件,例如,将其设置为启用/禁用等。我想在运行时将meta值标签插入android manifest的应用程序标签中。 我如何直接写入android清单?

这是我想直接写入应用程序的android清单中的字符串:

<meta-data android:name="my_api_key" android:value="mykey124" />

并且必须在application标记内。

您无法在运行时编辑清单。

如果您需要运行时解决方案,则应尝试其他方法,例如共享首选项或持久保存价值的方法。

如果不只是将其放在清单中,请以Google Play服务为例:

<application>
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
    .....
</application>

我认为为时已晚,但将有助于其他任何对此答案的搜索

首先转到res> values> strings.xml并创建字符串资源

 <string name="my_api_key">Your_api_key</string>

之后,转到清单文件

如果要在应用程序内部添加,然后在应用程序标记之后才开始,或者如果活动在要编写的活动标记之后,则请确保要在应用程序或活动中添加此元标记。

   <meta-data
            android:name="apikey"
            android:value="@string/my_api_key" />

现在终于到了检索插入到应用程序或活动中的元数据的时候了,

 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());
    }

如果您已将metatag放入应用程序中,则使用

 ApplicationInfo ai = getPackageManager().getApplicationInfo(this.getPackageName(), PackageManager.GET_META_DATA); 

而不是Activity info,仅此而已。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM