Chcę dodać niestandardowy atrybut/właściwość do pliku manifestu i móc go odczytać w czasie wykonywania. Chcę to zrobić, aby dostosować zachowanie aplikacji za pomocą tych właściwości manifestu. Jak to zrobić?Jak dodać właściwości/wartości zdefiniowane przez użytkownika do pliku manifestu systemu Android?
Odpowiedz
Możesz dodać metadane do pliku AndroidManifest.xml
, a następnie przeczytać w swojej aplikacji.
zapisywać dane tak:
<meta-data android:value="bar" android:name="foo"></meta-data>
I odczytywać dane tak:
ApplicationInfo ai = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
Object value = (Object)ai.metaData.get("foo");
Zobacz http://developer.android.com/guide/topics/manifest/meta-data-element.html
Możesz utworzyć pusty plik zasobów w res/values i dodać do niego ciągi znaków i pozycje (dla wartości bool lub integer).
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="foo">bar</string">
<item name="testint" type="integer">33</item>
<item name="testbool" type="bool">true</item>
</resources>
Alternatywnie można po prostu użyć obiektu Constants, w którym definiujesz swoje właściwości jako ostateczne zmienne statyczne.
dzięki, to proszę pokazać kod potrzebny do odczytu wartości foo z pliku zasobów – inor
powinno być getResources(). getString (R.string.foo) getResources(). getInteger (R.integer.test int) getResources.getBoolean (R.bool.testbool) zobacz http://developer.android.com/guide/topics/resources/more-resources.html po więcej szczegółów – nanoquack
Podobnie jak w przypadku pomysłu, łatwo uzyskać wartość bez każdy parser – fifth
Połączenia tutaj działają idealnie. Warto wspomnieć, że jeśli inni użytkownicy natkną się na to, to będziecie chcieli zawinąć to za pomocą polecenia try/catch PackageManager.NameNotFoundException (zwłaszcza w Android Studio, to nie będzie nawet kompilować bez jego zawijania). –