آموزش های (android application package (apk سیستمی و غیر سیستمی

آموزش اضافه کردن برنامه یا گزینه به تنظیمات(بخش دوم)

[vc_row][vc_column][vc_column_text]در بخش اول آموزش به چگونگی قرار دادن یک برنامه در تنظیمات بعنوان یک گزینه پرداختیم

در این بخش قرار دادن گزینه در منو فرعی تنظیمات می پردازیم

[/vc_column_text][vc_btn title=”آموزش اضافه کردن برنامه یا گزینه به تنظیمات(بخش اول)” style=”gradient” link=”url:http%3A%2F%2Fwww.gsm-developers.com%2Fhow-to-add-any-appoption-in-settings-apk%2F||target:%20_blank|rel:nofollow”][vc_column_text]

در این آموزش ما در منوی فرعی  display settings برنامه On-screen-buttons را اضافه می کنیم

در اینجا ما به یک منبع اضافی نیاز داریم به نام android:key که کلید اصلی هر برنامه ای است

اگر android:key اصلی را نیافتید،مقدار android:key را در مرجع ids.xml می دهیم

برای شروع اول برنامه  On screen button را دیکامپایل کنید

دنبال منابع میریم در AndroidManifest.xml

همان طور که می بینید ما android:targetPackage=”cn.kyle.gn.NavBar را به آسانی پیدا کردیم

تنها یک خط با <activity شروع می شود پس پیدا کردن android:targetClass=”cn.kyle.gn.NavBar.GnNavBarAct ivity”. android:action=”com.android.intent.MAIN”به آسانی است

اکنون نیز به android:title داریم که می تواند هر چیزی باشد که در strings.xml می باشد

android:key می تواند هر چیزی باشد که در ids.xml مراجعش می دهیم

چیز دیگری که بعنوان ورودی نیاز داریم android:summary می باشد، که زیر هدر برنامه می باشد

نمونه ما به شکل زیر در می آید

android:title="navienable_title"
android:key="on_screen"
android:summary="on_screen_summary"

وقتی تمام منابع و مقدار انها را درست کردید اکنون ورودی را در res\xml in display_settings.xml وارد می کنیم

<PreferenceScreen android:title="@string/navienable_title" android:key="on_screen" android:summary="@string/on_screen_summary">
        <intent android:targetPackage="cn.kyle.gn.NavBar" android:action="android.intent.action.MAIN" android:targetClass="cn.kyle.gn.NavBar.GnNavBarActivity" />
    </PreferenceScreen>

در آخر display_settings باید مانند زیر باشد

فایل را ذخیره کنید

[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]

اکنون به res/values بروید و فایل strings.xml را باز کنید

در اینجا نیاز به وارد کردن دو ورودی داریم

یکی برای android:title=”@string/navienable_title”

و دیگری برای android:summary=”@string/on_screen_summary

مانند زیر دو ورودی را درست می کنیم

<string name="navienable_title">On-Screen-Buttons</string>
    <string name="on_screen_summary">Enable/Disable On-Screen-Buttons</string>

به جایی On-Screen-Buttons شما نام برنامه یا هر چیزی که می خواهید را وارد کنید

فایل strings.xml ما مانند زیر می باشد

فایل خود را ذخیره کنید

[/vc_column_text][vc_column_text]

اکنون به مسیر res\values\ids.xml بروید و فایل را باز کنید

اینجا نیاز داریم تا یک ورودی در display_settings بعنوان android:key ایجاد کنیم

ورودی ما به شکل زیر می باشد

<item type="id" name="on_screen">false</item>

پس ids.xml ما به شکل زیر در می آید

فایل خود را ذخیره و کامپایل کنید

نمونه کار ما در آموزش نیز در عکس زیر می باشد

کار تمام شد

[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]برای کاملتر شدن آموزش نکته زیر را نیز اضافه کنم

اگر بخواهید که برنامه ای که در تنظیمات قرار می دهید مخفی شود و در لانچر نمایان نشود

در فایل Androidmanifest.xml قسمت زیر را در نظر بگیرید

<activity android:label="@string/app_name" android:name=".GalleryActivity" android:taskAffinity="android.task.pictures" android:configChanges="keyboardHidden|orientation|screenSize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.MULTIWINDOW_LAUNCHER" />

و خط زیر را پاک کنید

<category android:name="android.intent.category.LAUNCHER" />

گاهی ممکن در برخی برنامه ها کد بالا همیشه جواب ندهد

از روش زیر استفاده کنید

<activity android:label="@string/app_name" android:name=".GalleryActivity" android:taskAffinity="android.task.pictures" android:configChanges="keyboardHidden|orientation|screenSize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.MULTIWINDOW_LAUNCHER" />

کد بالا را به شکل زیر دربیارید

<intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.MULTIWINDOW_LAUNCHER" />

موفق باشید[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]همچنین اگر موقع کامپایل با اشکال مواجه شدید

در مسیر smali/com/android/settings یک فایل به نام Maddy.smali درست کنید و کدهای زیر را در آن قرار دهید

.class public Lcom/android/settings/Maddy;
.super Lcom/android/settings/SettingsPreferenceFragment;
.source "Maddy.java"

# direct methods
.method public constructor <init>()V
    .locals 0

    .prologue
    .line 17
    invoke-direct {p0}, Lcom/android/settings/SettingsPreferenceFragment;-><init>()V

    return-void
.end method

# virtual methods
.method public onCreate(Landroid/os/Bundle;)V
    .locals 1
    .param p1, "savedInstanceState"    # Landroid/os/Bundle;

    .prologue
    .line 21
    invoke-super {p0, p1}, Lcom/android/settings/SettingsPreferenceFragment;->onCreate(Landroid/os/Bundle;)V

    .line 23
    const v0, 0x7f050054

    invoke-virtual {p0, v0}, Lcom/android/settings/Maddy;->addPreferencesFromResource(I)V

    .line 24
    return-void
.end method

موفق باشید[/vc_column_text][vc_column_text]در اندروید 5 بجای settings_headers.xml دنبال فایل dashboard_categories.xml باشید

[/vc_column_text][vc_btn title=”لینک آموزش در انجمن برای بحث و تبادل نظر” color=”green” link=”url:http%3A%2F%2Fforum.gsm-developers.com%2Ftopic%2F11756-%25D8%25A2%25D9%2585%25D9%2588%25D8%25B2%25D8%25B4-%25D8%25A7%25D8%25B6%25D8%25A7%25D9%2581%25D9%2587-%25DA%25A9%25D8%25B1%25D8%25AF%25D9%2586-%25D8%25A8%25D8%25B1%25D9%2586%25D8%25A7%25D9%2585%25D9%2587-%25DB%258C%25D8%25A7-%25DA%25AF%25D8%25B2%25DB%258C%25D9%2586%25D9%2587-%25D8%25A8%25D9%2587-%25D8%25AA%25D9%2586%25D8%25B8%25DB%258C%25D9%2585%25D8%25A7%25D8%25AA%25D8%25A8%25D8%25AE%25D8%25B4-%25D8%25AF%25D9%2588%25D9%2585%2F||target:%20_blank|rel:nofollow”][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]هر گونه کپی برداری از متن بدون ذکر منبع شرعا حرام و مورد پسند نویسنده نمی باشد[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][/vc_column][/vc_row]

mohsen

محسن هستم 30 ساله طرفدار دنیایی متنوع اندروید و کاستوم رامها در Gsm-Developers
دکمه بازگشت به بالا