Skip to content

Instantly share code, notes, and snippets.

@michelerenzullo
Last active March 10, 2021 21:41
Show Gist options
  • Save michelerenzullo/14223c1071d9b824f86a7047bd2033e6 to your computer and use it in GitHub Desktop.
Save michelerenzullo/14223c1071d9b824f86a7047bd2033e6 to your computer and use it in GitHub Desktop.
smali exportList function
.method public static exportList(Ljava/lang/String;Ljava/lang/String;)V
.registers 8
:try_start_0
new-instance v0, Ljava/io/File;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
sget-object v2, Ljava/io/File;->separator:Ljava/lang/String;
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v2, "Download/Effects"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/io/File;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/io/File;->exists()Z
move-result v1
if-nez v1, :cond_28
invoke-virtual {v0}, Ljava/io/File;->mkdir()Z
:cond_28
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string p0, " : "
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
new-instance v1, Ljava/io/File;
const-string v2, "effects.txt"
invoke-direct {v1, v0, v2}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
const/4 v0, 0x0
new-instance v2, Ljava/io/BufferedWriter;
new-instance v3, Ljava/io/FileWriter;
const/4 v4, 0x1
invoke-direct {v3, v1, v4}, Ljava/io/FileWriter;-><init>(Ljava/io/File;Z)V
invoke-direct {v2, v3}, Ljava/io/BufferedWriter;-><init>(Ljava/io/Writer;)V
new-instance v3, Ljava/io/BufferedReader;
new-instance v5, Ljava/io/FileReader;
invoke-direct {v5, v1}, Ljava/io/FileReader;-><init>(Ljava/io/File;)V
invoke-direct {v3, v5}, Ljava/io/BufferedReader;-><init>(Ljava/io/Reader;)V
const/16 v1, 0x2f
invoke-virtual {p1, v1}, Ljava/lang/String;->lastIndexOf(I)I
move-result v1
add-int/2addr v1, v4
const/16 v5, 0x3f
invoke-virtual {p1, v5}, Ljava/lang/String;->indexOf(I)I
move-result v5
invoke-virtual {p1, v1, v5}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object p1
:cond_6a
invoke-virtual {v3}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String;
move-result-object v1
if-eqz v1, :cond_77
invoke-virtual {v1, p1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
move-result v1
if-eqz v1, :cond_6a
const/4 v0, 0x1
:cond_77
invoke-virtual {v3}, Ljava/io/BufferedReader;->close()V
if-nez v0, :cond_85
invoke-virtual {v2, p0}, Ljava/io/BufferedWriter;->append(Ljava/lang/CharSequence;)Ljava/io/Writer;
invoke-virtual {v2}, Ljava/io/BufferedWriter;->newLine()V
invoke-virtual {v2}, Ljava/io/BufferedWriter;->newLine()V
:cond_85
invoke-virtual {v2}, Ljava/io/BufferedWriter;->close()V
:try_end_0
.catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0
:catch_0
return-void
.end method
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment