簡體   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