آموزش ساخت پروفایل شخصی در About Phone
در این آموزش چگونگی ساخت یک پروفایل شخصی در تنظیمات تلفن را آماده کردیم
منظور از پروفایل شخصی اینه که خودتان در خود تنظیمات عکس و نام خود را هر وقت خواستید تغییر بدهید
اول از همه فایل زیر را دانلود کنید
UPDATED_OWNER_PROFILE_RESOURCES
فایلهای زیر را از زیپ جدا کرده
res/layout/profile_info.xml res/drawable/done.xml res/drawable/pick_profile_picture.xml res/drawable-ldpi/done_normal.png res/drawable-ldpi/done_pressed.png res/drawable-ldpi/ic_qs_default_user.png res/drawable-ldpi/ic_settings_owner.png res/drawable-ldpi/pick_profile_normal.png res/drawable-ldpi/pick_profile_pressed.png res/layout/nightwalkerisawesome.xml res/layout/profile_info.xml
فایل ستینگ خود را دیکامپایل کنید و فایلهای بالا را در پوشهres قرار بدهید
اکنون فایلهای زیر را نیز جدا کرده و در پوشه smali کپی کنید
smali/com/b16h22/Profile.smali smali/com/b16h22/Profile$1.smali smali/com/b16h22/Profile$2.smali smali.com/b16h22/about/ProfilePicture.smali smali/com/b16h22/about/ProfilePicture$1.smali smali/com/b16h22/about/ProfilePicture$2.smali smali/com/b16h22/about/ProfileName.smali smali/com/b16h22/about/ProfileName$1.smali
فایل ids.xml را باز کنید و کدهای زیر را در آن قرار بدهید
<item type="id" name="image">false</item> <item type="id" name="owner">false</item> <item type="id" name="linear_layout">false</item> <item type="id" name="profile_pic">false</item> <item type="id" name="layout1">false</item> <item type="id" name="change_picture_text">false</item> <item type="id" name="photo_picker">false</item> <item type="id" name="linear_layout1">false</item> <item type="id" name="layout2">false</item> <item type="id" name="name_field">false</item> <item type="id" name="name_edit">false</item> <item type="id" name="profile">false</item> <item type="id" name="profile_name">false</item>
فایل strings.xml را باز و کدهای زیر را قرار دهید
<string name="change_pic">Change profile picture</string> <string name="profile_pic">SET PROFILE PICTURE</string> <string name="profile_name">CHANGE PROFILE NAME</string>
اکنون فایل ستینگ خود را ریکامپایل و دوباره کامپایل کنید
فایل public.xml را باز کنید
کدهای زیر را پیدا کرده و مانند زیر تغییر دهید
<public type="layout" name="profile_info" id="0x7f03005a" /> <public type="drawable" name="ic_qs_default_user" id="0x7f0200b2" /> <public type="id" name="image" id="0x7f0b011b" /> <public type="id" name="owner" id="0x7f0b011c" /> <public type="id" name="photo_picker" id="0x7f0b0121" /> <public type="id" name="name_field" id="0x7f0b0124" /> <public type="id" name="name_edit" id="0x7f0b0125" /> <public type="id" name="profile" id="0x7f09003a" /> <public type="id" name="profile_name" id="0x7f09003b" /> <public type="drawable" name="ic_qs_default_user" id="0x7f02012e" />
فایل smali/com/b16h22/Profile.smali را باز کنید
کد زیر را پیدا
.method protected onCreate(Landroid/os/Bundle;)V
و کدهای که در public.xml وارد کردید را زیرش اضافه کنید
.method protected onCreate(Landroid/os/Bundle;)V .locals 4 .parameter "savedInstanceState" .prologue .line 27 invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V .line 28 const v2, 0x7f03005a # profile_info invoke-virtual {p0, v2}, Lcom/b16h22/Profile;->setContentView(I)V .line 30 const v2, 0x7f0b0121 #photo_picker invoke-virtual {p0, v2}, Lcom/b16h22/Profile;->findViewById(I)Landroid/view/View; move-result-object v0 check-cast v0, Landroid/widget/ImageView; .line 31 .local v0, photo:Landroid/widget/ImageView; const v2, 0x7f0b011c # owner invoke-virtual {p0, v2}, Lcom/b16h22/Profile;->findViewById(I)Landroid/view/View; move-result-object v2 check-cast v2, Landroid/widget/TextView; iput-object v2, p0, Lcom/b16h22/Profile;->owner:Landroid/widget/TextView; .line 32 const v2, 0x7f0b0124 # name_field invoke-virtual {p0, v2}, Lcom/b16h22/Profile;->findViewById(I)Landroid/view/View; move-result-object v2 check-cast v2, Landroid/widget/EditText; iput-object v2, p0, Lcom/b16h22/Profile;->name:Landroid/widget/EditText; .line 33 const v2, 0x7f0b0125 # name_edit invoke-virtual {p0, v2}, Lcom/b16h22/Profile;->findViewById(I)Landroid/view/View; move-result-object v2 check-cast v2, Landroid/widget/ImageView; iput-object v2, p0, Lcom/b16h22/Profile;->done:Landroid/widget/ImageView; .line 34 const v2, 0x7f0b011b # image invoke-virtual {p0, v2}, Lcom/b16h22/Profile;->findViewById(I)Landroid/view/View; move-result-object v2 check-cast v2, Landroid/widget/ImageView; iput-object v2, p0, Lcom/b16h22/Profile;->imageView:Landroid/widget/ImageView; .line 37 const-string v2, "EvoPrefsFile" const/4 v3, 0x0 invoke-virtual {p0, v2, v3}, Lcom/b16h22/Profile;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences; move-result-object v1 .line 38 .local v1, sharedPreferences:Landroid/content/SharedPreferences; const-string v2, "profileName" const-string v3, "null" invoke-interface {v1, v2, v3}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; move-result-object v2 iput-object v2, p0, Lcom/b16h22/Profile;->profName:Ljava/lang/String; .line 39 iget-object v2, p0, Lcom/b16h22/Profile;->profName:Ljava/lang/String; const-string v3, "null" if-ne v2, v3, :cond_0 .line 40 iget-object v2, p0, Lcom/b16h22/Profile;->owner:Landroid/widget/TextView; const-string v3, "Owner" invoke-virtual {v2, v3}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V .line 46 :goto_0 const-string v2, "profilePic" const-string v3, "null" invoke-interface {v1, v2, v3}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; move-result-object v2 iput-object v2, p0, Lcom/b16h22/Profile;->imageUri:Ljava/lang/String; .line 47 iget-object v2, p0, Lcom/b16h22/Profile;->imageUri:Ljava/lang/String; const-string v3, "null" if-ne v2, v3, :cond_1 .line 48 iget-object v2, p0, Lcom/b16h22/Profile;->imageView:Landroid/widget/ImageView; const v3, 0x7f0200b2 #ic_qs_default_user invoke-virtual {v2, v3}, Landroid/widget/ImageView;->setImageResource(I)V .line 53 :goto_1 new-instance v2, Lcom/b16h22/Profile$1; invoke-direct {v2, p0}, Lcom/b16h22/Profile$1;-><init>(Lcom/b16h22/Profile;)V invoke-virtual {v0, v2}, Landroid/widget/ImageView;->setOnClickListener(Landroid/view/View$OnClickListener;)V .line 64 iget-object v2, p0, Lcom/b16h22/Profile;->done:Landroid/widget/ImageView; new-instance v3, Lcom/b16h22/Profile$2; invoke-direct {v3, p0}, Lcom/b16h22/Profile$2;-><init>(Lcom/b16h22/Profile;)V invoke-virtual {v2, v3}, Landroid/widget/ImageView;->setOnClickListener(Landroid/view/View$OnClickListener;)V .line 80 return-void .line 42 :cond_0 iget-object v2, p0, Lcom/b16h22/Profile;->owner:Landroid/widget/TextView; iget-object v3, p0, Lcom/b16h22/Profile;->profName:Ljava/lang/String; invoke-virtual {v2, v3}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V .line 43 iget-object v2, p0, Lcom/b16h22/Profile;->name:Landroid/widget/EditText; iget-object v3, p0, Lcom/b16h22/Profile;->profName:Ljava/lang/String; invoke-virtual {v2, v3}, Landroid/widget/EditText;->setText(Ljava/lang/CharSequence;)V goto :goto_0 .line 50 :cond_1 iget-object v2, p0, Lcom/b16h22/Profile;->imageView:Landroid/widget/ImageView; iget-object v3, p0, Lcom/b16h22/Profile;->imageUri:Ljava/lang/String; invoke-static {v3}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri; move-result-object v3 invoke-virtual {v2, v3}, Landroid/widget/ImageView;->setImageURI(Landroid/net/Uri;)V goto :goto_1 .end method
فایل smali/com/b16h22/statusbar/ProfilePicture.smali را باز کنید
کد زیر را پیدا کنید
.line 21 const v4, 0x7f09003a
با ایدی پروفایل خود جایگزین کنید
کد زیر را پیدا کنید
const v5, 0x7f02012e
با ایدی ic_qs_default_user جایگزینش کنید
فایل smali/com/b16h22/statusbar/ProfilePicture$1.smali را باز کنید
کد زیر را پیدا کنید
.line 19 const v2, 0x7f09003b
با ایدی profile_name جایگزینش کنید
اکنون settings_header.xml یا dashboard_categories.xml را باز کنید
کد زیر را اضافه کنید
<header android:icon="@drawable/ic_owner_settings" android:title="Owner Profile"> <intent android:targetPackage="com.android.settings" android:action="android.intent.action.MAIN" android:targetClass="com.b16h22.Profile" /> </header>
کد زیر را نیز در device_info_settings.xml اضافه کنید
<PreferenceCategory android:title=" INFO " /> <Preference android:focusable="false" android:clickable="true" android:fragment=Add your App Package android:layout="@layout/nightwalkerisawesome" />
فعالیت زیر را نیر در androidmanifest.xml وارد کنید
<activity android:label="@string/change_pic" android:name="com.b16h22.Profile"> <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity>
کار تمام شد موفق باشید
هر گونه کپی برداری از متن بدون ذکر منبع شرعا حرام و مورد پسند نویسنده نمی باشد