رفتن به مطلب

آموزش استفاده از تگهای meta-data در اندروید استودیو


محمدرضا شاهپیری

ارسال‌های توصیه شده

با سلام خدمت دوستان عزیز.

میدونم شماهم خیلی کنجکاوین بدونین جریان meta-data توی اندروید چیه و چه کاربردی داره. چون زیاد به این مورد برخوردین به خصوص تو درون پرداخت  سرویسای پوشه و از این قبیل.

این جور تگها خیلی کاربردی هستن و شما میتونید کارهای خیلی جالبی با اون انجام بدین. مثلا توی وان سیگنال شما با تگ متادیتای زیر میتونید موقع کلیک روی نوتیفیکیشن مانع از باز شدن برنامه بشید که به صورت پیش فرض اینجوری هست که با کلیک روی نوت برنامه باز میشه.

<meta-data android:name="com.onesignal.NotificationOpened.DEFAULT" android:value="DISABLE" />

خب حالا باید چجوری از این قابلیت اندروید استفاده کنیم. اولا شما میتونید از این قابلیت هم توی کل برنامه و هم توی یه اکتیویتی خاص استفاده کنید.

  1. استفاده در کل برنامه:

    ابتدا به منیفست برید و در تگ application متا دیتای خودتون رو وارد کنید. به شکل زیر.

    <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".MainMenu" android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
      
      
      
            <meta-data android:name="my_api_key" android:value="mykey123" />
           <meta-data android:name="my_version_key" android:value="787123" />
      
      
        </application>

    حالا هرجای پروژه میتونید به شکل زیر مقادیر رو بگیرید.

 

try {
    ApplicationInfo ai = getPackageManager().getApplicationInfo(activity.getPackageName(), PackageManager.GET_META_DATA);
    Bundle bundle = ai.metaData;
    String myApiKey = bundle.getString("my_api_key");
    int myVersionKey = bundle.getInt("my_version_key");
} catch (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());			
}
  1. استفاده در اکتیویتی خاص.

ابتدا به اکتیویتی مورد نظر متا دیتا رو اضافه کنید.

  <activity android:name=".MyActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
            <meta-data android:name="my_api_key" android:value="mykey123"/>
        </activity>

حالا به شکل زیر اونو توی اکتیویتیتون بگیرید.

try {
        ActivityInfo ai = getPackageManager().getActivityInfo(this.getComponentName(), PackageManager.GET_META_DATA);
        Bundle bundle = ai.metaData;
        if (bundle != null) {
            String apiKey = bundle.getString("my_api_key");
            Log.d(this.getClass().getSimpleName(), "my_api_key = " + apiKey);
            }
        }
    } catch (PackageManager.NameNotFoundException e) {
        Log.e(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());
    }

امیدوارم به درد دوستان خورده باشه.

موفق باشید:give_rose::answercenter:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...