Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ========================== Backup Restore Data BBM ==========================
- ** ATTENTION **
- - Tutorial Ini HANYA untuk yang sudah menggunakan fitur Change Text Color (Cari di pastebin saya)
- =================================== STEP #1 ==================================
- - Download bahan https://goo.gl/PM6pBr dan copy 3 file smali ke dalam folder ../smali/delta/*
- - Copy Kode dibawah ke dalam saffa.smali ( di dalam # direct methods) di dalam bahan ada saffa.smali sbg BAHAN COMPARE
- - Ada 4 method - DeleteDirectory, GetDataAppFromSd, SavaDataAppToSd dan copyDirectory
- # DeleteDirectory
- .method public static DeleteDirectory(Ljava/io/File;)V
- .locals 3
- .param p0, "file" # Ljava/io/File;
- .prologue
- .line 422
- invoke-virtual {p0}, Ljava/io/File;->isDirectory()Z
- move-result v2
- if-eqz v2, :cond_0
- .line 423
- invoke-virtual {p0}, Ljava/io/File;->listFiles()[Ljava/io/File;
- move-result-object v0
- .line 424
- .local v0, "arrfile":[Ljava/io/File;
- const/4 v1, 0x0
- .local v1, "i":I
- :goto_0
- array-length v2, v0
- if-lt v1, v2, :cond_1
- .line 428
- .end local v0 # "arrfile":[Ljava/io/File;
- .end local v1 # "i":I
- :cond_0
- invoke-virtual {p0}, Ljava/io/File;->delete()Z
- .line 429
- return-void
- .line 425
- .restart local v0 # "arrfile":[Ljava/io/File;
- .restart local v1 # "i":I
- :cond_1
- aget-object v2, v0, v1
- invoke-static {v2}, Lcom/bbm/dhian/textColor/Saffa;->DeleteDirectory(Ljava/io/File;)V
- .line 424
- add-int/lit8 v1, v1, 0x1
- goto :goto_0
- .end method
- # GetDataAppFromSd
- .method public static GetDataAppFromSd(Landroid/content/Context;)V
- .locals 12
- .param p0, "context" # Landroid/content/Context;
- .prologue
- const/4 v11, 0x0
- .line 444
- invoke-static {}, Landroid/os/Environment;->getDataDirectory()Ljava/io/File;
- move-result-object v1
- .line 445
- .local v1, "file":Ljava/io/File;
- invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File;
- move-result-object v2
- .line 446
- .local v2, "file2":Ljava/io/File;
- new-instance v7, Ljava/lang/StringBuffer;
- invoke-direct {v7}, Ljava/lang/StringBuffer;-><init>()V
- .line 447
- .local v7, "stringBuffer":Ljava/lang/StringBuffer;
- new-instance v8, Ljava/lang/StringBuffer;
- invoke-direct {v8}, Ljava/lang/StringBuffer;-><init>()V
- .line 448
- .local v8, "stringBuffer2":Ljava/lang/StringBuffer;
- const-string v9, "data/"
- invoke-virtual {v8, v9}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
- move-result-object v9
- invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
- move-result-object v10
- invoke-virtual {v9, v10}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
- move-result-object v9
- invoke-virtual {v9}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
- move-result-object v9
- invoke-virtual {v7, v9}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
- move-result-object v9
- const-string v10, "/files"
- invoke-virtual {v9, v10}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
- move-result-object v9
- invoke-virtual {v9}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
- move-result-object v6
- .line 449
- .local v6, "string":Ljava/lang/String;
- new-instance v3, Ljava/io/File;
- const-string v9, "DELTA/.Chats"
- invoke-direct {v3, v2, v9}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
- .line 450
- .local v3, "file3":Ljava/io/File;
- invoke-virtual {v3}, Ljava/io/File;->exists()Z
- move-result v9
- if-eqz v9, :cond_0
- .line 451
- new-instance v4, Ljava/io/File;
- const-string v9, "DELTA/.Chats"
- invoke-direct {v4, v2, v9}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
- .line 452
- .local v4, "file4":Ljava/io/File;
- new-instance v5, Ljava/io/File;
- invoke-direct {v5, v1, v6}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
- .line 453
- .local v5, "file5":Ljava/io/File;
- new-instance v0, Lcom/bbm/delta/AsyncTask;
- invoke-direct {v0, p0, v11, v4, v5}, Lcom/bbm/delta/AsyncTask;-><init>(Landroid/content/Context;ZLjava/io/File;Ljava/io/File;)V
- .line 454
- .local v0, "asyncTask":Lcom/bbm/delta/AsyncTask;
- new-array v9, v11, [Ljava/io/File;
- invoke-virtual {v0, v9}, Lcom/bbm/delta/AsyncTask;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask;
- .line 458
- .end local v0 # "asyncTask":Lcom/bbm/delta/AsyncTask;
- .end local v4 # "file4":Ljava/io/File;
- .end local v5 # "file5":Ljava/io/File;
- :goto_0
- return-void
- .line 457
- :cond_0
- const-string v9, "NoBackup"
- invoke-static {v9, p0}, Lcom/bbm/dhian/textColor/Saffa;->getString(Ljava/lang/String;Landroid/content/Context;)Ljava/lang/String;
- move-result-object v9
- invoke-static {p0, v9, v11}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
- move-result-object v9
- invoke-virtual {v9}, Landroid/widget/Toast;->show()V
- goto :goto_0
- .end method
- # SavaDataAppToSd
- .method public static SavaDataAppToSd(Landroid/content/Context;)V
- .locals 15
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "(",
- "Landroid/content/Context;",
- ")V"
- }
- .end annotation
- .prologue
- .line 99
- move-object v0, p0
- invoke-static {}, Landroid/os/Environment;->getDataDirectory()Ljava/io/File;
- move-result-object v8
- move-object v1, v8
- .line 100
- invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File;
- move-result-object v8
- move-object v2, v8
- .line 101
- new-instance v8, Ljava/lang/StringBuffer;
- move-object v14, v8
- move-object v8, v14
- move-object v9, v14
- invoke-direct {v9}, Ljava/lang/StringBuffer;-><init>()V
- new-instance v9, Ljava/lang/StringBuffer;
- move-object v14, v9
- move-object v9, v14
- move-object v10, v14
- invoke-direct {v10}, Ljava/lang/StringBuffer;-><init>()V
- const-string v10, "data/"
- invoke-virtual {v9, v10}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
- move-result-object v9
- move-object v10, v0
- invoke-virtual {v10}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
- move-result-object v10
- invoke-virtual {v9, v10}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
- move-result-object v9
- invoke-virtual {v9}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
- move-result-object v9
- invoke-virtual {v8, v9}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
- move-result-object v8
- const-string v9, "/files"
- invoke-virtual {v8, v9}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
- move-result-object v8
- invoke-virtual {v8}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
- move-result-object v8
- move-object v3, v8
- .line 102
- const-string v8, "DELTA/.Chats"
- move-object v4, v8
- .line 103
- new-instance v8, Ljava/io/File;
- move-object v14, v8
- move-object v8, v14
- move-object v9, v14
- move-object v10, v1
- move-object v11, v3
- invoke-direct {v9, v10, v11}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
- move-object v5, v8
- .line 104
- new-instance v8, Ljava/io/File;
- move-object v14, v8
- move-object v8, v14
- move-object v9, v14
- move-object v10, v2
- move-object v11, v4
- invoke-direct {v9, v10, v11}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
- move-object v6, v8
- .line 105
- new-instance v8, Lcom/bbm/delta/AsyncTask;
- move-object v14, v8
- move-object v8, v14
- move-object v9, v14
- move-object v10, v0
- const/4 v11, 0x1
- move-object v12, v5
- move-object v13, v6
- invoke-direct {v9, v10, v11, v12, v13}, Lcom/bbm/delta/AsyncTask;-><init>(Landroid/content/Context;ZLjava/io/File;Ljava/io/File;)V
- const/4 v9, 0x0
- new-array v9, v9, [Ljava/io/File;
- invoke-virtual {v8, v9}, Lcom/bbm/delta/AsyncTask;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask;
- move-result-object v8
- return-void
- .end method
- # copyDirectory
- .method public static copyDirectory(Ljava/io/File;Ljava/io/File;)V
- .locals 16
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "(",
- "Ljava/io/File;",
- "Ljava/io/File;",
- ")V^",
- "Ljava/io/IOException;"
- }
- .end annotation
- .annotation system Ldalvik/annotation/Throws;
- value = {
- Ljava/io/IOException;
- }
- .end annotation
- .prologue
- .line 895
- move-object/from16 v0, p0
- move-object/from16 v1, p1
- invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File;
- move-result-object v9
- move-object v2, v9
- .line 896
- new-instance v9, Ljava/io/File;
- move-object v15, v9
- move-object v9, v15
- move-object v10, v15
- new-instance v11, Ljava/lang/StringBuffer;
- move-object v15, v11
- move-object v11, v15
- move-object v12, v15
- invoke-direct {v12}, Ljava/lang/StringBuffer;-><init>()V
- move-object v12, v2
- invoke-virtual {v11, v12}, Ljava/lang/StringBuffer;->append(Ljava/lang/Object;)Ljava/lang/StringBuffer;
- move-result-object v11
- const-string v12, "/DELTA"
- invoke-virtual {v11, v12}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
- move-result-object v11
- invoke-virtual {v11}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
- move-result-object v11
- invoke-direct {v10, v11}, Ljava/io/File;-><init>(Ljava/lang/String;)V
- move-object v3, v9
- .line 897
- move-object v9, v3
- invoke-virtual {v9}, Ljava/io/File;->mkdir()Z
- move-result v9
- .line 898
- move-object v9, v0
- invoke-virtual {v9}, Ljava/io/File;->isDirectory()Z
- move-result v9
- if-eqz v9, :cond_2
- .line 900
- move-object v9, v1
- invoke-virtual {v9}, Ljava/io/File;->exists()Z
- move-result v9
- if-nez v9, :cond_0
- .line 902
- move-object v9, v1
- invoke-virtual {v9}, Ljava/io/File;->mkdir()Z
- move-result v9
- .line 909
- :goto_0
- move-object v9, v0
- invoke-virtual {v9}, Ljava/io/File;->list()[Ljava/lang/String;
- move-result-object v9
- move-object v4, v9
- .line 910
- const/4 v9, 0x0
- move v5, v9
- .line 911
- :goto_1
- move v9, v5
- move-object v10, v4
- array-length v10, v10
- if-lt v9, v10, :cond_1
- .line 929
- :goto_2
- return-void
- .line 907
- :cond_0
- move-object v9, v1
- invoke-virtual {v9}, Ljava/io/File;->mkdir()Z
- move-result v9
- goto :goto_0
- .line 913
- :cond_1
- new-instance v9, Ljava/io/File;
- move-object v15, v9
- move-object v9, v15
- move-object v10, v15
- move-object v11, v0
- move-object v12, v4
- move v13, v5
- aget-object v12, v12, v13
- invoke-direct {v10, v11, v12}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
- new-instance v10, Ljava/io/File;
- move-object v15, v10
- move-object v10, v15
- move-object v11, v15
- move-object v12, v1
- move-object v13, v4
- move v14, v5
- aget-object v13, v13, v14
- invoke-direct {v11, v12, v13}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
- invoke-static {v9, v10}, Lcom/bbm/dhian/textColor/Saffa;->copyDirectory(Ljava/io/File;Ljava/io/File;)V
- .line 914
- add-int/lit8 v5, v5, 0x1
- goto :goto_1
- .line 919
- :cond_2
- new-instance v9, Ljava/io/FileInputStream;
- move-object v15, v9
- move-object v9, v15
- move-object v10, v15
- move-object v11, v0
- invoke-direct {v10, v11}, Ljava/io/FileInputStream;-><init>(Ljava/io/File;)V
- move-object v4, v9
- .line 920
- new-instance v9, Ljava/io/FileOutputStream;
- move-object v15, v9
- move-object v9, v15
- move-object v10, v15
- move-object v11, v1
- invoke-direct {v10, v11}, Ljava/io/FileOutputStream;-><init>(Ljava/io/File;)V
- move-object v5, v9
- .line 921
- const/16 v9, 0x400
- new-array v9, v9, [B
- move-object v6, v9
- .line 924
- :goto_3
- move-object v9, v4
- move-object v10, v6
- invoke-virtual {v9, v10}, Ljava/io/InputStream;->read([B)I
- move-result v9
- move v7, v9
- .line 925
- move v9, v7
- const/4 v10, 0x0
- if-gt v9, v10, :cond_3
- .line 927
- move-object v9, v4
- invoke-virtual {v9}, Ljava/io/InputStream;->close()V
- .line 928
- move-object v9, v5
- invoke-virtual {v9}, Ljava/io/OutputStream;->close()V
- .line 929
- goto :goto_2
- .line 933
- :cond_3
- move-object v9, v5
- move-object v10, v6
- const/4 v11, 0x0
- move v12, v7
- invoke-virtual {v9, v10, v11, v12}, Ljava/io/OutputStream;->write([BII)V
- goto :goto_3
- .end method
- =================================== STEP #2 ==================================
- - navisha.xml
- <PreferenceCategory android:title="Tools">
- <com.bbm.delta.CopyDataPref android:title="Backup Data" android:summary="Click here to backup chats" />
- <com.bbm.delta.RestoreDataPref android:title="Restore Data" android:summary="Click here to restore chats" />
- </PreferenceCategory>
- - strings.xml
- <string name="BackupTitle">Backup Chats</string>
- <string name="BackupMsg">Backing up chats... All data saved and hide to /sdcard/DELTA/.chats</string>
- <string name="RestoreTitle">Restore Chats</string>
- <string name="RestoreMsg">Restoring chats...</string>
- <string name="errorbackup">Error!</string>
- <string name="BackupDone">Backup finish! All data saved and hide to /sdcard/DELTA/.chats</string>
- <string name="NoBackup">"Can't find any backup in '/sdcard/DELTA'!"</string>
- ================================= BIG THANKS =================================
- - Atnfas_Hoak (@OsmDroid) - GBBM
Advertisement
Add Comment
Please, Sign In to add comment