Skip to content

Nurettin Abacı Blog

Drugs for programming
  • Hakkımda

Nurettin Abacı Blog

Drugs for programming
  • Hakkımda

Android Metadata

  • by Nurettin Abacı
  • 27/10/201903/11/2019

Metadata temel olarak, Android üzeride, tüm proje düzeyinde erişilebilecek verileri depolamak için ekstra bir seçenektir.

  • Manifest dosyası içerisine tanımlanır.
  • String, boolean, float ve int) olmak üzere 4 farklı veri tipi kaydedilebilir. (Int türü normal integer veya renk değeri alabilir.)

Aşağıda örnek string değeri metadata içerisinde değer ataması gösterilmiştir.

<manifest>
    <application 
        android:icon="@drawable/icon" 
        android:label="@string/app_name">

        <meta-data android:name="my_metadata" android:value="testValue" />

        <activity 
            android:name=".MainActivity" 
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
<manifest>

Yukarıdaki metadata verisini ise Activity içerisinde ise aşağıdaki kod yardımıyla okunur:

ApplicationInfo appInfo = getPackageManager().getApplicationInfo(getPackageName(), 
		PackageManager.GET_META_DATA);
Bundle bundle = appInfo.metaData;
String myApiKey = bundle.getString("my_metadata");
  • Özelikle API ve library yazarken oldukça kullanışlıdır.

Mesela bir API yazdınız, bunu kullanan geliştirici ise key tanımlamak zorunda ki böylece sizin yazdığınız API’yı kullanabilsin. İşte burada kullanıcının girdiği keyi API’ya metadata yoluyla alınır ve API artık çalışır hale gelir, eğer kullanıcı keyi girmediyse hata bastırır keyi girmesini istersiniz. Aşağıda örnek kodu inceleyebilirsiniz.

try {
    ApplicationInfo appInfo = 
	getPackageManager()
.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
    Bundle bundle = appInfo.metaData;
    String myApiKey = bundle.getString("my_metadata");
} catch (Exception e) {
    Log.e(TAG, "Hey! Don't forget to configure <meta-data android:name=\"my_metadata\" android:value=\"testValue\"/> in your AndroidManifest.xml file.");
}

Android metadata örneğini uygulamanıza admob reklamarı eklerken görebilirsiniz.

<meta-data 
	android:name="com.google.android.gms.ads.APPLICATION_ID" 
	ndroid:value="@integer/your_admob_key" />

Buradaki kod, APPLICATION_ID’yi aşağısında verilen @integer/your_admob_key değeriyle birlikte sisteme yükleyecek ve Google Admob servisi de metadata’yı okuyacak, ardından buradaki değeri kullanarak uygulamanıza özel reklam banner’ı çalışacak.

Diğer bir örnek olarak manifest dosyası içerisindeki <activity> tagı içerisinde kullanımı verebiliriz. Böylece sistem, bu meta veriyi kullanarak o activity’i düzgünce açabilir.

<activity android:name=".SearchableActivity" >
	<intent-filter>
		<action android:name="android.intent.action.SEARCH" />
	</intent-filter>
	<meta-data android:name="android.app.searchable"
			   android:resource="@xml/searchable"/>
</activity>

Ardından activity tag’ından meta veriyi çekmek için aşağıdaki kodu kullanabilirsiniz.

try {
        ActivityInfo appInfo= getPackageManager()
.getActivityInfo(this.getComponentName(), PackageManager.GET_META_DATA);
        Bundle bundle = appInfo.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());
    }

Son olarak, meta veriyi içinde barındırabilen tag türleri şunlardır:

  • activity
  • activity-alias
  • application
  • provider
  • receiver
  • service
Tags:android metadatametadata

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Arama yapın …

Categories

  • Android
  • Computer Vision
  • Derin Öğrenme
  • git
  • Görüntü İşleme
  • Python
  • RaspberryPi
  • SQL Server

sqlekibi.com/sql-server/sql-ogrenmenin-tam-zamani.html/

SQL Öğrenmenin Tam Zamanı

Arşiv

  • January 2021
  • November 2020
  • October 2020
  • August 2020
  • April 2020
  • March 2020
  • November 2019
  • October 2019
  • September 2019
  • May 2019
  • April 2019
  • March 2019
  • January 2019
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018

Neve | WordPress

ile güçlendirilmiştir