آموزش ساخت پروفایل شخصی در 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>
کار تمام شد موفق باشید
هر گونه کپی برداری از متن بدون ذکر منبع شرعا حرام و مورد پسند نویسنده نمی باشد




