.class public Lcom/luck/picture/lib/widget/longimage/SkiaImageDecoder; .super Ljava/lang/Object; .source "SkiaImageDecoder.java" # interfaces .implements Lcom/luck/picture/lib/widget/longimage/ImageDecoder; # static fields .field private static final ASSET_PREFIX:Ljava/lang/String; = "file:///android_asset/" .field private static final FILE_PREFIX:Ljava/lang/String; = "file://" .field private static final RESOURCE_PREFIX:Ljava/lang/String; = "android.resource://" # direct methods .method public constructor ()V .registers 1 .line 21 invoke-direct {p0}, Ljava/lang/Object;->()V return-void .end method # virtual methods .method public decode(Landroid/content/Context;Landroid/net/Uri;)Landroid/graphics/Bitmap; .registers 11 .annotation system Ldalvik/annotation/Throws; value = { Ljava/lang/Exception; } .end annotation .line 29 invoke-virtual {p2}, Landroid/net/Uri;->toString()Ljava/lang/String; move-result-object v0 .line 30 new-instance v1, Landroid/graphics/BitmapFactory$Options; invoke-direct {v1}, Landroid/graphics/BitmapFactory$Options;->()V .line 32 sget-object v2, Landroid/graphics/Bitmap$Config;->RGB_565:Landroid/graphics/Bitmap$Config; iput-object v2, v1, Landroid/graphics/BitmapFactory$Options;->inPreferredConfig:Landroid/graphics/Bitmap$Config; .line 33 const-string v2, "android.resource://" invoke-virtual {v0, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result v2 if-eqz v2, :cond_77 .line 35 invoke-virtual {p2}, Landroid/net/Uri;->getAuthority()Ljava/lang/String; move-result-object v0 .line 36 invoke-virtual {p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; move-result-object v2 invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v2 if-eqz v2, :cond_28 .line 37 invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; move-result-object v2 goto :goto_30 .line 39 :cond_28 invoke-virtual {p1}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager; move-result-object v2 .line 40 invoke-virtual {v2, v0}, Landroid/content/pm/PackageManager;->getResourcesForApplication(Ljava/lang/String;)Landroid/content/res/Resources; move-result-object v2 .line 44 :goto_30 invoke-virtual {p2}, Landroid/net/Uri;->getPathSegments()Ljava/util/List; move-result-object p2 .line 45 invoke-interface {p2}, Ljava/util/List;->size()I move-result v3 const/4 v4, 0x2 const/4 v5, 0x1 const/4 v6, 0x0 if-ne v3, v4, :cond_56 .line 46 invoke-interface {p2, v6}, Ljava/util/List;->get(I)Ljava/lang/Object; move-result-object v4 check-cast v4, Ljava/lang/String; const-string v7, "drawable" invoke-virtual {v4, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v4 if-eqz v4, :cond_56 .line 47 invoke-interface {p2, v5}, Ljava/util/List;->get(I)Ljava/lang/Object; move-result-object p2 check-cast p2, Ljava/lang/String; .line 48 invoke-virtual {v2, p2, v7, v0}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I move-result v6 goto :goto_6e :cond_56 if-ne v3, v5, :cond_6e .line 49 invoke-interface {p2, v6}, Ljava/util/List;->get(I)Ljava/lang/Object; move-result-object v0 check-cast v0, Ljava/lang/CharSequence; invoke-static {v0}, Landroid/text/TextUtils;->isDigitsOnly(Ljava/lang/CharSequence;)Z move-result v0 if-eqz v0, :cond_6e .line 51 :try_start_64 invoke-interface {p2, v6}, Ljava/util/List;->get(I)Ljava/lang/Object; move-result-object p2 check-cast p2, Ljava/lang/String; invoke-static {p2}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I move-result v6 :try_end_6e .catch Ljava/lang/NumberFormatException; {:try_start_64 .. :try_end_6e} :catch_6e .line 56 :catch_6e :cond_6e :goto_6e invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; move-result-object p1 invoke-static {p1, v6, v1}, Landroid/graphics/BitmapFactory;->decodeResource(Landroid/content/res/Resources;ILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; move-result-object p1 goto :goto_bc .line 57 :cond_77 const-string v2, "file:///android_asset/" invoke-virtual {v0, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result v3 const/4 v4, 0x0 if-eqz v3, :cond_95 .line 58 invoke-virtual {v2}, Ljava/lang/String;->length()I move-result p2 invoke-virtual {v0, p2}, Ljava/lang/String;->substring(I)Ljava/lang/String; move-result-object p2 .line 59 invoke-virtual {p1}, Landroid/content/Context;->getAssets()Landroid/content/res/AssetManager; move-result-object p1 invoke-virtual {p1, p2}, Landroid/content/res/AssetManager;->open(Ljava/lang/String;)Ljava/io/InputStream; move-result-object p1 invoke-static {p1, v4, v1}, Landroid/graphics/BitmapFactory;->decodeStream(Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; move-result-object p1 goto :goto_bc .line 60 :cond_95 const-string v2, "file://" invoke-virtual {v0, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result v3 if-eqz v3, :cond_aa .line 61 invoke-virtual {v2}, Ljava/lang/String;->length()I move-result p1 invoke-virtual {v0, p1}, Ljava/lang/String;->substring(I)Ljava/lang/String; move-result-object p1 invoke-static {p1, v1}, Landroid/graphics/BitmapFactory;->decodeFile(Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; move-result-object p1 goto :goto_bc .line 65 :cond_aa :try_start_aa invoke-virtual {p1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver; move-result-object p1 .line 66 invoke-virtual {p1, p2}, Landroid/content/ContentResolver;->openInputStream(Landroid/net/Uri;)Ljava/io/InputStream; move-result-object p1 :try_end_b2 .catchall {:try_start_aa .. :try_end_b2} :catchall_ca .line 67 :try_start_b2 invoke-static {p1, v4, v1}, Landroid/graphics/BitmapFactory;->decodeStream(Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; move-result-object p2 :try_end_b6 .catchall {:try_start_b2 .. :try_end_b6} :catchall_c7 if-eqz p1, :cond_bb .line 70 :try_start_b8 invoke-virtual {p1}, Ljava/io/InputStream;->close()V :try_end_bb .catch Ljava/lang/Exception; {:try_start_b8 .. :try_end_bb} :catch_bb :catch_bb :cond_bb move-object p1, p2 :goto_bc if-eqz p1, :cond_bf return-object p1 .line 75 :cond_bf new-instance p1, Ljava/lang/RuntimeException; const-string p2, "Skia image region decoder returned null bitmap - image format may not be supported" invoke-direct {p1, p2}, Ljava/lang/RuntimeException;->(Ljava/lang/String;)V throw p1 :catchall_c7 move-exception p2 move-object v4, p1 goto :goto_cb :catchall_ca move-exception p2 :goto_cb if-eqz v4, :cond_d0 .line 70 :try_start_cd invoke-virtual {v4}, Ljava/io/InputStream;->close()V :try_end_d0 .catch Ljava/lang/Exception; {:try_start_cd .. :try_end_d0} :catch_d0 .line 72 :catch_d0 :cond_d0 throw p2 .end method