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



