AndroidFileManager.smali
.class public Lcom/krishna/fileloader/utility/AndroidFileManager;
.super Ljava/lang/Object;
.source "AndroidFileManager.java"
# direct methods
.method public constructor <init>()V
.registers 1
.line 24
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static deleteFile(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;I)V
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 152
invoke-static {p0, p1, p2, p3}, Lcom/krishna/fileloader/utility/AndroidFileManager;->getFileForRequest(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;I)Ljava/io/File;
move-result-object p0
.line 153
invoke-virtual {p0}, Ljava/io/File;->exists()Z
move-result p1
if-eqz p1, :cond_d
.line 154
invoke-virtual {p0}, Ljava/io/File;->delete()Z
:cond_d
return-void
.end method
.method public static getAppropriateDirectory(Landroid/content/Context;Ljava/lang/String;I)Ljava/io/File;
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
const/4 v0, 0x2
if-eq p2, v0, :cond_1d
const/4 v0, 0x3
if-eq p2, v0, :cond_18
const/4 v0, 0x4
if-eq p2, v0, :cond_13
.line 78
new-instance p2, Ljava/io/File;
invoke-virtual {p0}, Landroid/content/Context;->getFilesDir()Ljava/io/File;
move-result-object p0
invoke-direct {p2, p0, p1}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
goto :goto_26
.line 74
:cond_13
invoke-static {p1}, Lcom/krishna/fileloader/utility/AndroidFileManager;->getExternalPublicDirectory(Ljava/lang/String;)Ljava/io/File;
move-result-object p2
goto :goto_26
.line 71
:cond_18
invoke-static {p0, p1}, Lcom/krishna/fileloader/utility/AndroidFileManager;->getExternalPrivateDirectory(Landroid/content/Context;Ljava/lang/String;)Ljava/io/File;
move-result-object p2
goto :goto_26
.line 68
:cond_1d
new-instance p2, Ljava/io/File;
invoke-virtual {p0}, Landroid/content/Context;->getCacheDir()Ljava/io/File;
move-result-object p0
invoke-direct {p2, p0, p1}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
.line 81
:goto_26
invoke-virtual {p2}, Ljava/io/File;->exists()Z
move-result p0
if-nez p0, :cond_2f
.line 82
invoke-virtual {p2}, Ljava/io/File;->mkdirs()Z
:cond_2f
return-object p2
.end method
.method public static getBitmap(Ljava/io/File;)Landroid/graphics/Bitmap;
.registers 1
.line 148
invoke-virtual {p0}, Ljava/io/File;->getPath()Ljava/lang/String;
move-result-object p0
invoke-static {p0}, Landroid/graphics/BitmapFactory;->decodeFile(Ljava/lang/String;)Landroid/graphics/Bitmap;
move-result-object p0
return-object p0
.end method
.method private static getExternalPrivateDirectory(Landroid/content/Context;Ljava/lang/String;)Ljava/io/File;
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 104
invoke-static {}, Lcom/krishna/fileloader/utility/AndroidFileManager;->isExternalStorageWritable()Z
move-result v0
if-eqz v0, :cond_20
const/4 v0, 0x0
.line 105
invoke-virtual {p0, v0}, Landroid/content/Context;->getExternalFilesDir(Ljava/lang/String;)Ljava/io/File;
move-result-object v0
if-nez v0, :cond_16
.line 107
invoke-virtual {p0}, Landroid/content/Context;->getFilesDir()Ljava/io/File;
move-result-object p0
invoke-virtual {p0}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
move-result-object p0
goto :goto_1a
.line 109
:cond_16
invoke-virtual {v0}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
move-result-object p0
.line 114
:goto_1a
new-instance v0, Ljava/io/File;
invoke-direct {v0, p0, p1}, Ljava/io/File;-><init>(Ljava/lang/String;Ljava/lang/String;)V
return-object v0
.line 112
:cond_20
new-instance p0, Ljava/lang/Exception;
const-string p1, "External storage is not available for write operation"
invoke-direct {p0, p1}, Ljava/lang/Exception;-><init>(Ljava/lang/String;)V
throw p0
.end method
.method private static getExternalPublicDirectory(Ljava/lang/String;)Ljava/io/File;
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 89
invoke-static {}, Lcom/krishna/fileloader/utility/AndroidFileManager;->isExternalStorageWritable()Z
move-result v0
if-eqz v0, :cond_21
.line 90
invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File;
move-result-object v0
if-nez v0, :cond_1a
.line 92
new-instance v0, Ljava/io/File;
invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File;
move-result-object v1
invoke-virtual {v1}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1, p0}, Ljava/io/File;-><init>(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_20
.line 94
:cond_1a
new-instance v1, Ljava/io/File;
invoke-direct {v1, v0, p0}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
move-object v0, v1
:goto_20
return-object v0
.line 97
:cond_21
new-instance p0, Ljava/lang/Exception;
const-string v0, "External storage is not available for write operation"
invoke-direct {p0, v0}, Ljava/lang/Exception;-><init>(Ljava/lang/String;)V
throw p0
.end method
.method public static getFileForRequest(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;I)Ljava/io/File;
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 27
invoke-static {p1}, Lcom/krishna/fileloader/utility/AndroidFileManager;->getFileName(Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
.line 28
new-instance v0, Ljava/io/File;
invoke-static {p0, p2, p3}, Lcom/krishna/fileloader/utility/AndroidFileManager;->getAppropriateDirectory(Landroid/content/Context;Ljava/lang/String;I)Ljava/io/File;
move-result-object p0
invoke-direct {v0, p0, p1}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
return-object v0
.end method
.method public static getFileName(Ljava/lang/String;)Ljava/lang/String;
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 35
:try_start_0
new-instance v0, Ljava/net/URL;
invoke-direct {v0, p0}, Ljava/net/URL;-><init>(Ljava/lang/String;)V
.line 36
invoke-static {v0}, Lcom/krishna/fileloader/utility/AndroidFileManager;->getFileNameFromUrl(Ljava/net/URL;)Ljava/lang/String;
move-result-object v0
if-nez v0, :cond_14
.line 38
invoke-virtual {p0}, Ljava/lang/String;->hashCode()I
move-result v0
invoke-static {v0}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object p0
:try_end_13
.catch Ljava/net/MalformedURLException; {:try_start_0 .. :try_end_13} :catch_16
goto :goto_1e
:cond_14
move-object p0, v0
goto :goto_1e
:catch_16
const-string v0, "/"
.line 41
invoke-virtual {p0, v0}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
move-result v0
if-nez v0, :cond_1f
:goto_1e
return-object p0
.line 42
:cond_1f
new-instance p0, Ljava/lang/Exception;
const-string v0, "File name should not contain path separator \"/\""
invoke-direct {p0, v0}, Ljava/lang/Exception;-><init>(Ljava/lang/String;)V
throw p0
.end method
.method private static getFileNameFromUrl(Ljava/net/URL;)Ljava/lang/String;
.registers 2
.line 51
invoke-virtual {p0}, Ljava/net/URL;->getPath()Ljava/lang/String;
move-result-object p0
if-eqz p0, :cond_1b
const-string v0, "/"
.line 53
invoke-virtual {p0, v0}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object p0
.line 54
array-length v0, p0
if-lez v0, :cond_1b
.line 55
array-length v0, p0
add-int/lit8 v0, v0, -0x1
aget-object p0, p0, v0
.line 56
invoke-static {p0}, Lcom/krishna/fileloader/utility/Utils;->isValidFileName(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_1b
goto :goto_1c
:cond_1b
const/4 p0, 0x0
:goto_1c
return-object p0
.end method
.method private static isExternalStorageWritable()Z
.registers 2
.line 119
invoke-static {}, Landroid/os/Environment;->getExternalStorageState()Ljava/lang/String;
move-result-object v0
const-string v1, "mounted"
.line 120
invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
return v0
.end method
.method public static readFileAsString(Ljava/io/File;)Ljava/lang/String;
.registers 4
.line 131
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
.line 133
:try_start_5
invoke-virtual {p0}, Ljava/io/File;->exists()Z
move-result v1
if-eqz v1, :cond_28
.line 134
new-instance v1, Ljava/io/InputStreamReader;
new-instance v2, Ljava/io/FileInputStream;
invoke-direct {v2, p0}, Ljava/io/FileInputStream;-><init>(Ljava/io/File;)V
invoke-direct {v1, v2}, Ljava/io/InputStreamReader;-><init>(Ljava/io/InputStream;)V
.line 135
new-instance p0, Ljava/io/BufferedReader;
invoke-direct {p0, v1}, Ljava/io/BufferedReader;-><init>(Ljava/io/Reader;)V
.line 137
:goto_1a
invoke-virtual {p0}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String;
move-result-object v1
if-eqz v1, :cond_28
.line 138
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
:try_end_23
.catch Ljava/io/IOException; {:try_start_5 .. :try_end_23} :catch_24
goto :goto_1a
:catch_24
move-exception p0
.line 142
invoke-virtual {p0}, Ljava/io/IOException;->printStackTrace()V
.line 144
:cond_28
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
return-object p0
.end method
.method public static searchAndGetLocalFile(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;I)Ljava/io/File;
.registers 7
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 159
invoke-static {p2}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v0
if-nez v0, :cond_36
.line 160
invoke-static {p0, p2, p3}, Lcom/krishna/fileloader/utility/AndroidFileManager;->getAppropriateDirectory(Landroid/content/Context;Ljava/lang/String;I)Ljava/io/File;
move-result-object p0
if-eqz p0, :cond_36
.line 161
invoke-virtual {p0}, Ljava/io/File;->exists()Z
move-result p2
if-eqz p2, :cond_36
.line 162
invoke-virtual {p0}, Ljava/io/File;->listFiles()[Ljava/io/File;
move-result-object p0
if-eqz p0, :cond_36
.line 164
array-length p2, p0
const/4 p3, 0x0
:goto_1a
if-ge p3, p2, :cond_36
aget-object v0, p0, p3
.line 165
invoke-virtual {v0}, Ljava/io/File;->isDirectory()Z
move-result v1
if-nez v1, :cond_33
invoke-virtual {v0}, Ljava/io/File;->getName()Ljava/lang/String;
move-result-object v1
invoke-static {p1}, Lcom/krishna/fileloader/utility/AndroidFileManager;->getFileName(Ljava/lang/String;)Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_33
goto :goto_37
:cond_33
add-int/lit8 p3, p3, 0x1
goto :goto_1a
:cond_36
const/4 v0, 0x0
:goto_37
return-object v0
.end method
# virtual methods
.method public isExternalStorageReadable()Z
.registers 3
.line 125
invoke-static {}, Landroid/os/Environment;->getExternalStorageState()Ljava/lang/String;
move-result-object v0
const-string v1, "mounted"
.line 126
invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_17
const-string v1, "mounted_ro"
.line 127
invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_15
goto :goto_17
:cond_15
const/4 v0, 0x0
goto :goto_18
:cond_17
:goto_17
const/4 v0, 0x1
:goto_18
return v0
.end method