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

استاندارد

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

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

در این آموزش ما در منوی فرعی  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 باید مانند زیر باشد

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

اکنون به 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 ما مانند زیر می باشد

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

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

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

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

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

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

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

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

کار تمام شد

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

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

در فایل 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" />

موفق باشید

همچنین اگر موقع کامپایل با اشکال مواجه شدید

در مسیر 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

موفق باشید

در اندروید 5 بجای settings_headers.xml دنبال فایل dashboard_categories.xml باشید

هر گونه کپی برداری از متن بدون ذکر منبع شرعا حرام و مورد پسند نویسنده نمی باشد

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

استاندارد

در خیلی از رامها می بینید که در تنظیمات گوشی یک گزینه یا یک برنامه بصورت منو اضافه شده است

با ما باشید تا چگونگی این کار را به شما آموزش دهیم

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

یک برنامه برای کامپایل و دیکامپایل

برنامه Notepad++

اضافه کردن گزینه یا برنامه در منوی اصلی

برای اضافه کردن برنامه به تنظیمات شما به منابع آن برنامه نیاز دارید

این منابع را در دیکامپایل برنامه در فایل AndroidManifest.xml می توان پیدا کرد

برای اضافه کردن به منابع زیر نیاز داریم

android:targetPackage: نام اصلی برنامه

android:action: مرتبط با یکبار کلیک کردن روی برنامه برای اجرای آن

android:targetClass : عملگری که هنگام کلیک بر برنامه برنامه را اجرا می کند

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

android:icon : این هم آیکون برنامه هست

در بعضی برنامه ها  android:targetClass در مسیر AndroidManifest نمی باشد،باید آن را خودتان جستجو کنید

خوب بریم سراغ آموزش

ما برنامه Rom Toolbox را بعنوان نمونه در نظر می گیریم

1- اول از همه نیاز به دیکامپایل Rom Toolbox داریم،برای پیدا کردن منابعمون در AndroidManifest.xml

همان طور که در تصویر بالا می بینید،دو منبع  android:targetPackage و android:targetClass را علامت زدم

پیدا کردن انها آسان است اگر نتوانستید آنها را پیدا کنید در جستجو دنبال خطهای با شروع <activity باشید

گاهی android:targetClass را فقط در یک عبارت پیدا می کنید

بعنوان نمونه برنامه Serajr’s SystemUI Preference را SystemUIPreferencesActivity پیدا می کنید

در این حالت باید android:targetPackage را قبل از targetClass اضافه کنیم

برای مثال بالای ما میشه android:targetPackage=”com.serajr.systemui.prefere nces به android:targetClass=”com.serajr.systemui.preferences.SystemUIPreferencesActivity پس

برای Rom Toolbox میشه

android:targetPackage="com.jrummy.liberty.toolbox"
android:targetClass="com.jrummy.apps.rom.toolbox.RomToolboxActivity"
android:action="android.intent.action.MAIN"

android:action همیشه نیاز نیست اضافه شود

می توان به جایش از android.intent.action.MAIN استفاده کرد

2- اکنون Settings.xml را دیکامپایل کنید

به مسیر res\xml بروید و فایل settings_header.xml را با notepad++ باز کنید

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

اگر می خواهیم یک هدر بسازیم به نام advanced settings نیاز به ساخت android:title و android:icon برای برنامه داریم

کد زیر settings_header ما می شود

</header>
    <header android:title="@string/header_category_advanced" />
    <header android:icon="@drawable/ic_settings_rom" android:title="@string/rom_toolbox">
        <intent android:targetPackage="com.jrummy.liberty.toolbox" android:action="android.intent.action.MAIN" android:targetClass="com.jrummy.apps.rom.toolbox.RomToolboxActivity" />

در هدر اولی برای advanced settings نیاز به ساخت ورودی نام برنامه در strings.xml داریم

در هدر دومی نیز نام و آیکون برنامه قرار دارند،درست مانند اسمی که در strings.xml وجود دارد

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

در آخر settings_header ما به شکل زیر در می آید

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

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

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

یکی برای advanced settings و دیگر برای خود برنامه

نام هر دو رشته header_category_advanced و rom_toolbox می شود

پس ورودی strings.xml ما به شکل زیر می شود

<string name="header_category_advanced">ADVANCED SETTINGS</string>
    <string name="rom_toolbox">ROM Toolbox</string>

شما می توانید هر نامی را انتخاب کنید تا در تنظیمات نمایان شود

پس strings.xml مانند تصویر زیر می شود

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

4- اکنون نیاز به قرار دادن یک png برای برنامه در پوشه drawable داریم با نام ic_settings_rom که درheader of android:icon داده می شود

بسته به دستگاهتان نام پوشه شما drawable hdpi  یا drawable mdpi می شود

برای ما hdpi می باشد

برای شروع اول نیاز به رزولوشن png که با نام ic_settings شروع می شود نیاز داریم

برای drawable hdpi می شود 48×48 و برای drawable mdpi می شود 32×32 پس ما نیاز داریم که اندازه png را به همان اندازه درست کنیم

برای ما اندازه را 48×48 کردیم و در پوشه drawable-hdpi قرار دادیم

5- در آخر نیاز به کامپایل فایل خود دارید

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

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

هر گونه کپی برداری از متن بدون ذکر منبع شرعا حرام و مورد پسند نویسنده نمی باشد