آموزش اضافه کردن برنامه یا گزینه به تنظیمات(بخش دوم)
در بخش اول آموزش به چگونگی قرار دادن یک برنامه در تنظیمات بعنوان یک گزینه پرداختیم
در این بخش قرار دادن گزینه در منو فرعی تنظیمات می پردازیم
در این آموزش ما در منوی فرعی 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 باشید
هر گونه کپی برداری از متن بدون ذکر منبع شرعا حرام و مورد پسند نویسنده نمی باشد
سلام
خییییییییییییییییییییییییییییییییییییییییییییییییییییییییییییییییییییییلی ممنووووووووووووووون
مطلب های بسیار جالبی انتخاب میکنی
یه سوال من ستینگ مارش مالو رو استخراج کردم (ستینگ هدر.xml)نداشت چرا ؟
ایا کار من مشکل داره یا اسمش عوض شده؟
با سلام
در تنظیمات جدید کمی اسم و جاها تغییر کرده همین الان به خود آموزش اضافه می کنم
بسیار عالی دستتون درد نکنه
سلام
من برنامه سوپر یوسر رو به تنظیمات اضافه کردم بعد ایکون هم براش گذاشتم .تا اینجا همه چیزدرست پیشرفت و تنظیمات رو دیکامپایل وساین کردم .
تنظیمات رو توی دستگاه قرار دادم اما وقتی تنظیمات رو باز می کنم و روی سوپر یوسر کلیک می کنم یه دفه از تنطیمات می پره بیرون و هیچ چیز اجرا نمیشه
من تو پیدا کردن android:targetClass مشکل دارم لطفا راهنمایی کنید چه جوری پیدا کنم چون گزینه های شبیه به هم زیاد هست
پیشنهاد
لطفا یه آموزش بزارید که بتونیم دیتای موبایل یا جی پی اس رو مثل روشن و خاموش کردن وای فای یا بلوتوث در صفحه اول تنظیمات بزاریم.
اموزش اضافه کردن عکس (ثابت یا متحرک )به قسمت درباره تلفن رو هم بزارید
ممنون از شما آقا محسن
سلام دوست عزیز
در تنظیمات گوشیها و برنامه ها کلا مختلف هستن بعد از مرور زمان و انجام کار خودتون با گشت و گذار خیلی راحتر می تونید این کار رو انجام بدید
فقط باید بگردید و تست کنید انگیزه رو هم که دارید
برای برنامه که فرمودید بهترین کار اینه که خودتون یک فایل ستینگ که این برنامه در اون قرار داره و چک کنید کمی متفاوتر هست بخاطر دادن دستری روت و باینریهاش این برنامه