ReceiverProxy.smali
.class public Lorg/acdd/android/compat/ReceiverProxy;
.super Landroid/content/BroadcastReceiver;
.source "ReceiverProxy.java"
# instance fields
.field private mTargetReceiverClassName:Ljava/lang/String;
.field private mTargetReceiverRefer:Ljava/lang/ref/SoftReference;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/ref/SoftReference",
"<",
"Landroid/content/BroadcastReceiver;",
">;"
}
.end annotation
.end field
# direct methods
.method public constructor <init>(Ljava/lang/String;)V
.registers 3
.prologue
const/4 v0, 0x0
.line 20
invoke-direct {p0}, Landroid/content/BroadcastReceiver;-><init>()V
.line 17
iput-object v0, p0, Lorg/acdd/android/compat/ReceiverProxy;->mTargetReceiverClassName:Ljava/lang/String;
.line 18
iput-object v0, p0, Lorg/acdd/android/compat/ReceiverProxy;->mTargetReceiverRefer:Ljava/lang/ref/SoftReference;
.line 21
iput-object p1, p0, Lorg/acdd/android/compat/ReceiverProxy;->mTargetReceiverClassName:Ljava/lang/String;
.line 22
return-void
.end method
.method private createBroadcastReceiver()Landroid/content/BroadcastReceiver;
.registers 4
.prologue
const/4 v1, 0x0
.line 42
:try_start_1
invoke-static {}, Lorg/acdd/runtime/Globals;->getClassLoader()Ljava/lang/ClassLoader;
move-result-object v0
iget-object v2, p0, Lorg/acdd/android/compat/ReceiverProxy;->mTargetReceiverClassName:Ljava/lang/String;
invoke-virtual {v0, v2}, Ljava/lang/ClassLoader;->loadClass(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v0
.line 43
if-nez v0, :cond_f
move-object v0, v1
.line 58
:goto_e
return-object v0
.line 47
:cond_f
const/4 v2, 0x0
new-array v2, v2, [Ljava/lang/Class;
invoke-virtual {v0, v2}, Ljava/lang/Class;->getConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
move-result-object v0
.line 48
if-nez v0, :cond_1a
move-object v0, v1
.line 50
goto :goto_e
.line 52
:cond_1a
const/4 v2, 0x1
invoke-virtual {v0, v2}, Ljava/lang/reflect/Constructor;->setAccessible(Z)V
.line 53
const/4 v2, 0x0
new-array v2, v2, [Ljava/lang/Object;
invoke-virtual {v0, v2}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/content/BroadcastReceiver;
:try_end_27
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_27} :catch_28
goto :goto_e
.line 54
:catch_28
move-exception v0
move-object v0, v1
.line 58
goto :goto_e
.end method
# virtual methods
.method public onReceive(Landroid/content/Context;Landroid/content/Intent;)V
.registers 4
.prologue
.line 27
iget-object v0, p0, Lorg/acdd/android/compat/ReceiverProxy;->mTargetReceiverRefer:Ljava/lang/ref/SoftReference;
if-eqz v0, :cond_c
iget-object v0, p0, Lorg/acdd/android/compat/ReceiverProxy;->mTargetReceiverRefer:Ljava/lang/ref/SoftReference;
invoke-virtual {v0}, Ljava/lang/ref/SoftReference;->get()Ljava/lang/Object;
move-result-object v0
if-nez v0, :cond_16
.line 28
:cond_c
invoke-direct {p0}, Lorg/acdd/android/compat/ReceiverProxy;->createBroadcastReceiver()Landroid/content/BroadcastReceiver;
move-result-object v0
.line 32
:goto_10
if-eqz v0, :cond_15
.line 33
invoke-virtual {v0, p1, p2}, Landroid/content/BroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
.line 38
:cond_15
return-void
.line 30
:cond_16
iget-object v0, p0, Lorg/acdd/android/compat/ReceiverProxy;->mTargetReceiverRefer:Ljava/lang/ref/SoftReference;
invoke-virtual {v0}, Ljava/lang/ref/SoftReference;->get()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/content/BroadcastReceiver;
goto :goto_10
.end method