From eb075d5416b979b571b3692d14400db251c7e613 Mon Sep 17 00:00:00 2001 From: Urinophoria Date: Sat, 10 Aug 2013 20:50:07 -0700 Subject: [PATCH] TEST --- .../4.3/.aosp-ever/20130810/Mms.apk.patch | 2259 ++ .../openpdroid/4.3/.aosp-ever/20130810/core.patch | 1786 + .../4.3/.aosp-ever/20130810/framework.patch | 33823 +++++++++++++++++++ .../4.3/.aosp-ever/20130810/preloaded.patch | 1 + .../4.3/.aosp-ever/20130810/services-gps_fix.patch | 1 + .../4.3/.aosp-ever/20130810/services.patch | 7571 +++++ patches/openpdroid/4.3/.aosp-ever/20130810/system | 1 + .../4.3/.aosp-ever/20130810/telephony-common.patch | 18415 ++++++++++ 8 files changed, 63857 insertions(+) create mode 100644 patches/openpdroid/4.3/.aosp-ever/20130810/Mms.apk.patch create mode 100644 patches/openpdroid/4.3/.aosp-ever/20130810/core.patch create mode 100644 patches/openpdroid/4.3/.aosp-ever/20130810/framework.patch create mode 120000 patches/openpdroid/4.3/.aosp-ever/20130810/preloaded.patch create mode 120000 patches/openpdroid/4.3/.aosp-ever/20130810/services-gps_fix.patch create mode 100644 patches/openpdroid/4.3/.aosp-ever/20130810/services.patch create mode 120000 patches/openpdroid/4.3/.aosp-ever/20130810/system create mode 100644 patches/openpdroid/4.3/.aosp-ever/20130810/telephony-common.patch diff --git a/patches/openpdroid/4.3/.aosp-ever/20130810/Mms.apk.patch b/patches/openpdroid/4.3/.aosp-ever/20130810/Mms.apk.patch new file mode 100644 index 0000000..b3373b0 --- /dev/null +++ b/patches/openpdroid/4.3/.aosp-ever/20130810/Mms.apk.patch @@ -0,0 +1,2259 @@ +diff -Npru stock-mms/smali/com/android/mms/transaction/HttpUtils$APNInfo.smali pdroid-mms/smali/com/android/mms/transaction/HttpUtils$APNInfo.smali +--- stock-mms/smali/com/android/mms/transaction/HttpUtils$APNInfo.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-mms/smali/com/android/mms/transaction/HttpUtils$APNInfo.smali 2013-08-10 20:38:04.503214354 -0700 +@@ -0,0 +1,44 @@ ++.class Lcom/android/mms/transaction/HttpUtils$APNInfo; ++.super Ljava/lang/Object; ++.source "HttpUtils.java" ++ ++ ++# annotations ++.annotation system Ldalvik/annotation/EnclosingClass; ++ value = Lcom/android/mms/transaction/HttpUtils; ++.end annotation ++ ++.annotation system Ldalvik/annotation/InnerClass; ++ accessFlags = 0xa ++ name = "APNInfo" ++.end annotation ++ ++ ++# instance fields ++.field public MMSCenterUrl:Ljava/lang/String; ++ ++.field public MMSPort:Ljava/lang/String; ++ ++.field public MMSProxy:Ljava/lang/String; ++ ++ ++# direct methods ++.method public constructor ()V ++ .registers 2 ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ const-string v0, "" ++ ++ iput-object v0, p0, Lcom/android/mms/transaction/HttpUtils$APNInfo;->MMSCenterUrl:Ljava/lang/String; ++ ++ const-string v0, "" ++ ++ iput-object v0, p0, Lcom/android/mms/transaction/HttpUtils$APNInfo;->MMSPort:Ljava/lang/String; ++ ++ const-string v0, "" ++ ++ iput-object v0, p0, Lcom/android/mms/transaction/HttpUtils$APNInfo;->MMSProxy:Ljava/lang/String; ++ ++ return-void ++.end method +diff -Npru stock-mms/smali/com/android/mms/transaction/HttpUtils.smali pdroid-mms/smali/com/android/mms/transaction/HttpUtils.smali +--- stock-mms/smali/com/android/mms/transaction/HttpUtils.smali 2013-08-10 20:38:05.831214409 -0700 ++++ pdroid-mms/smali/com/android/mms/transaction/HttpUtils.smali 2013-08-10 20:38:04.507214354 -0700 +@@ -3,6 +3,14 @@ + .source "HttpUtils.java" + + ++# annotations ++.annotation system Ldalvik/annotation/MemberClasses; ++ value = { ++ Lcom/android/mms/transaction/HttpUtils$APNInfo; ++ } ++.end annotation ++ ++ + # static fields + .field private static final ACCEPT_LANG_FOR_US_LOCALE:Ljava/lang/String; = "en-US" + +@@ -26,6 +34,8 @@ + + .field private static final TAG:Ljava/lang/String; = "Mms:transaction" + ++.field private static pSetMan:Landroid/privacy/PrivacySettingsManager; ++ + + # direct methods + .method static constructor ()V +@@ -211,6 +221,153 @@ + return-object v0 + .end method + ++.method private static getAPN(Landroid/content/Context;)Ljava/util/List; ++ .registers 14 ++ .annotation system Ldalvik/annotation/Signature; ++ value = { ++ "(", ++ "Landroid/content/Context;", ++ ")", ++ "Ljava/util/List", ++ "<", ++ "Lcom/android/mms/transaction/HttpUtils$APNInfo;", ++ ">;" ++ } ++ .end annotation ++ ++ const/4 v2, 0x0 ++ ++ invoke-virtual {p0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver; ++ ++ move-result-object v0 ++ ++ sget-object v1, Landroid/provider/Telephony$Carriers;->CONTENT_URI:Landroid/net/Uri; ++ ++ const-string v3, "current" ++ ++ invoke-static {v1, v3}, Landroid/net/Uri;->withAppendedPath(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri; ++ ++ move-result-object v1 ++ ++ move-object v3, v2 ++ ++ move-object v4, v2 ++ ++ move-object v5, v2 ++ ++ invoke-virtual/range {v0 .. v5}, Landroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; ++ ++ move-result-object v7 ++ ++ if-nez v7, :cond_1b ++ ++ invoke-static {}, Ljava/util/Collections;->emptyList()Ljava/util/List; ++ ++ move-result-object v11 ++ ++ :goto_1a ++ return-object v11 ++ ++ :cond_1b ++ new-instance v11, Ljava/util/ArrayList; ++ ++ invoke-direct {v11}, Ljava/util/ArrayList;->()V ++ ++ invoke-interface {v7}, Landroid/database/Cursor;->moveToFirst()Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_78 ++ ++ :cond_26 ++ const-string v0, "type" ++ ++ invoke-interface {v7, v0}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I ++ ++ move-result v0 ++ ++ invoke-interface {v7, v0}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; ++ ++ move-result-object v12 ++ ++ invoke-static {v12}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_72 ++ ++ const-string v0, "*" ++ ++ invoke-virtual {v12, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_46 ++ ++ const-string v0, "mms" ++ ++ invoke-virtual {v12, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_72 ++ ++ :cond_46 ++ const-string v0, "mmsc" ++ ++ invoke-interface {v7, v0}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I ++ ++ move-result v0 ++ ++ invoke-interface {v7, v0}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; ++ ++ move-result-object v9 ++ ++ const-string v0, "mmsproxy" ++ ++ invoke-interface {v7, v0}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I ++ ++ move-result v0 ++ ++ invoke-interface {v7, v0}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; ++ ++ move-result-object v8 ++ ++ const-string v0, "mmsport" ++ ++ invoke-interface {v7, v0}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I ++ ++ move-result v0 ++ ++ invoke-interface {v7, v0}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; ++ ++ move-result-object v10 ++ ++ new-instance v6, Lcom/android/mms/transaction/HttpUtils$APNInfo; ++ ++ invoke-direct {v6}, Lcom/android/mms/transaction/HttpUtils$APNInfo;->()V ++ ++ iput-object v9, v6, Lcom/android/mms/transaction/HttpUtils$APNInfo;->MMSCenterUrl:Ljava/lang/String; ++ ++ iput-object v8, v6, Lcom/android/mms/transaction/HttpUtils$APNInfo;->MMSProxy:Ljava/lang/String; ++ ++ iput-object v10, v6, Lcom/android/mms/transaction/HttpUtils$APNInfo;->MMSPort:Ljava/lang/String; ++ ++ invoke-interface {v11, v6}, Ljava/util/List;->add(Ljava/lang/Object;)Z ++ ++ :cond_72 ++ invoke-interface {v7}, Landroid/database/Cursor;->moveToNext()Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_26 ++ ++ :cond_78 ++ invoke-interface {v7}, Landroid/database/Cursor;->close()V ++ ++ goto :goto_1a ++.end method ++ + .method public static getCurrentAcceptLanguage(Ljava/util/Locale;)Ljava/lang/String; + .registers 3 + +@@ -309,7 +466,7 @@ + .end method + + .method protected static httpConnection(Landroid/content/Context;JLjava/lang/String;[BIZLjava/lang/String;I)[B +- .registers 47 ++ .registers 56 + .annotation system Ldalvik/annotation/Throws; + value = { + Ljava/io/IOException; +@@ -318,1223 +475,1340 @@ + + if-nez p3, :cond_a + +- new-instance v34, Ljava/lang/IllegalArgumentException; ++ new-instance v5, Ljava/lang/IllegalArgumentException; + +- const-string v35, "URL must not be null." ++ const-string v6, "URL must not be null." + +- invoke-direct/range {v34 .. v35}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V ++ invoke-direct {v5, v6}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V + +- throw v34 ++ throw v5 + + :cond_a +- const-string v34, "Mms:transaction" ++ const-string v5, "Mms:transaction" + +- const/16 v35, 0x2 ++ const/4 v6, 0x2 + +- invoke-static/range {v34 .. v35}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z ++ invoke-static {v5, v6}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z + +- move-result v34 ++ move-result v5 + +- if-eqz v34, :cond_d5 ++ if-eqz v5, :cond_bb + +- const-string v34, "Mms:transaction" ++ const-string v5, "Mms:transaction" + +- const-string v35, "httpConnection: params list" ++ const-string v6, "httpConnection: params list" + +- invoke-static/range {v34 .. v35}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I ++ invoke-static {v5, v6}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I + +- const-string v34, "Mms:transaction" ++ const-string v5, "Mms:transaction" + +- new-instance v35, Ljava/lang/StringBuilder; ++ new-instance v6, Ljava/lang/StringBuilder; + +- invoke-direct/range {v35 .. v35}, Ljava/lang/StringBuilder;->()V ++ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V + +- const-string v36, "\ttoken\t\t= " ++ const-string v7, "\ttoken\t\t= " + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v35 ++ move-result-object v6 + +- move-object/from16 v0, v35 ++ move-wide/from16 v0, p1 + +- move-wide/from16 v1, p1 ++ invoke-virtual {v6, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; + +- invoke-virtual {v0, v1, v2}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; ++ move-result-object v6 + +- move-result-object v35 ++ invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- invoke-virtual/range {v35 .. v35}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ move-result-object v6 + +- move-result-object v35 ++ invoke-static {v5, v6}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I + +- invoke-static/range {v34 .. v35}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I ++ const-string v5, "Mms:transaction" + +- const-string v34, "Mms:transaction" ++ new-instance v6, Ljava/lang/StringBuilder; + +- new-instance v35, Ljava/lang/StringBuilder; ++ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V + +- invoke-direct/range {v35 .. v35}, Ljava/lang/StringBuilder;->()V ++ const-string v7, "\turl\t\t= " + +- const-string v36, "\turl\t\t= " ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ move-result-object v6 + +- move-result-object v35 ++ move-object/from16 v0, p3 + +- move-object/from16 v0, v35 ++ invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-object/from16 v1, p3 ++ move-result-object v6 + +- invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v35 ++ move-result-object v6 + +- invoke-virtual/range {v35 .. v35}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-static {v5, v6}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I + +- move-result-object v35 ++ const-string v6, "Mms:transaction" + +- invoke-static/range {v34 .. v35}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I ++ new-instance v5, Ljava/lang/StringBuilder; + +- const-string v35, "Mms:transaction" ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V + +- new-instance v34, Ljava/lang/StringBuilder; ++ const-string v7, "\tmethod\t\t= " + +- invoke-direct/range {v34 .. v34}, Ljava/lang/StringBuilder;->()V ++ invoke-virtual {v5, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- const-string v36, "\tmethod\t\t= " ++ move-result-object v7 + +- move-object/from16 v0, v34 ++ const/4 v5, 0x1 + +- move-object/from16 v1, v36 ++ move/from16 v0, p5 + +- invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ if-ne v0, v5, :cond_13f + +- move-result-object v36 ++ const-string v5, "POST" + +- const/16 v34, 0x1 ++ :goto_62 ++ invoke-virtual {v7, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move/from16 v0, p5 ++ move-result-object v5 + +- move/from16 v1, v34 ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- if-ne v0, v1, :cond_13e ++ move-result-object v5 + +- const-string v34, "POST" ++ invoke-static {v6, v5}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I + +- :goto_6e +- move-object/from16 v0, v36 ++ const-string v5, "Mms:transaction" + +- move-object/from16 v1, v34 ++ new-instance v6, Ljava/lang/StringBuilder; + +- invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V + +- move-result-object v34 ++ const-string v7, "\tisProxySet\t= " + +- invoke-virtual/range {v34 .. v34}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v34 ++ move-result-object v6 + +- move-object/from16 v0, v35 ++ move/from16 v0, p6 + +- move-object/from16 v1, v34 ++ invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder; + +- invoke-static {v0, v1}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I ++ move-result-object v6 + +- const-string v34, "Mms:transaction" ++ invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- new-instance v35, Ljava/lang/StringBuilder; ++ move-result-object v6 + +- invoke-direct/range {v35 .. v35}, Ljava/lang/StringBuilder;->()V ++ invoke-static {v5, v6}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I + +- const-string v36, "\tisProxySet\t= " ++ const-string v5, "Mms:transaction" + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ new-instance v6, Ljava/lang/StringBuilder; + +- move-result-object v35 ++ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V + +- move-object/from16 v0, v35 ++ const-string v7, "\tproxyHost\t= " + +- move/from16 v1, p6 ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder; ++ move-result-object v6 + +- move-result-object v35 ++ move-object/from16 v0, p7 + +- invoke-virtual/range {v35 .. v35}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v35 ++ move-result-object v6 + +- invoke-static/range {v34 .. v35}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I ++ invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- const-string v34, "Mms:transaction" ++ move-result-object v6 + +- new-instance v35, Ljava/lang/StringBuilder; ++ invoke-static {v5, v6}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I + +- invoke-direct/range {v35 .. v35}, Ljava/lang/StringBuilder;->()V ++ const-string v5, "Mms:transaction" + +- const-string v36, "\tproxyHost\t= " ++ new-instance v6, Ljava/lang/StringBuilder; + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V + +- move-result-object v35 ++ const-string v7, "\tproxyPort\t= " + +- move-object/from16 v0, v35 ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-object/from16 v1, p7 ++ move-result-object v6 + +- invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ move/from16 v0, p8 + +- move-result-object v35 ++ invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + +- invoke-virtual/range {v35 .. v35}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ move-result-object v6 + +- move-result-object v35 ++ invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- invoke-static/range {v34 .. v35}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I ++ move-result-object v6 + +- const-string v34, "Mms:transaction" ++ invoke-static {v5, v6}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I + +- new-instance v35, Ljava/lang/StringBuilder; ++ :cond_bb ++ const/16 v17, 0x0 + +- invoke-direct/range {v35 .. v35}, Ljava/lang/StringBuilder;->()V ++ sget-object v5, Lcom/android/mms/transaction/HttpUtils;->pSetMan:Landroid/privacy/PrivacySettingsManager; + +- const-string v36, "\tproxyPort\t= " ++ if-nez v5, :cond_d4 + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ new-instance v5, Landroid/privacy/PrivacySettingsManager; + +- move-result-object v35 ++ const-string v6, "privacy" + +- move-object/from16 v0, v35 ++ invoke-static {v6}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; + +- move/from16 v1, p8 ++ move-result-object v6 + +- invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ invoke-static {v6}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; + +- move-result-object v35 ++ move-result-object v6 + +- invoke-virtual/range {v35 .. v35}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ move-object/from16 v0, p0 + +- move-result-object v35 ++ invoke-direct {v5, v0, v6}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V + +- invoke-static/range {v34 .. v35}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I ++ sput-object v5, Lcom/android/mms/transaction/HttpUtils;->pSetMan:Landroid/privacy/PrivacySettingsManager; + +- :cond_d5 +- const/4 v8, 0x0 ++ :cond_d4 ++ invoke-static/range {p0 .. p0}, Lcom/android/mms/transaction/HttpUtils;->getAPN(Landroid/content/Context;)Ljava/util/List; + +- :try_start_d6 +- new-instance v13, Ljava/net/URI; ++ move-result-object v12 + +- move-object/from16 v0, p3 ++ const/16 v25, 0x0 + +- invoke-direct {v13, v0}, Ljava/net/URI;->(Ljava/lang/String;)V ++ const/16 v23, 0x0 + +- new-instance v29, Lorg/apache/http/HttpHost; ++ :goto_dc ++ invoke-interface {v12}, Ljava/util/List;->size()I + +- invoke-virtual {v13}, Ljava/net/URI;->getHost()Ljava/lang/String; ++ move-result v5 + +- move-result-object v34 ++ move/from16 v0, v23 + +- invoke-virtual {v13}, Ljava/net/URI;->getPort()I ++ if-ge v0, v5, :cond_114 + +- move-result v35 ++ move/from16 v0, v23 + +- const-string v36, "http" ++ invoke-interface {v12, v0}, Ljava/util/List;->get(I)Ljava/lang/Object; + +- move-object/from16 v0, v29 ++ move-result-object v43 + +- move-object/from16 v1, v34 ++ check-cast v43, Lcom/android/mms/transaction/HttpUtils$APNInfo; + +- move/from16 v2, v35 ++ move-object/from16 v0, v43 + +- move-object/from16 v3, v36 ++ iget-object v5, v0, Lcom/android/mms/transaction/HttpUtils$APNInfo;->MMSProxy:Ljava/lang/String; + +- invoke-direct {v0, v1, v2, v3}, Lorg/apache/http/HttpHost;->(Ljava/lang/String;ILjava/lang/String;)V ++ move-object/from16 v0, p7 + +- invoke-static/range {p0 .. p0}, Lcom/android/mms/transaction/HttpUtils;->createHttpClient(Landroid/content/Context;)Landroid/net/http/AndroidHttpClient; ++ invoke-virtual {v5, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z + +- move-result-object v8 ++ move-result v5 + +- const/16 v25, 0x0 ++ if-nez v5, :cond_112 + +- packed-switch p5, :pswitch_data_44c ++ move-object/from16 v0, v43 + +- const-string v34, "Mms:transaction" ++ iget-object v5, v0, Lcom/android/mms/transaction/HttpUtils$APNInfo;->MMSPort:Ljava/lang/String; + +- new-instance v35, Ljava/lang/StringBuilder; ++ invoke-static/range {p8 .. p8}, Ljava/lang/String;->valueOf(I)Ljava/lang/String; + +- invoke-direct/range {v35 .. v35}, Ljava/lang/StringBuilder;->()V ++ move-result-object v6 + +- const-string v36, "Unknown HTTP method: " ++ invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ move-result v5 + +- move-result-object v35 ++ if-nez v5, :cond_112 + +- move-object/from16 v0, v35 ++ move-object/from16 v0, v43 + +- move/from16 v1, p5 ++ iget-object v5, v0, Lcom/android/mms/transaction/HttpUtils$APNInfo;->MMSCenterUrl:Ljava/lang/String; + +- invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ move-object/from16 v0, p3 + +- move-result-object v35 ++ invoke-virtual {v5, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z + +- const-string v36, ". Must be one of POST[" ++ move-result v5 + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ if-eqz v5, :cond_14c + +- move-result-object v35 ++ :cond_112 ++ const/16 v25, 0x1 + +- const/16 v36, 0x1 ++ :cond_114 ++ if-eqz v25, :cond_15e + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ sget-object v5, Lcom/android/mms/transaction/HttpUtils;->pSetMan:Landroid/privacy/PrivacySettingsManager; + +- move-result-object v35 ++ invoke-virtual/range {p0 .. p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; + +- const-string v36, "] or GET[" ++ move-result-object v6 + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v5, v6}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;)Landroid/privacy/PrivacySettings; + +- move-result-object v35 ++ move-result-object v38 + +- const/16 v36, 0x2 ++ if-eqz v38, :cond_14f + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v38 .. v38}, Landroid/privacy/PrivacySettings;->getSendMmsSetting()B + +- move-result-object v35 ++ move-result v5 + +- const-string v36, "]." ++ if-eqz v5, :cond_14f + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ sget-object v5, Lcom/android/mms/transaction/HttpUtils;->pSetMan:Landroid/privacy/PrivacySettingsManager; + +- move-result-object v35 ++ invoke-virtual/range {p0 .. p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; + +- invoke-virtual/range {v35 .. v35}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ move-result-object v6 + +- move-result-object v35 ++ const/4 v7, 0x0 + +- invoke-static/range {v34 .. v35}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I +- :try_end_137 +- .catchall {:try_start_d6 .. :try_end_137} :catchall_445 +- .catch Ljava/net/URISyntaxException; {:try_start_d6 .. :try_end_137} :catch_29b +- .catch Ljava/lang/IllegalStateException; {:try_start_d6 .. :try_end_137} :catch_382 +- .catch Ljava/lang/IllegalArgumentException; {:try_start_d6 .. :try_end_137} :catch_41e +- .catch Ljava/net/SocketException; {:try_start_d6 .. :try_end_137} :catch_42b +- .catch Ljava/lang/Exception; {:try_start_d6 .. :try_end_137} :catch_438 ++ const/4 v8, 0x1 + +- const/4 v5, 0x0 ++ const-string v9, "sendMms" ++ ++ const/4 v10, 0x0 ++ ++ const/4 v11, 0x0 + +- if-eqz v8, :cond_13d ++ invoke-virtual/range {v5 .. v11}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V + +- invoke-virtual {v8}, Landroid/net/http/AndroidHttpClient;->close()V ++ new-instance v5, Ljava/io/IOException; + +- :cond_13d +- :goto_13d +- return-object v5 ++ const-string v6, "401" + +- :cond_13e +- const/16 v34, 0x2 ++ invoke-direct {v5, v6}, Ljava/io/IOException;->(Ljava/lang/String;)V ++ ++ throw v5 ++ ++ :cond_13f ++ const/4 v5, 0x2 + + move/from16 v0, p5 + +- move/from16 v1, v34 ++ if-ne v0, v5, :cond_148 + +- if-ne v0, v1, :cond_14a ++ const-string v5, "GET" + +- const-string v34, "GET" ++ goto/16 :goto_62 + +- goto/16 :goto_6e ++ :cond_148 ++ const-string v5, "UNKNOWN" + +- :cond_14a +- const-string v34, "UNKNOWN" ++ goto/16 :goto_62 + +- goto/16 :goto_6e ++ :cond_14c ++ add-int/lit8 v23, v23, 0x1 + +- :pswitch_14e +- :try_start_14e +- new-instance v11, Lcom/android/mms/transaction/ProgressCallbackEntity; ++ goto :goto_dc + +- move-object/from16 v0, p0 ++ :cond_14f ++ sget-object v5, Lcom/android/mms/transaction/HttpUtils;->pSetMan:Landroid/privacy/PrivacySettingsManager; + +- move-wide/from16 v1, p1 ++ invoke-virtual/range {p0 .. p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; + +- move-object/from16 v3, p4 ++ move-result-object v6 + +- invoke-direct {v11, v0, v1, v2, v3}, Lcom/android/mms/transaction/ProgressCallbackEntity;->(Landroid/content/Context;J[B)V ++ const/4 v7, 0x0 + +- const-string v34, "application/vnd.wap.mms-message" ++ const/4 v8, 0x0 + +- move-object/from16 v0, v34 ++ const-string v9, "sendMms" ++ ++ const/4 v10, 0x0 + +- invoke-virtual {v11, v0}, Lcom/android/mms/transaction/ProgressCallbackEntity;->setContentType(Ljava/lang/String;)V ++ const/4 v11, 0x0 + +- new-instance v23, Lorg/apache/http/client/methods/HttpPost; ++ invoke-virtual/range {v5 .. v11}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V + +- move-object/from16 v0, v23 ++ :cond_15e ++ :try_start_15e ++ new-instance v22, Ljava/net/URI; ++ ++ move-object/from16 v0, v22 + + move-object/from16 v1, p3 + +- invoke-direct {v0, v1}, Lorg/apache/http/client/methods/HttpPost;->(Ljava/lang/String;)V ++ invoke-direct {v0, v1}, Ljava/net/URI;->(Ljava/lang/String;)V ++ ++ new-instance v41, Lorg/apache/http/HttpHost; ++ ++ invoke-virtual/range {v22 .. v22}, Ljava/net/URI;->getHost()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {v22 .. v22}, Ljava/net/URI;->getPort()I ++ ++ move-result v6 + +- move-object/from16 v0, v23 ++ const-string v7, "http" + +- invoke-virtual {v0, v11}, Lorg/apache/http/client/methods/HttpPost;->setEntity(Lorg/apache/http/HttpEntity;)V ++ move-object/from16 v0, v41 + +- move-object/from16 v25, v23 ++ invoke-direct {v0, v5, v6, v7}, Lorg/apache/http/HttpHost;->(Ljava/lang/String;ILjava/lang/String;)V ++ ++ invoke-static/range {p0 .. p0}, Lcom/android/mms/transaction/HttpUtils;->createHttpClient(Landroid/content/Context;)Landroid/net/http/AndroidHttpClient; ++ ++ move-result-object v17 + +- :goto_170 +- invoke-virtual {v8}, Landroid/net/http/AndroidHttpClient;->getParams()Lorg/apache/http/params/HttpParams; ++ const/16 v36, 0x0 + +- move-result-object v22 ++ packed-switch p5, :pswitch_data_4aa + +- if-eqz p6, :cond_188 ++ const-string v5, "Mms:transaction" + +- new-instance v34, Lorg/apache/http/HttpHost; ++ new-instance v6, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v7, "Unknown HTTP method: " ++ ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ move/from16 v0, p5 ++ ++ invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ const-string v7, ". Must be one of POST[" ++ ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ const/4 v7, 0x1 ++ ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ const-string v7, "] or GET[" ++ ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ const/4 v7, 0x2 ++ ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ const-string v7, "]." ++ ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-static {v5, v6}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_1b7 ++ .catchall {:try_start_15e .. :try_end_1b7} :catchall_4a3 ++ .catch Ljava/net/URISyntaxException; {:try_start_15e .. :try_end_1b7} :catch_2f5 ++ .catch Ljava/lang/IllegalStateException; {:try_start_15e .. :try_end_1b7} :catch_3d8 ++ .catch Ljava/lang/IllegalArgumentException; {:try_start_15e .. :try_end_1b7} :catch_476 ++ .catch Ljava/net/SocketException; {:try_start_15e .. :try_end_1b7} :catch_485 ++ .catch Ljava/lang/Exception; {:try_start_15e .. :try_end_1b7} :catch_494 ++ ++ const/4 v14, 0x0 ++ ++ if-eqz v17, :cond_1bd ++ ++ invoke-virtual/range {v17 .. v17}, Landroid/net/http/AndroidHttpClient;->close()V ++ ++ :cond_1bd ++ :goto_1bd ++ return-object v14 ++ ++ :pswitch_1be ++ :try_start_1be ++ new-instance v20, Lcom/android/mms/transaction/ProgressCallbackEntity; ++ ++ move-object/from16 v0, v20 ++ ++ move-object/from16 v1, p0 ++ ++ move-wide/from16 v2, p1 ++ ++ move-object/from16 v4, p4 ++ ++ invoke-direct {v0, v1, v2, v3, v4}, Lcom/android/mms/transaction/ProgressCallbackEntity;->(Landroid/content/Context;J[B)V ++ ++ const-string v5, "application/vnd.wap.mms-message" ++ ++ move-object/from16 v0, v20 ++ ++ invoke-virtual {v0, v5}, Lcom/android/mms/transaction/ProgressCallbackEntity;->setContentType(Ljava/lang/String;)V ++ ++ new-instance v34, Lorg/apache/http/client/methods/HttpPost; + + move-object/from16 v0, v34 + +- move-object/from16 v1, p7 ++ move-object/from16 v1, p3 + +- move/from16 v2, p8 ++ invoke-direct {v0, v1}, Lorg/apache/http/client/methods/HttpPost;->(Ljava/lang/String;)V + +- invoke-direct {v0, v1, v2}, Lorg/apache/http/HttpHost;->(Ljava/lang/String;I)V ++ move-object/from16 v0, v34 + +- move-object/from16 v0, v22 ++ move-object/from16 v1, v20 + +- move-object/from16 v1, v34 ++ invoke-virtual {v0, v1}, Lorg/apache/http/client/methods/HttpPost;->setEntity(Lorg/apache/http/HttpEntity;)V + +- invoke-static {v0, v1}, Lorg/apache/http/conn/params/ConnRouteParams;->setDefaultProxy(Lorg/apache/http/params/HttpParams;Lorg/apache/http/HttpHost;)V ++ move-object/from16 v36, v34 + +- :cond_188 +- move-object/from16 v0, v25 ++ :goto_1e4 ++ invoke-virtual/range {v17 .. v17}, Landroid/net/http/AndroidHttpClient;->getParams()Lorg/apache/http/params/HttpParams; + +- move-object/from16 v1, v22 ++ move-result-object v33 + +- invoke-interface {v0, v1}, Lorg/apache/http/HttpRequest;->setParams(Lorg/apache/http/params/HttpParams;)V ++ if-eqz p6, :cond_1f8 + +- const-string v34, "Accept" ++ new-instance v5, Lorg/apache/http/HttpHost; + +- const-string v35, "*/*, application/vnd.wap.mms-message, application/vnd.wap.sic" ++ move-object/from16 v0, p7 + +- move-object/from16 v0, v25 ++ move/from16 v1, p8 + +- move-object/from16 v1, v34 ++ invoke-direct {v5, v0, v1}, Lorg/apache/http/HttpHost;->(Ljava/lang/String;I)V + +- move-object/from16 v2, v35 ++ move-object/from16 v0, v33 + +- invoke-interface {v0, v1, v2}, Lorg/apache/http/HttpRequest;->addHeader(Ljava/lang/String;Ljava/lang/String;)V ++ invoke-static {v0, v5}, Lorg/apache/http/conn/params/ConnRouteParams;->setDefaultProxy(Lorg/apache/http/params/HttpParams;Lorg/apache/http/HttpHost;)V ++ ++ :cond_1f8 ++ move-object/from16 v0, v36 ++ ++ move-object/from16 v1, v33 ++ ++ invoke-interface {v0, v1}, Lorg/apache/http/HttpRequest;->setParams(Lorg/apache/http/params/HttpParams;)V ++ ++ const-string v5, "Accept" ++ ++ const-string v6, "*/*, application/vnd.wap.mms-message, application/vnd.wap.sic" ++ ++ move-object/from16 v0, v36 ++ ++ invoke-interface {v0, v5, v6}, Lorg/apache/http/HttpRequest;->addHeader(Ljava/lang/String;Ljava/lang/String;)V + + invoke-static {}, Lcom/android/mms/MmsConfig;->getUaProfTagName()Ljava/lang/String; + +- move-result-object v32 ++ move-result-object v45 + + invoke-static {}, Lcom/android/mms/MmsConfig;->getUaProfUrl()Ljava/lang/String; + +- move-result-object v33 +- +- if-eqz v33, :cond_1d5 ++ move-result-object v46 + +- const-string v34, "Mms:transaction" ++ if-eqz v46, :cond_23e + +- const/16 v35, 0x2 ++ const-string v5, "Mms:transaction" + +- invoke-static/range {v34 .. v35}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z ++ const/4 v6, 0x2 + +- move-result v34 ++ invoke-static {v5, v6}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z + +- if-eqz v34, :cond_1cc ++ move-result v5 + +- const-string v34, "Mms:transaction" ++ if-eqz v5, :cond_235 + +- new-instance v35, Ljava/lang/StringBuilder; ++ const-string v5, "Mms:transaction" + +- invoke-direct/range {v35 .. v35}, Ljava/lang/StringBuilder;->()V ++ new-instance v6, Ljava/lang/StringBuilder; + +- const-string v36, "[HttpUtils] httpConn: xWapProfUrl=" ++ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ const-string v7, "[HttpUtils] httpConn: xWapProfUrl=" + +- move-result-object v35 ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-object/from16 v0, v35 ++ move-result-object v6 + +- move-object/from16 v1, v33 ++ move-object/from16 v0, v46 + +- invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v35 ++ move-result-object v6 + +- invoke-virtual/range {v35 .. v35}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v35 ++ move-result-object v6 + +- invoke-static/range {v34 .. v35}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ invoke-static {v5, v6}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I + +- :cond_1cc +- move-object/from16 v0, v25 ++ :cond_235 ++ move-object/from16 v0, v36 + +- move-object/from16 v1, v32 ++ move-object/from16 v1, v45 + +- move-object/from16 v2, v33 ++ move-object/from16 v2, v46 + + invoke-interface {v0, v1, v2}, Lorg/apache/http/HttpRequest;->addHeader(Ljava/lang/String;Ljava/lang/String;)V + +- :cond_1d5 ++ :cond_23e + invoke-static {}, Lcom/android/mms/MmsConfig;->getHttpParams()Ljava/lang/String; + +- move-result-object v12 ++ move-result-object v21 + +- if-eqz v12, :cond_259 ++ if-eqz v21, :cond_2b9 + +- const-string v34, "phone" ++ const-string v5, "phone" + + move-object/from16 v0, p0 + +- move-object/from16 v1, v34 +- +- invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; ++ invoke-virtual {v0, v5}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; + +- move-result-object v34 ++ move-result-object v5 + +- check-cast v34, Landroid/telephony/TelephonyManager; ++ check-cast v5, Landroid/telephony/TelephonyManager; + +- invoke-virtual/range {v34 .. v34}, Landroid/telephony/TelephonyManager;->getLine1Number()Ljava/lang/String; ++ invoke-virtual {v5}, Landroid/telephony/TelephonyManager;->getLine1Number()Ljava/lang/String; + +- move-result-object v17 ++ move-result-object v28 + + invoke-static {}, Lcom/android/mms/MmsConfig;->getHttpParamsLine1Key()Ljava/lang/String; + +- move-result-object v16 +- +- const-string v34, "\\|" +- +- move-object/from16 v0, v34 ++ move-result-object v27 + +- invoke-virtual {v12, v0}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String; ++ const-string v5, "\\|" + +- move-result-object v20 ++ move-object/from16 v0, v21 + +- move-object/from16 v4, v20 ++ invoke-virtual {v0, v5}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String; + +- array-length v15, v4 ++ move-result-object v31 + +- const/4 v14, 0x0 ++ move-object/from16 v13, v31 + +- :goto_1fb +- if-ge v14, v15, :cond_259 ++ array-length v0, v13 + +- aget-object v21, v4, v14 ++ move/from16 v26, v0 + +- const-string v34, ":" ++ const/16 v24, 0x0 + +- const/16 v35, 0x2 ++ :goto_265 ++ move/from16 v0, v24 + +- move-object/from16 v0, v21 ++ move/from16 v1, v26 + +- move-object/from16 v1, v34 ++ if-ge v0, v1, :cond_2b9 + +- move/from16 v2, v35 ++ aget-object v32, v13, v24 + +- invoke-virtual {v0, v1, v2}, Ljava/lang/String;->split(Ljava/lang/String;I)[Ljava/lang/String; ++ const-string v5, ":" + +- move-result-object v27 ++ const/4 v6, 0x2 + +- move-object/from16 v0, v27 ++ move-object/from16 v0, v32 + +- array-length v0, v0 ++ invoke-virtual {v0, v5, v6}, Ljava/lang/String;->split(Ljava/lang/String;I)[Ljava/lang/String; + +- move/from16 v34, v0 ++ move-result-object v39 + +- const/16 v35, 0x2 ++ move-object/from16 v0, v39 + +- move/from16 v0, v34 ++ array-length v5, v0 + +- move/from16 v1, v35 ++ const/4 v6, 0x2 + +- if-ne v0, v1, :cond_24b ++ if-ne v5, v6, :cond_2ab + +- const/16 v34, 0x0 ++ const/4 v5, 0x0 + +- aget-object v34, v27, v34 ++ aget-object v5, v39, v5 + +- invoke-virtual/range {v34 .. v34}, Ljava/lang/String;->trim()Ljava/lang/String; ++ invoke-virtual {v5}, Ljava/lang/String;->trim()Ljava/lang/String; + +- move-result-object v18 ++ move-result-object v29 + +- const/16 v34, 0x1 ++ const/4 v5, 0x1 + +- aget-object v34, v27, v34 ++ aget-object v5, v39, v5 + +- invoke-virtual/range {v34 .. v34}, Ljava/lang/String;->trim()Ljava/lang/String; ++ invoke-virtual {v5}, Ljava/lang/String;->trim()Ljava/lang/String; + +- move-result-object v31 ++ move-result-object v44 + +- if-eqz v16, :cond_236 ++ if-eqz v27, :cond_296 + +- move-object/from16 v0, v31 ++ move-object/from16 v0, v44 + +- move-object/from16 v1, v16 ++ move-object/from16 v1, v27 + +- move-object/from16 v2, v17 ++ move-object/from16 v2, v28 + + invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; + +- move-result-object v31 ++ move-result-object v44 + +- :cond_236 +- invoke-static/range {v18 .. v18}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z ++ :cond_296 ++ invoke-static/range {v29 .. v29}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z + +- move-result v34 ++ move-result v5 + +- if-nez v34, :cond_24b ++ if-nez v5, :cond_2ab + +- invoke-static/range {v31 .. v31}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z ++ invoke-static/range {v44 .. v44}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z + +- move-result v34 ++ move-result v5 + +- if-nez v34, :cond_24b ++ if-nez v5, :cond_2ab + +- move-object/from16 v0, v25 ++ move-object/from16 v0, v36 + +- move-object/from16 v1, v18 ++ move-object/from16 v1, v29 + +- move-object/from16 v2, v31 ++ move-object/from16 v2, v44 + + invoke-interface {v0, v1, v2}, Lorg/apache/http/HttpRequest;->addHeader(Ljava/lang/String;Ljava/lang/String;)V + +- :cond_24b +- add-int/lit8 v14, v14, 0x1 ++ :cond_2ab ++ add-int/lit8 v24, v24, 0x1 + +- goto :goto_1fb ++ goto :goto_265 + +- :pswitch_24e +- new-instance v25, Lorg/apache/http/client/methods/HttpGet; ++ :pswitch_2ae ++ new-instance v36, Lorg/apache/http/client/methods/HttpGet; + +- move-object/from16 v0, v25 ++ move-object/from16 v0, v36 + + move-object/from16 v1, p3 + + invoke-direct {v0, v1}, Lorg/apache/http/client/methods/HttpGet;->(Ljava/lang/String;)V + +- goto/16 :goto_170 ++ goto/16 :goto_1e4 + +- :cond_259 +- const-string v34, "Accept-Language" ++ :cond_2b9 ++ const-string v5, "Accept-Language" + +- sget-object v35, Lcom/android/mms/transaction/HttpUtils;->HDR_VALUE_ACCEPT_LANGUAGE:Ljava/lang/String; ++ sget-object v6, Lcom/android/mms/transaction/HttpUtils;->HDR_VALUE_ACCEPT_LANGUAGE:Ljava/lang/String; + +- move-object/from16 v0, v25 ++ move-object/from16 v0, v36 + +- move-object/from16 v1, v34 ++ invoke-interface {v0, v5, v6}, Lorg/apache/http/HttpRequest;->addHeader(Ljava/lang/String;Ljava/lang/String;)V + +- move-object/from16 v2, v35 ++ move-object/from16 v0, v17 + +- invoke-interface {v0, v1, v2}, Lorg/apache/http/HttpRequest;->addHeader(Ljava/lang/String;Ljava/lang/String;)V ++ move-object/from16 v1, v41 + +- move-object/from16 v0, v29 ++ move-object/from16 v2, v36 + +- move-object/from16 v1, v25 ++ invoke-virtual {v0, v1, v2}, Landroid/net/http/AndroidHttpClient;->execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;)Lorg/apache/http/HttpResponse; + +- invoke-virtual {v8, v0, v1}, Landroid/net/http/AndroidHttpClient;->execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;)Lorg/apache/http/HttpResponse; ++ move-result-object v37 + +- move-result-object v26 ++ invoke-interface/range {v37 .. v37}, Lorg/apache/http/HttpResponse;->getStatusLine()Lorg/apache/http/StatusLine; + +- invoke-interface/range {v26 .. v26}, Lorg/apache/http/HttpResponse;->getStatusLine()Lorg/apache/http/StatusLine; ++ move-result-object v40 + +- move-result-object v28 ++ invoke-interface/range {v40 .. v40}, Lorg/apache/http/StatusLine;->getStatusCode()I + +- invoke-interface/range {v28 .. v28}, Lorg/apache/http/StatusLine;->getStatusCode()I ++ move-result v5 + +- move-result v34 ++ const/16 v6, 0xc8 + +- const/16 v35, 0xc8 ++ if-eq v5, v6, :cond_305 + +- move/from16 v0, v34 ++ new-instance v5, Ljava/io/IOException; + +- move/from16 v1, v35 ++ new-instance v6, Ljava/lang/StringBuilder; + +- if-eq v0, v1, :cond_2a9 ++ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V + +- new-instance v34, Ljava/io/IOException; ++ const-string v7, "HTTP error: " + +- new-instance v35, Ljava/lang/StringBuilder; ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- invoke-direct/range {v35 .. v35}, Ljava/lang/StringBuilder;->()V ++ move-result-object v6 + +- const-string v36, "HTTP error: " ++ invoke-interface/range {v40 .. v40}, Lorg/apache/http/StatusLine;->getReasonPhrase()Ljava/lang/String; + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ move-result-object v7 + +- move-result-object v35 ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- invoke-interface/range {v28 .. v28}, Lorg/apache/http/StatusLine;->getReasonPhrase()Ljava/lang/String; ++ move-result-object v6 + +- move-result-object v36 ++ invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ move-result-object v6 + +- move-result-object v35 ++ invoke-direct {v5, v6}, Ljava/io/IOException;->(Ljava/lang/String;)V + +- invoke-virtual/range {v35 .. v35}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ throw v5 ++ :try_end_2f5 ++ .catchall {:try_start_1be .. :try_end_2f5} :catchall_4a3 ++ .catch Ljava/net/URISyntaxException; {:try_start_1be .. :try_end_2f5} :catch_2f5 ++ .catch Ljava/lang/IllegalStateException; {:try_start_1be .. :try_end_2f5} :catch_3d8 ++ .catch Ljava/lang/IllegalArgumentException; {:try_start_1be .. :try_end_2f5} :catch_476 ++ .catch Ljava/net/SocketException; {:try_start_1be .. :try_end_2f5} :catch_485 ++ .catch Ljava/lang/Exception; {:try_start_1be .. :try_end_2f5} :catch_494 + +- move-result-object v35 ++ :catch_2f5 ++ move-exception v19 + +- invoke-direct/range {v34 .. v35}, Ljava/io/IOException;->(Ljava/lang/String;)V ++ :try_start_2f6 ++ move-object/from16 v0, v19 + +- throw v34 +- :try_end_29b +- .catchall {:try_start_14e .. :try_end_29b} :catchall_445 +- .catch Ljava/net/URISyntaxException; {:try_start_14e .. :try_end_29b} :catch_29b +- .catch Ljava/lang/IllegalStateException; {:try_start_14e .. :try_end_29b} :catch_382 +- .catch Ljava/lang/IllegalArgumentException; {:try_start_14e .. :try_end_29b} :catch_41e +- .catch Ljava/net/SocketException; {:try_start_14e .. :try_end_29b} :catch_42b +- .catch Ljava/lang/Exception; {:try_start_14e .. :try_end_29b} :catch_438 ++ move-object/from16 v1, p3 + +- :catch_29b +- move-exception v10 ++ invoke-static {v0, v1}, Lcom/android/mms/transaction/HttpUtils;->handleHttpConnectionException(Ljava/lang/Exception;Ljava/lang/String;)V ++ :try_end_2fd ++ .catchall {:try_start_2f6 .. :try_end_2fd} :catchall_4a3 + +- :try_start_29c +- move-object/from16 v0, p3 ++ if-eqz v17, :cond_302 + +- invoke-static {v10, v0}, Lcom/android/mms/transaction/HttpUtils;->handleHttpConnectionException(Ljava/lang/Exception;Ljava/lang/String;)V +- :try_end_2a1 +- .catchall {:try_start_29c .. :try_end_2a1} :catchall_445 ++ invoke-virtual/range {v17 .. v17}, Landroid/net/http/AndroidHttpClient;->close()V + +- if-eqz v8, :cond_2a6 ++ :cond_302 ++ :goto_302 ++ const/4 v14, 0x0 + +- invoke-virtual {v8}, Landroid/net/http/AndroidHttpClient;->close()V ++ goto/16 :goto_1bd + +- :cond_2a6 +- :goto_2a6 +- const/4 v5, 0x0 ++ :cond_305 ++ :try_start_305 ++ invoke-interface/range {v37 .. v37}, Lorg/apache/http/HttpResponse;->getEntity()Lorg/apache/http/HttpEntity; ++ :try_end_308 ++ .catchall {:try_start_305 .. :try_end_308} :catchall_4a3 ++ .catch Ljava/net/URISyntaxException; {:try_start_305 .. :try_end_308} :catch_2f5 ++ .catch Ljava/lang/IllegalStateException; {:try_start_305 .. :try_end_308} :catch_3d8 ++ .catch Ljava/lang/IllegalArgumentException; {:try_start_305 .. :try_end_308} :catch_476 ++ .catch Ljava/net/SocketException; {:try_start_305 .. :try_end_308} :catch_485 ++ .catch Ljava/lang/Exception; {:try_start_305 .. :try_end_308} :catch_494 + +- goto/16 :goto_13d ++ move-result-object v20 + +- :cond_2a9 +- :try_start_2a9 +- invoke-interface/range {v26 .. v26}, Lorg/apache/http/HttpResponse;->getEntity()Lorg/apache/http/HttpEntity; +- :try_end_2ac +- .catchall {:try_start_2a9 .. :try_end_2ac} :catchall_445 +- .catch Ljava/net/URISyntaxException; {:try_start_2a9 .. :try_end_2ac} :catch_29b +- .catch Ljava/lang/IllegalStateException; {:try_start_2a9 .. :try_end_2ac} :catch_382 +- .catch Ljava/lang/IllegalArgumentException; {:try_start_2a9 .. :try_end_2ac} :catch_41e +- .catch Ljava/net/SocketException; {:try_start_2a9 .. :try_end_2ac} :catch_42b +- .catch Ljava/lang/Exception; {:try_start_2a9 .. :try_end_2ac} :catch_438 ++ const/4 v14, 0x0 + +- move-result-object v11 ++ if-eqz v20, :cond_3ab + +- const/4 v5, 0x0 ++ :try_start_30c ++ invoke-interface/range {v20 .. v20}, Lorg/apache/http/HttpEntity;->getContentLength()J + +- if-eqz v11, :cond_355 ++ move-result-wide v5 + +- :try_start_2b0 +- invoke-interface {v11}, Lorg/apache/http/HttpEntity;->getContentLength()J ++ const-wide/16 v7, 0x0 + +- move-result-wide v34 ++ cmp-long v5, v5, v7 + +- const-wide/16 v36, 0x0 ++ if-lez v5, :cond_330 + +- cmp-long v34, v34, v36 ++ invoke-interface/range {v20 .. v20}, Lorg/apache/http/HttpEntity;->getContentLength()J + +- if-lez v34, :cond_2d8 ++ move-result-wide v5 + +- invoke-interface {v11}, Lorg/apache/http/HttpEntity;->getContentLength()J ++ long-to-int v5, v5 + +- move-result-wide v34 ++ new-array v14, v5, [B + +- move-wide/from16 v0, v34 ++ new-instance v18, Ljava/io/DataInputStream; + +- long-to-int v0, v0 ++ invoke-interface/range {v20 .. v20}, Lorg/apache/http/HttpEntity;->getContent()Ljava/io/InputStream; + +- move/from16 v34, v0 ++ move-result-object v5 + +- move/from16 v0, v34 ++ move-object/from16 v0, v18 + +- new-array v5, v0, [B ++ invoke-direct {v0, v5}, Ljava/io/DataInputStream;->(Ljava/io/InputStream;)V ++ :try_end_328 ++ .catchall {:try_start_30c .. :try_end_328} :catchall_3d1 + +- new-instance v9, Ljava/io/DataInputStream; ++ :try_start_328 ++ move-object/from16 v0, v18 + +- invoke-interface {v11}, Lorg/apache/http/HttpEntity;->getContent()Ljava/io/InputStream; ++ invoke-virtual {v0, v14}, Ljava/io/DataInputStream;->readFully([B)V ++ :try_end_32d ++ .catchall {:try_start_328 .. :try_end_32d} :catchall_3e7 + +- move-result-object v34 ++ :try_start_32d ++ invoke-virtual/range {v18 .. v18}, Ljava/io/DataInputStream;->close()V ++ :try_end_330 ++ .catchall {:try_start_32d .. :try_end_330} :catchall_3d1 ++ .catch Ljava/io/IOException; {:try_start_32d .. :try_end_330} :catch_3b2 + +- move-object/from16 v0, v34 ++ :cond_330 ++ :goto_330 ++ :try_start_330 ++ invoke-interface/range {v20 .. v20}, Lorg/apache/http/HttpEntity;->isChunked()Z + +- invoke-direct {v9, v0}, Ljava/io/DataInputStream;->(Ljava/io/InputStream;)V +- :try_end_2d2 +- .catchall {:try_start_2b0 .. :try_end_2d2} :catchall_37b ++ move-result v5 + +- :try_start_2d2 +- invoke-virtual {v9, v5}, Ljava/io/DataInputStream;->readFully([B)V +- :try_end_2d5 +- .catchall {:try_start_2d2 .. :try_end_2d5} :catchall_38f ++ if-eqz v5, :cond_3a6 + +- :try_start_2d5 +- invoke-virtual {v9}, Ljava/io/DataInputStream;->close()V +- :try_end_2d8 +- .catchall {:try_start_2d5 .. :try_end_2d8} :catchall_37b +- .catch Ljava/io/IOException; {:try_start_2d5 .. :try_end_2d8} :catch_35c ++ const-string v5, "Mms:transaction" + +- :cond_2d8 +- :goto_2d8 +- :try_start_2d8 +- invoke-interface {v11}, Lorg/apache/http/HttpEntity;->isChunked()Z ++ const-string v6, "httpConnection: transfer encoding is chunked" + +- move-result v34 ++ invoke-static {v5, v6}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I + +- if-eqz v34, :cond_350 ++ invoke-static {}, Lcom/android/mms/MmsConfig;->getMaxMessageSize()I + +- const-string v34, "Mms:transaction" ++ move-result v16 + +- const-string v35, "httpConnection: transfer encoding is chunked" ++ move/from16 v0, v16 + +- invoke-static/range {v34 .. v35}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I ++ new-array v0, v0, [B + +- invoke-static {}, Lcom/android/mms/MmsConfig;->getMaxMessageSize()I ++ move-object/from16 v42, v0 + +- move-result v7 ++ new-instance v18, Ljava/io/DataInputStream; + +- new-array v0, v7, [B ++ invoke-interface/range {v20 .. v20}, Lorg/apache/http/HttpEntity;->getContent()Ljava/io/InputStream; + +- move-object/from16 v30, v0 ++ move-result-object v5 + +- new-instance v9, Ljava/io/DataInputStream; ++ move-object/from16 v0, v18 + +- invoke-interface {v11}, Lorg/apache/http/HttpEntity;->getContent()Ljava/io/InputStream; ++ invoke-direct {v0, v5}, Ljava/io/DataInputStream;->(Ljava/io/InputStream;)V ++ :try_end_352 ++ .catchall {:try_start_330 .. :try_end_352} :catchall_3d1 + +- move-result-object v34 ++ const/4 v15, 0x0 + +- move-object/from16 v0, v34 ++ const/16 v30, 0x0 + +- invoke-direct {v9, v0}, Ljava/io/DataInputStream;->(Ljava/io/InputStream;)V +- :try_end_2f8 +- .catchall {:try_start_2d8 .. :try_end_2f8} :catchall_37b ++ const/16 v35, 0x0 + +- const/4 v6, 0x0 ++ :cond_357 ++ :try_start_357 ++ move-object/from16 v0, v18 + +- const/16 v19, 0x0 ++ move-object/from16 v1, v42 + +- const/16 v24, 0x0 ++ move/from16 v2, v30 + +- :cond_2fd +- :try_start_2fd +- move-object/from16 v0, v30 +- +- move/from16 v1, v19 +- +- invoke-virtual {v9, v0, v1, v7}, Ljava/io/DataInputStream;->read([BII)I +- :try_end_304 +- .catchall {:try_start_2fd .. :try_end_304} :catchall_3d3 +- .catch Ljava/io/IOException; {:try_start_2fd .. :try_end_304} :catch_3b2 ++ move/from16 v3, v16 + +- move-result v6 ++ invoke-virtual {v0, v1, v2, v3}, Ljava/io/DataInputStream;->read([BII)I ++ :try_end_362 ++ .catchall {:try_start_357 .. :try_end_362} :catchall_42b ++ .catch Ljava/io/IOException; {:try_start_357 .. :try_end_362} :catch_40a + +- if-lez v6, :cond_30a ++ move-result v15 + +- sub-int/2addr v7, v6 ++ if-lez v15, :cond_369 + +- add-int v19, v19, v6 ++ sub-int v16, v16, v15 + +- :cond_30a +- if-ltz v6, :cond_30e ++ add-int v30, v30, v15 + +- if-gtz v7, :cond_2fd ++ :cond_369 ++ if-ltz v15, :cond_36d + +- :cond_30e +- :goto_30e +- const/16 v34, -0x1 ++ if-gtz v16, :cond_357 + +- move/from16 v0, v34 ++ :cond_36d ++ :goto_36d ++ const/4 v5, -0x1 + +- if-ne v6, v0, :cond_3d8 ++ if-ne v15, v5, :cond_430 + +- if-lez v19, :cond_3d8 ++ if-lez v30, :cond_430 + +- if-nez v24, :cond_3d8 ++ if-nez v35, :cond_430 + +- :try_start_318 +- move/from16 v0, v19 ++ :try_start_374 ++ move/from16 v0, v30 + +- new-array v5, v0, [B ++ new-array v14, v0, [B + +- const/16 v34, 0x0 ++ const/4 v5, 0x0 + +- const/16 v35, 0x0 ++ const/4 v6, 0x0 + +- move-object/from16 v0, v30 ++ move-object/from16 v0, v42 + +- move/from16 v1, v34 ++ move/from16 v1, v30 + +- move/from16 v2, v35 ++ invoke-static {v0, v5, v14, v6, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V + +- move/from16 v3, v19 ++ const-string v5, "Mms:transaction" + +- invoke-static {v0, v1, v5, v2, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V ++ new-instance v6, Ljava/lang/StringBuilder; + +- const-string v34, "Mms:transaction" ++ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V + +- new-instance v35, Ljava/lang/StringBuilder; ++ const-string v7, "httpConnection: Chunked response length [" + +- invoke-direct/range {v35 .. v35}, Ljava/lang/StringBuilder;->()V ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- const-string v36, "httpConnection: Chunked response length [" ++ move-result-object v6 + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-static/range {v30 .. v30}, Ljava/lang/Integer;->toString(I)Ljava/lang/String; + +- move-result-object v35 ++ move-result-object v7 + +- invoke-static/range {v19 .. v19}, Ljava/lang/Integer;->toString(I)Ljava/lang/String; ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v36 ++ move-result-object v6 + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ const-string v7, "]" + +- move-result-object v35 ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- const-string v36, "]" ++ move-result-object v6 + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v35 ++ move-result-object v6 + +- invoke-virtual/range {v35 .. v35}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-static {v5, v6}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_3a3 ++ .catchall {:try_start_374 .. :try_end_3a3} :catchall_42b + +- move-result-object v35 ++ :goto_3a3 ++ :try_start_3a3 ++ invoke-virtual/range {v18 .. v18}, Ljava/io/DataInputStream;->close()V ++ :try_end_3a6 ++ .catchall {:try_start_3a3 .. :try_end_3a6} :catchall_3d1 ++ .catch Ljava/io/IOException; {:try_start_3a3 .. :try_end_3a6} :catch_439 + +- invoke-static/range {v34 .. v35}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I +- :try_end_34d +- .catchall {:try_start_318 .. :try_end_34d} :catchall_3d3 ++ :cond_3a6 ++ :goto_3a6 ++ if-eqz v20, :cond_3ab + +- :goto_34d +- :try_start_34d +- invoke-virtual {v9}, Ljava/io/DataInputStream;->close()V +- :try_end_350 +- .catchall {:try_start_34d .. :try_end_350} :catchall_37b +- .catch Ljava/io/IOException; {:try_start_34d .. :try_end_350} :catch_3e1 ++ :try_start_3a8 ++ invoke-interface/range {v20 .. v20}, Lorg/apache/http/HttpEntity;->consumeContent()V ++ :try_end_3ab ++ .catchall {:try_start_3a8 .. :try_end_3ab} :catchall_4a3 ++ .catch Ljava/net/URISyntaxException; {:try_start_3a8 .. :try_end_3ab} :catch_2f5 ++ .catch Ljava/lang/IllegalStateException; {:try_start_3a8 .. :try_end_3ab} :catch_3d8 ++ .catch Ljava/lang/IllegalArgumentException; {:try_start_3a8 .. :try_end_3ab} :catch_476 ++ .catch Ljava/net/SocketException; {:try_start_3a8 .. :try_end_3ab} :catch_485 ++ .catch Ljava/lang/Exception; {:try_start_3a8 .. :try_end_3ab} :catch_494 + +- :cond_350 +- :goto_350 +- if-eqz v11, :cond_355 ++ :cond_3ab ++ if-eqz v17, :cond_1bd + +- :try_start_352 +- invoke-interface {v11}, Lorg/apache/http/HttpEntity;->consumeContent()V +- :try_end_355 +- .catchall {:try_start_352 .. :try_end_355} :catchall_445 +- .catch Ljava/net/URISyntaxException; {:try_start_352 .. :try_end_355} :catch_29b +- .catch Ljava/lang/IllegalStateException; {:try_start_352 .. :try_end_355} :catch_382 +- .catch Ljava/lang/IllegalArgumentException; {:try_start_352 .. :try_end_355} :catch_41e +- .catch Ljava/net/SocketException; {:try_start_352 .. :try_end_355} :catch_42b +- .catch Ljava/lang/Exception; {:try_start_352 .. :try_end_355} :catch_438 ++ invoke-virtual/range {v17 .. v17}, Landroid/net/http/AndroidHttpClient;->close()V + +- :cond_355 +- if-eqz v8, :cond_13d ++ goto/16 :goto_1bd + +- invoke-virtual {v8}, Landroid/net/http/AndroidHttpClient;->close()V ++ :catch_3b2 ++ move-exception v19 + +- goto/16 :goto_13d ++ :try_start_3b3 ++ const-string v5, "Mms:transaction" + +- :catch_35c +- move-exception v10 ++ new-instance v6, Ljava/lang/StringBuilder; + +- :try_start_35d +- const-string v34, "Mms:transaction" ++ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V + +- new-instance v35, Ljava/lang/StringBuilder; ++ const-string v7, "Error closing input stream: " + +- invoke-direct/range {v35 .. v35}, Ljava/lang/StringBuilder;->()V ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- const-string v36, "Error closing input stream: " ++ move-result-object v6 + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v19 .. v19}, Ljava/io/IOException;->getMessage()Ljava/lang/String; + +- move-result-object v35 ++ move-result-object v7 + +- invoke-virtual {v10}, Ljava/io/IOException;->getMessage()Ljava/lang/String; ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v36 ++ move-result-object v6 + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v35 ++ move-result-object v6 + +- invoke-virtual/range {v35 .. v35}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-static {v5, v6}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_3cf ++ .catchall {:try_start_3b3 .. :try_end_3cf} :catchall_3d1 + +- move-result-object v35 ++ goto/16 :goto_330 + +- invoke-static/range {v34 .. v35}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I +- :try_end_379 +- .catchall {:try_start_35d .. :try_end_379} :catchall_37b ++ :catchall_3d1 ++ move-exception v5 + +- goto/16 :goto_2d8 ++ if-eqz v20, :cond_3d7 + +- :catchall_37b +- move-exception v34 ++ :try_start_3d4 ++ invoke-interface/range {v20 .. v20}, Lorg/apache/http/HttpEntity;->consumeContent()V + +- if-eqz v11, :cond_381 ++ :cond_3d7 ++ throw v5 ++ :try_end_3d8 ++ .catchall {:try_start_3d4 .. :try_end_3d8} :catchall_4a3 ++ .catch Ljava/net/URISyntaxException; {:try_start_3d4 .. :try_end_3d8} :catch_2f5 ++ .catch Ljava/lang/IllegalStateException; {:try_start_3d4 .. :try_end_3d8} :catch_3d8 ++ .catch Ljava/lang/IllegalArgumentException; {:try_start_3d4 .. :try_end_3d8} :catch_476 ++ .catch Ljava/net/SocketException; {:try_start_3d4 .. :try_end_3d8} :catch_485 ++ .catch Ljava/lang/Exception; {:try_start_3d4 .. :try_end_3d8} :catch_494 + +- :try_start_37e +- invoke-interface {v11}, Lorg/apache/http/HttpEntity;->consumeContent()V ++ :catch_3d8 ++ move-exception v19 + +- :cond_381 +- throw v34 +- :try_end_382 +- .catchall {:try_start_37e .. :try_end_382} :catchall_445 +- .catch Ljava/net/URISyntaxException; {:try_start_37e .. :try_end_382} :catch_29b +- .catch Ljava/lang/IllegalStateException; {:try_start_37e .. :try_end_382} :catch_382 +- .catch Ljava/lang/IllegalArgumentException; {:try_start_37e .. :try_end_382} :catch_41e +- .catch Ljava/net/SocketException; {:try_start_37e .. :try_end_382} :catch_42b +- .catch Ljava/lang/Exception; {:try_start_37e .. :try_end_382} :catch_438 ++ :try_start_3d9 ++ move-object/from16 v0, v19 + +- :catch_382 +- move-exception v10 ++ move-object/from16 v1, p3 + +- :try_start_383 +- move-object/from16 v0, p3 ++ invoke-static {v0, v1}, Lcom/android/mms/transaction/HttpUtils;->handleHttpConnectionException(Ljava/lang/Exception;Ljava/lang/String;)V ++ :try_end_3e0 ++ .catchall {:try_start_3d9 .. :try_end_3e0} :catchall_4a3 + +- invoke-static {v10, v0}, Lcom/android/mms/transaction/HttpUtils;->handleHttpConnectionException(Ljava/lang/Exception;Ljava/lang/String;)V +- :try_end_388 +- .catchall {:try_start_383 .. :try_end_388} :catchall_445 ++ if-eqz v17, :cond_302 + +- if-eqz v8, :cond_2a6 ++ invoke-virtual/range {v17 .. v17}, Landroid/net/http/AndroidHttpClient;->close()V + +- invoke-virtual {v8}, Landroid/net/http/AndroidHttpClient;->close()V ++ goto/16 :goto_302 + +- goto/16 :goto_2a6 ++ :catchall_3e7 ++ move-exception v5 + +- :catchall_38f +- move-exception v34 ++ :try_start_3e8 ++ invoke-virtual/range {v18 .. v18}, Ljava/io/DataInputStream;->close()V ++ :try_end_3eb ++ .catchall {:try_start_3e8 .. :try_end_3eb} :catchall_3d1 ++ .catch Ljava/io/IOException; {:try_start_3e8 .. :try_end_3eb} :catch_3ec + +- :try_start_390 +- invoke-virtual {v9}, Ljava/io/DataInputStream;->close()V +- :try_end_393 +- .catchall {:try_start_390 .. :try_end_393} :catchall_37b +- .catch Ljava/io/IOException; {:try_start_390 .. :try_end_393} :catch_394 ++ :goto_3eb ++ :try_start_3eb ++ throw v5 + +- :goto_393 +- :try_start_393 +- throw v34 ++ :catch_3ec ++ move-exception v19 + +- :catch_394 +- move-exception v10 ++ const-string v6, "Mms:transaction" + +- const-string v35, "Mms:transaction" ++ new-instance v7, Ljava/lang/StringBuilder; + +- new-instance v36, Ljava/lang/StringBuilder; ++ invoke-direct {v7}, Ljava/lang/StringBuilder;->()V + +- invoke-direct/range {v36 .. v36}, Ljava/lang/StringBuilder;->()V ++ const-string v8, "Error closing input stream: " + +- const-string v37, "Error closing input stream: " ++ invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- invoke-virtual/range {v36 .. v37}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ move-result-object v7 + +- move-result-object v36 ++ invoke-virtual/range {v19 .. v19}, Ljava/io/IOException;->getMessage()Ljava/lang/String; + +- invoke-virtual {v10}, Ljava/io/IOException;->getMessage()Ljava/lang/String; ++ move-result-object v8 + +- move-result-object v37 ++ invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- invoke-virtual/range {v36 .. v37}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ move-result-object v7 + +- move-result-object v36 ++ invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- invoke-virtual/range {v36 .. v36}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ move-result-object v7 + +- move-result-object v36 ++ invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_409 ++ .catchall {:try_start_3eb .. :try_end_409} :catchall_3d1 + +- invoke-static/range {v35 .. v36}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I +- :try_end_3b1 +- .catchall {:try_start_393 .. :try_end_3b1} :catchall_37b ++ goto :goto_3eb + +- goto :goto_393 ++ :catch_40a ++ move-exception v19 + +- :catch_3b2 +- move-exception v10 ++ const/16 v35, 0x1 + +- const/16 v24, 0x1 ++ :try_start_40d ++ const-string v5, "Mms:transaction" + +- :try_start_3b5 +- const-string v34, "Mms:transaction" ++ new-instance v6, Ljava/lang/StringBuilder; + +- new-instance v35, Ljava/lang/StringBuilder; ++ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V + +- invoke-direct/range {v35 .. v35}, Ljava/lang/StringBuilder;->()V ++ const-string v7, "httpConnection: error reading input stream" + +- const-string v36, "httpConnection: error reading input stream" ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ move-result-object v6 + +- move-result-object v35 ++ invoke-virtual/range {v19 .. v19}, Ljava/io/IOException;->getMessage()Ljava/lang/String; + +- invoke-virtual {v10}, Ljava/io/IOException;->getMessage()Ljava/lang/String; ++ move-result-object v7 + +- move-result-object v36 ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ move-result-object v6 + +- move-result-object v35 ++ invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- invoke-virtual/range {v35 .. v35}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ move-result-object v6 + +- move-result-object v35 ++ invoke-static {v5, v6}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_429 ++ .catchall {:try_start_40d .. :try_end_429} :catchall_42b + +- invoke-static/range {v34 .. v35}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I +- :try_end_3d1 +- .catchall {:try_start_3b5 .. :try_end_3d1} :catchall_3d3 ++ goto/16 :goto_36d + +- goto/16 :goto_30e ++ :catchall_42b ++ move-exception v5 + +- :catchall_3d3 +- move-exception v34 ++ :try_start_42c ++ invoke-virtual/range {v18 .. v18}, Ljava/io/DataInputStream;->close()V ++ :try_end_42f ++ .catchall {:try_start_42c .. :try_end_42f} :catchall_3d1 ++ .catch Ljava/io/IOException; {:try_start_42c .. :try_end_42f} :catch_458 + +- :try_start_3d4 +- invoke-virtual {v9}, Ljava/io/DataInputStream;->close()V +- :try_end_3d7 +- .catchall {:try_start_3d4 .. :try_end_3d7} :catchall_37b +- .catch Ljava/io/IOException; {:try_start_3d4 .. :try_end_3d7} :catch_400 +- +- :goto_3d7 +- :try_start_3d7 +- throw v34 +- :try_end_3d8 +- .catchall {:try_start_3d7 .. :try_end_3d8} :catchall_37b ++ :goto_42f ++ :try_start_42f ++ throw v5 ++ :try_end_430 ++ .catchall {:try_start_42f .. :try_end_430} :catchall_3d1 + +- :cond_3d8 +- :try_start_3d8 +- const-string v34, "Mms:transaction" ++ :cond_430 ++ :try_start_430 ++ const-string v5, "Mms:transaction" + +- const-string v35, "httpConnection: Response entity too large or empty" ++ const-string v6, "httpConnection: Response entity too large or empty" + +- invoke-static/range {v34 .. v35}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I +- :try_end_3df +- .catchall {:try_start_3d8 .. :try_end_3df} :catchall_3d3 ++ invoke-static {v5, v6}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_437 ++ .catchall {:try_start_430 .. :try_end_437} :catchall_42b + +- goto/16 :goto_34d ++ goto/16 :goto_3a3 + +- :catch_3e1 +- move-exception v10 ++ :catch_439 ++ move-exception v19 + +- :try_start_3e2 +- const-string v34, "Mms:transaction" ++ :try_start_43a ++ const-string v5, "Mms:transaction" + +- new-instance v35, Ljava/lang/StringBuilder; ++ new-instance v6, Ljava/lang/StringBuilder; + +- invoke-direct/range {v35 .. v35}, Ljava/lang/StringBuilder;->()V ++ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V + +- const-string v36, "Error closing input stream: " ++ const-string v7, "Error closing input stream: " + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v35 ++ move-result-object v6 + +- invoke-virtual {v10}, Ljava/io/IOException;->getMessage()Ljava/lang/String; ++ invoke-virtual/range {v19 .. v19}, Ljava/io/IOException;->getMessage()Ljava/lang/String; + +- move-result-object v36 ++ move-result-object v7 + +- invoke-virtual/range {v35 .. v36}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v35 ++ move-result-object v6 + +- invoke-virtual/range {v35 .. v35}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v35 ++ move-result-object v6 + +- invoke-static/range {v34 .. v35}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ invoke-static {v5, v6}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I + +- goto/16 :goto_350 ++ goto/16 :goto_3a6 + +- :catch_400 +- move-exception v10 ++ :catch_458 ++ move-exception v19 + +- const-string v35, "Mms:transaction" ++ const-string v6, "Mms:transaction" + +- new-instance v36, Ljava/lang/StringBuilder; ++ new-instance v7, Ljava/lang/StringBuilder; + +- invoke-direct/range {v36 .. v36}, Ljava/lang/StringBuilder;->()V ++ invoke-direct {v7}, Ljava/lang/StringBuilder;->()V + +- const-string v37, "Error closing input stream: " ++ const-string v8, "Error closing input stream: " + +- invoke-virtual/range {v36 .. v37}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v36 ++ move-result-object v7 + +- invoke-virtual {v10}, Ljava/io/IOException;->getMessage()Ljava/lang/String; ++ invoke-virtual/range {v19 .. v19}, Ljava/io/IOException;->getMessage()Ljava/lang/String; + +- move-result-object v37 ++ move-result-object v8 + +- invoke-virtual/range {v36 .. v37}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v36 ++ move-result-object v7 + +- invoke-virtual/range {v36 .. v36}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v36 ++ move-result-object v7 + +- invoke-static/range {v35 .. v36}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I +- :try_end_41d +- .catchall {:try_start_3e2 .. :try_end_41d} :catchall_37b ++ invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_475 ++ .catchall {:try_start_43a .. :try_end_475} :catchall_3d1 + +- goto :goto_3d7 ++ goto :goto_42f + +- :catch_41e +- move-exception v10 ++ :catch_476 ++ move-exception v19 + +- :try_start_41f +- move-object/from16 v0, p3 ++ :try_start_477 ++ move-object/from16 v0, v19 ++ ++ move-object/from16 v1, p3 + +- invoke-static {v10, v0}, Lcom/android/mms/transaction/HttpUtils;->handleHttpConnectionException(Ljava/lang/Exception;Ljava/lang/String;)V +- :try_end_424 +- .catchall {:try_start_41f .. :try_end_424} :catchall_445 ++ invoke-static {v0, v1}, Lcom/android/mms/transaction/HttpUtils;->handleHttpConnectionException(Ljava/lang/Exception;Ljava/lang/String;)V ++ :try_end_47e ++ .catchall {:try_start_477 .. :try_end_47e} :catchall_4a3 + +- if-eqz v8, :cond_2a6 ++ if-eqz v17, :cond_302 + +- invoke-virtual {v8}, Landroid/net/http/AndroidHttpClient;->close()V ++ invoke-virtual/range {v17 .. v17}, Landroid/net/http/AndroidHttpClient;->close()V + +- goto/16 :goto_2a6 ++ goto/16 :goto_302 + +- :catch_42b +- move-exception v10 ++ :catch_485 ++ move-exception v19 + +- :try_start_42c +- move-object/from16 v0, p3 ++ :try_start_486 ++ move-object/from16 v0, v19 ++ ++ move-object/from16 v1, p3 + +- invoke-static {v10, v0}, Lcom/android/mms/transaction/HttpUtils;->handleHttpConnectionException(Ljava/lang/Exception;Ljava/lang/String;)V +- :try_end_431 +- .catchall {:try_start_42c .. :try_end_431} :catchall_445 ++ invoke-static {v0, v1}, Lcom/android/mms/transaction/HttpUtils;->handleHttpConnectionException(Ljava/lang/Exception;Ljava/lang/String;)V ++ :try_end_48d ++ .catchall {:try_start_486 .. :try_end_48d} :catchall_4a3 + +- if-eqz v8, :cond_2a6 ++ if-eqz v17, :cond_302 + +- invoke-virtual {v8}, Landroid/net/http/AndroidHttpClient;->close()V ++ invoke-virtual/range {v17 .. v17}, Landroid/net/http/AndroidHttpClient;->close()V + +- goto/16 :goto_2a6 ++ goto/16 :goto_302 + +- :catch_438 +- move-exception v10 ++ :catch_494 ++ move-exception v19 + +- :try_start_439 +- move-object/from16 v0, p3 ++ :try_start_495 ++ move-object/from16 v0, v19 ++ ++ move-object/from16 v1, p3 + +- invoke-static {v10, v0}, Lcom/android/mms/transaction/HttpUtils;->handleHttpConnectionException(Ljava/lang/Exception;Ljava/lang/String;)V +- :try_end_43e +- .catchall {:try_start_439 .. :try_end_43e} :catchall_445 ++ invoke-static {v0, v1}, Lcom/android/mms/transaction/HttpUtils;->handleHttpConnectionException(Ljava/lang/Exception;Ljava/lang/String;)V ++ :try_end_49c ++ .catchall {:try_start_495 .. :try_end_49c} :catchall_4a3 + +- if-eqz v8, :cond_2a6 ++ if-eqz v17, :cond_302 + +- invoke-virtual {v8}, Landroid/net/http/AndroidHttpClient;->close()V ++ invoke-virtual/range {v17 .. v17}, Landroid/net/http/AndroidHttpClient;->close()V + +- goto/16 :goto_2a6 ++ goto/16 :goto_302 + +- :catchall_445 +- move-exception v34 ++ :catchall_4a3 ++ move-exception v5 + +- if-eqz v8, :cond_44b ++ if-eqz v17, :cond_4a9 + +- invoke-virtual {v8}, Landroid/net/http/AndroidHttpClient;->close()V ++ invoke-virtual/range {v17 .. v17}, Landroid/net/http/AndroidHttpClient;->close()V + +- :cond_44b +- throw v34 ++ :cond_4a9 ++ throw v5 + +- :pswitch_data_44c ++ :pswitch_data_4aa + .packed-switch 0x1 +- :pswitch_14e +- :pswitch_24e ++ :pswitch_1be ++ :pswitch_2ae + .end packed-switch + .end method diff --git a/patches/openpdroid/4.3/.aosp-ever/20130810/core.patch b/patches/openpdroid/4.3/.aosp-ever/20130810/core.patch new file mode 100644 index 0000000..5ef3bb1 --- /dev/null +++ b/patches/openpdroid/4.3/.aosp-ever/20130810/core.patch @@ -0,0 +1,1786 @@ +diff -Npru stock-core/smali/java/lang/PrivacyInputStream.smali pdroid-core/smali/java/lang/PrivacyInputStream.smali +--- stock-core/smali/java/lang/PrivacyInputStream.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-core/smali/java/lang/PrivacyInputStream.smali 2013-08-10 20:37:50.503213774 -0700 +@@ -0,0 +1,67 @@ ++.class public Ljava/lang/PrivacyInputStream; ++.super Ljava/io/InputStream; ++.source "PrivacyInputStream.java" ++ ++ ++# direct methods ++.method public constructor ()V ++ .registers 1 ++ ++ invoke-direct {p0}, Ljava/io/InputStream;->()V ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public close()V ++ .registers 1 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Ljava/io/IOException; ++ } ++ .end annotation ++ ++ invoke-super {p0}, Ljava/io/InputStream;->close()V ++ ++ return-void ++.end method ++ ++.method public read()I ++ .registers 2 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Ljava/io/IOException; ++ } ++ .end annotation ++ ++ const/4 v0, -0x1 ++ ++ return v0 ++.end method ++ ++.method public read([B)I ++ .registers 3 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Ljava/io/IOException; ++ } ++ .end annotation ++ ++ const/4 v0, -0x1 ++ ++ return v0 ++.end method ++ ++.method public read([BII)I ++ .registers 5 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Ljava/io/IOException; ++ } ++ .end annotation ++ ++ const/4 v0, -0x1 ++ ++ return v0 ++.end method +diff -Npru stock-core/smali/java/lang/PrivacyProcessManager$PrivacyFileReader.smali pdroid-core/smali/java/lang/PrivacyProcessManager$PrivacyFileReader.smali +--- stock-core/smali/java/lang/PrivacyProcessManager$PrivacyFileReader.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-core/smali/java/lang/PrivacyProcessManager$PrivacyFileReader.smali 2013-08-10 20:37:50.507213773 -0700 +@@ -0,0 +1,91 @@ ++.class public Ljava/lang/PrivacyProcessManager$PrivacyFileReader; ++.super Ljava/lang/Object; ++.source "PrivacyProcessManager.java" ++ ++ ++# annotations ++.annotation system Ldalvik/annotation/EnclosingClass; ++ value = Ljava/lang/PrivacyProcessManager; ++.end annotation ++ ++.annotation system Ldalvik/annotation/InnerClass; ++ accessFlags = 0x9 ++ name = "PrivacyFileReader" ++.end annotation ++ ++ ++# instance fields ++.field private buffReader:Ljava/io/BufferedReader; ++ ++.field private inputStream:Ljava/io/FileInputStream; ++ ++ ++# direct methods ++.method public constructor (Ljava/lang/String;)V ++ .registers 5 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Ljava/io/FileNotFoundException; ++ } ++ .end annotation ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ new-instance v0, Ljava/io/FileInputStream; ++ ++ new-instance v1, Ljava/io/File; ++ ++ invoke-direct {v1, p1}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-direct {v0, v1}, Ljava/io/FileInputStream;->(Ljava/io/File;)V ++ ++ iput-object v0, p0, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->inputStream:Ljava/io/FileInputStream; ++ ++ new-instance v0, Ljava/io/BufferedReader; ++ ++ new-instance v1, Ljava/io/InputStreamReader; ++ ++ iget-object v2, p0, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->inputStream:Ljava/io/FileInputStream; ++ ++ invoke-direct {v1, v2}, Ljava/io/InputStreamReader;->(Ljava/io/InputStream;)V ++ ++ invoke-direct {v0, v1}, Ljava/io/BufferedReader;->(Ljava/io/Reader;)V ++ ++ iput-object v0, p0, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->buffReader:Ljava/io/BufferedReader; ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public close()V ++ .registers 2 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Ljava/io/IOException; ++ } ++ .end annotation ++ ++ iget-object v0, p0, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->inputStream:Ljava/io/FileInputStream; ++ ++ invoke-virtual {v0}, Ljava/io/FileInputStream;->close()V ++ ++ return-void ++.end method ++ ++.method public readLine()Ljava/lang/String; ++ .registers 2 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Ljava/io/IOException; ++ } ++ .end annotation ++ ++ iget-object v0, p0, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->buffReader:Ljava/io/BufferedReader; ++ ++ invoke-virtual {v0}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method +diff -Npru stock-core/smali/java/lang/PrivacyProcessManager.smali pdroid-core/smali/java/lang/PrivacyProcessManager.smali +--- stock-core/smali/java/lang/PrivacyProcessManager.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-core/smali/java/lang/PrivacyProcessManager.smali 2013-08-10 20:37:50.507213773 -0700 +@@ -0,0 +1,479 @@ ++.class public Ljava/lang/PrivacyProcessManager; ++.super Ljava/lang/Object; ++.source "PrivacyProcessManager.java" ++ ++ ++# annotations ++.annotation system Ldalvik/annotation/MemberClasses; ++ value = { ++ Ljava/lang/PrivacyProcessManager$PrivacyFileReader; ++ } ++.end annotation ++ ++ ++# static fields ++.field private static final GET_COMMAND_WAIT_MS:I = 0xa ++ ++.field private static final GET_COMMAND_WAIT_STEP:I = 0x5 ++ ++ ++# direct methods ++.method public constructor ()V ++ .registers 1 ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ return-void ++.end method ++ ++.method private static getPackageName()Ljava/lang/String; ++ .registers 3 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Ljava/io/IOException;, ++ Ljava/io/FileNotFoundException; ++ } ++ .end annotation ++ ++ new-instance v0, Ljava/lang/PrivacyProcessManager$PrivacyFileReader; ++ ++ const-string v2, "/proc/self/cmdline" ++ ++ invoke-direct {v0, v2}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v0}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->readLine()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2}, Ljava/lang/String;->trim()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v0}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->close()V ++ ++ return-object v1 ++.end method ++ ++.method public static hasPrivacyPermission(Ljava/lang/String;)Z ++ .registers 12 ++ ++ const/4 v6, 0x0 ++ ++ const/4 v5, 0x1 ++ ++ :try_start_2 ++ invoke-static {}, Ljava/lang/PrivacyProcessManager;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ sget-object v8, Ljava/lang/System;->out:Ljava/io/PrintStream; ++ ++ new-instance v9, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v9}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v10, "PrivacyProcessManager: got package name: " ++ ++ invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v9 ++ ++ invoke-virtual {v9, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v9 ++ ++ invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v9 ++ ++ invoke-virtual {v8, v9}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V ++ :try_end_1e ++ .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_1e} :catch_57 ++ ++ :goto_1e ++ const/4 v2, 0x0 ++ ++ :try_start_1f ++ new-instance v8, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v8}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v9, "/data/system/privacy/" ++ ++ invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v8 ++ ++ invoke-virtual {v8, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v8 ++ ++ const-string v9, "/" ++ ++ invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v8 ++ ++ invoke-virtual {v8, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v8 ++ ++ invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v7 ++ ++ new-instance v3, Ljava/lang/PrivacyProcessManager$PrivacyFileReader; ++ ++ invoke-direct {v3, v7}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->(Ljava/lang/String;)V ++ :try_end_41 ++ .catch Ljava/io/FileNotFoundException; {:try_start_1f .. :try_end_41} :catch_85 ++ .catch Ljava/lang/Exception; {:try_start_1f .. :try_end_41} :catch_65 ++ ++ :try_start_41 ++ invoke-virtual {v3}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->readLine()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ if-eqz v4, :cond_63 ++ ++ invoke-virtual {v4}, Ljava/lang/String;->trim()Ljava/lang/String; ++ ++ move-result-object v8 ++ ++ invoke-static {v8}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I ++ ++ move-result v0 ++ ++ :goto_4f ++ invoke-virtual {v3}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->close()V ++ :try_end_52 ++ .catch Ljava/io/FileNotFoundException; {:try_start_41 .. :try_end_52} :catch_87 ++ .catch Ljava/lang/Exception; {:try_start_41 .. :try_end_52} :catch_82 ++ ++ const/4 v8, 0x1 ++ ++ if-ne v0, v8, :cond_56 ++ ++ const/4 v5, 0x0 ++ ++ :cond_56 ++ :goto_56 ++ return v5 ++ ++ :catch_57 ++ move-exception v1 ++ ++ sget-object v8, Ljava/lang/System;->err:Ljava/io/PrintStream; ++ ++ const-string v9, "PrivacyProcessManager: could not find package name" ++ ++ invoke-virtual {v8, v9}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V ++ ++ invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V ++ ++ goto :goto_1e ++ ++ :cond_63 ++ const/4 v0, -0x1 ++ ++ goto :goto_4f ++ ++ :catch_65 ++ move-exception v1 ++ ++ :goto_66 ++ sget-object v8, Ljava/lang/System;->err:Ljava/io/PrintStream; ++ ++ new-instance v9, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v9}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v10, "PrivacyProcessManager: could not read privacy settings: " ++ ++ invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v9 ++ ++ invoke-virtual {v9, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v9 ++ ++ invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v9 ++ ++ invoke-virtual {v8, v9}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V ++ ++ invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V ++ ++ goto :goto_56 ++ ++ :catch_82 ++ move-exception v1 ++ ++ move-object v2, v3 ++ ++ goto :goto_66 ++ ++ :catch_85 ++ move-exception v8 ++ ++ goto :goto_56 ++ ++ :catch_87 ++ move-exception v8 ++ ++ move-object v2, v3 ++ ++ goto :goto_56 ++.end method ++ ++.method public static hasPrivacyPermission(Ljava/lang/String;I)Z ++ .registers 16 ++ ++ const/4 v7, 0x0 ++ ++ const/4 v6, 0x1 ++ ++ :try_start_2 ++ invoke-static {}, Ljava/lang/PrivacyProcessManager;->getPackageName()Ljava/lang/String; ++ :try_end_5 ++ .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_5} :catch_39 ++ ++ move-result-object v7 ++ ++ :goto_6 ++ const/4 v2, 0x0 ++ ++ :try_start_7 ++ new-instance v11, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v11}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v12, "/proc/" ++ ++ invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v11 ++ ++ invoke-virtual {v11, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v11 ++ ++ const-string v12, "/cmdline" ++ ++ invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v11 ++ ++ invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ new-instance v3, Ljava/lang/PrivacyProcessManager$PrivacyFileReader; ++ ++ invoke-direct {v3, v0}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->(Ljava/lang/String;)V ++ :try_end_25 ++ .catch Ljava/io/FileNotFoundException; {:try_start_7 .. :try_end_25} :catch_b9 ++ .catch Ljava/lang/Exception; {:try_start_7 .. :try_end_25} :catch_97 ++ ++ :try_start_25 ++ const-string v8, "" ++ ++ const/16 v4, 0xa ++ ++ :goto_29 ++ invoke-virtual {v3}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->readLine()Ljava/lang/String; ++ :try_end_2c ++ .catch Ljava/io/FileNotFoundException; {:try_start_25 .. :try_end_2c} :catch_bb ++ .catch Ljava/lang/Exception; {:try_start_25 .. :try_end_2c} :catch_b6 ++ ++ move-result-object v8 ++ ++ if-nez v8, :cond_45 ++ ++ if-ltz v4, :cond_45 ++ ++ const-wide/16 v11, 0x5 ++ ++ :try_start_33 ++ invoke-static {v11, v12}, Ljava/lang/Thread;->sleep(J)V ++ :try_end_36 ++ .catch Ljava/lang/InterruptedException; {:try_start_33 .. :try_end_36} :catch_b4 ++ .catch Ljava/io/FileNotFoundException; {:try_start_33 .. :try_end_36} :catch_bb ++ .catch Ljava/lang/Exception; {:try_start_33 .. :try_end_36} :catch_b6 ++ ++ :goto_36 ++ add-int/lit8 v4, v4, -0x5 ++ ++ goto :goto_29 ++ ++ :catch_39 ++ move-exception v1 ++ ++ sget-object v11, Ljava/lang/System;->err:Ljava/io/PrintStream; ++ ++ const-string v12, "PrivacyProcessManager: could not find package name or UID" ++ ++ invoke-virtual {v11, v12}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V ++ ++ invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V ++ ++ goto :goto_6 ++ ++ :cond_45 ++ :try_start_45 ++ invoke-virtual {v3}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->close()V ++ ++ if-eqz v8, :cond_be ++ ++ invoke-virtual {v8}, Ljava/lang/String;->trim()Ljava/lang/String; ++ ++ move-result-object v11 ++ ++ invoke-virtual {v11}, Ljava/lang/String;->length()I ++ ++ move-result v11 ++ ++ const/4 v12, 0x5 ++ ++ if-le v11, v12, :cond_be ++ ++ const-string v11, "logcat" ++ ++ invoke-virtual {v8, v11}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z ++ ++ move-result v11 ++ ++ if-eqz v11, :cond_be ++ ++ new-instance v11, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v11}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v12, "/data/system/privacy/" ++ ++ invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v11 ++ ++ invoke-virtual {v11, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v11 ++ ++ const-string v12, "/" ++ ++ invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v11 ++ ++ invoke-virtual {v11, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v11 ++ ++ invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v9 ++ ++ new-instance v2, Ljava/lang/PrivacyProcessManager$PrivacyFileReader; ++ ++ invoke-direct {v2, v9}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->(Ljava/lang/String;)V ++ :try_end_7f ++ .catch Ljava/io/FileNotFoundException; {:try_start_45 .. :try_end_7f} :catch_bb ++ .catch Ljava/lang/Exception; {:try_start_45 .. :try_end_7f} :catch_b6 ++ ++ :try_start_7f ++ invoke-virtual {v2}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->readLine()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ if-eqz v5, :cond_95 ++ ++ invoke-virtual {v5}, Ljava/lang/String;->trim()Ljava/lang/String; ++ ++ move-result-object v11 ++ ++ invoke-static {v11}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I ++ ++ move-result v10 ++ ++ :goto_8d ++ invoke-virtual {v2}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->close()V ++ :try_end_90 ++ .catch Ljava/io/FileNotFoundException; {:try_start_7f .. :try_end_90} :catch_b9 ++ .catch Ljava/lang/Exception; {:try_start_7f .. :try_end_90} :catch_97 ++ ++ const/4 v11, 0x1 ++ ++ if-ne v10, v11, :cond_94 ++ ++ const/4 v6, 0x0 ++ ++ :cond_94 ++ :goto_94 ++ return v6 ++ ++ :cond_95 ++ const/4 v10, -0x1 ++ ++ goto :goto_8d ++ ++ :catch_97 ++ move-exception v1 ++ ++ :goto_98 ++ sget-object v11, Ljava/lang/System;->err:Ljava/io/PrintStream; ++ ++ new-instance v12, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v12}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v13, "PrivacyProcessManager: could not read privacy settings: " ++ ++ invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v12, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v11, v12}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V ++ ++ invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V ++ ++ goto :goto_94 ++ ++ :catch_b4 ++ move-exception v11 ++ ++ goto :goto_36 ++ ++ :catch_b6 ++ move-exception v1 ++ ++ move-object v2, v3 ++ ++ goto :goto_98 ++ ++ :catch_b9 ++ move-exception v11 ++ ++ goto :goto_94 ++ ++ :catch_bb ++ move-exception v11 ++ ++ move-object v2, v3 ++ ++ goto :goto_94 ++ ++ :cond_be ++ move-object v2, v3 ++ ++ goto :goto_94 ++.end method +diff -Npru stock-core/smali/java/lang/ProcessManager$ProcessImpl.smali pdroid-core/smali/java/lang/ProcessManager$ProcessImpl.smali +--- stock-core/smali/java/lang/ProcessManager$ProcessImpl.smali 2013-08-10 20:37:53.539213900 -0700 ++++ pdroid-core/smali/java/lang/ProcessManager$ProcessImpl.smali 2013-08-10 20:37:50.515213774 -0700 +@@ -21,6 +21,8 @@ + + .field private final exitValueMutex:Ljava/lang/Object; + ++.field private fakeProcess:Z ++ + .field private final inputStream:Ljava/io/InputStream; + + .field private final outputStream:Ljava/io/OutputStream; +@@ -36,6 +38,70 @@ + + invoke-direct {p0}, Ljava/lang/Process;->()V + ++ const/4 v0, 0x0 ++ ++ iput-boolean v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->fakeProcess:Z ++ ++ iput-object v1, p0, Ljava/lang/ProcessManager$ProcessImpl;->exitValue:Ljava/lang/Integer; ++ ++ new-instance v0, Ljava/lang/Object; ++ ++ invoke-direct {v0}, Ljava/lang/Object;->()V ++ ++ iput-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->exitValueMutex:Ljava/lang/Object; ++ ++ iput p1, p0, Ljava/lang/ProcessManager$ProcessImpl;->pid:I ++ ++ new-instance v0, Ljava/lang/ProcessManager$ProcessInputStream; ++ ++ invoke-direct {v0, p4, v1}, Ljava/lang/ProcessManager$ProcessInputStream;->(Ljava/io/FileDescriptor;Ljava/lang/ProcessManager$1;)V ++ ++ iput-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->errorStream:Ljava/io/InputStream; ++ ++ const-string v0, "systemLogsSetting" ++ ++ invoke-static {v0, p1}, Ljava/lang/PrivacyProcessManager;->hasPrivacyPermission(Ljava/lang/String;I)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_30 ++ ++ new-instance v0, Ljava/lang/ProcessManager$ProcessInputStream; ++ ++ invoke-direct {v0, p2, v1}, Ljava/lang/ProcessManager$ProcessInputStream;->(Ljava/io/FileDescriptor;Ljava/lang/ProcessManager$1;)V ++ ++ iput-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->inputStream:Ljava/io/InputStream; ++ ++ :goto_28 ++ new-instance v0, Ljava/lang/ProcessManager$ProcessOutputStream; ++ ++ invoke-direct {v0, p3, v1}, Ljava/lang/ProcessManager$ProcessOutputStream;->(Ljava/io/FileDescriptor;Ljava/lang/ProcessManager$1;)V ++ ++ iput-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->outputStream:Ljava/io/OutputStream; ++ ++ return-void ++ ++ :cond_30 ++ new-instance v0, Ljava/lang/PrivacyInputStream; ++ ++ invoke-direct {v0}, Ljava/lang/PrivacyInputStream;->()V ++ ++ iput-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->inputStream:Ljava/io/InputStream; ++ ++ goto :goto_28 ++.end method ++ ++.method constructor (ILjava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Z)V ++ .registers 8 ++ ++ const/4 v1, 0x0 ++ ++ invoke-direct {p0}, Ljava/lang/Process;->()V ++ ++ const/4 v0, 0x0 ++ ++ iput-boolean v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->fakeProcess:Z ++ + iput-object v1, p0, Ljava/lang/ProcessManager$ProcessImpl;->exitValue:Ljava/lang/Integer; + + new-instance v0, Ljava/lang/Object; +@@ -52,12 +118,15 @@ + + iput-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->errorStream:Ljava/io/InputStream; + ++ if-eqz p5, :cond_2a ++ + new-instance v0, Ljava/lang/ProcessManager$ProcessInputStream; + + invoke-direct {v0, p2, v1}, Ljava/lang/ProcessManager$ProcessInputStream;->(Ljava/io/FileDescriptor;Ljava/lang/ProcessManager$1;)V + + iput-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->inputStream:Ljava/io/InputStream; + ++ :goto_22 + new-instance v0, Ljava/lang/ProcessManager$ProcessOutputStream; + + invoke-direct {v0, p3, v1}, Ljava/lang/ProcessManager$ProcessOutputStream;->(Ljava/io/FileDescriptor;Ljava/lang/ProcessManager$1;)V +@@ -65,6 +134,19 @@ + iput-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->outputStream:Ljava/io/OutputStream; + + return-void ++ ++ :cond_2a ++ new-instance v0, Ljava/lang/PrivacyInputStream; ++ ++ invoke-direct {v0}, Ljava/lang/PrivacyInputStream;->()V ++ ++ iput-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->inputStream:Ljava/io/InputStream; ++ ++ const/4 v0, 0x1 ++ ++ iput-boolean v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->fakeProcess:Z ++ ++ goto :goto_22 + .end method + + .method static synthetic access$300(Ljava/lang/ProcessManager$ProcessImpl;)I +@@ -86,12 +168,17 @@ + + :try_start_3 + iget-object v1, p0, Ljava/lang/ProcessManager$ProcessImpl;->exitValue:Ljava/lang/Integer; +- :try_end_5 +- .catchall {:try_start_3 .. :try_end_5} :catchall_3b + +- if-nez v1, :cond_10 ++ if-eqz v1, :cond_b ++ ++ iget-boolean v1, p0, Ljava/lang/ProcessManager$ProcessImpl;->fakeProcess:Z ++ :try_end_9 ++ .catchall {:try_start_3 .. :try_end_9} :catchall_3f + +- :try_start_7 ++ if-eqz v1, :cond_14 ++ ++ :cond_b ++ :try_start_b + sget-object v1, Llibcore/io/Libcore;->os:Llibcore/io/Os; + + iget v3, p0, Ljava/lang/ProcessManager$ProcessImpl;->pid:I +@@ -99,16 +186,16 @@ + sget v4, Llibcore/io/OsConstants;->SIGKILL:I + + invoke-interface {v1, v3, v4}, Llibcore/io/Os;->kill(II)V +- :try_end_10 +- .catchall {:try_start_7 .. :try_end_10} :catchall_3b +- .catch Llibcore/io/ErrnoException; {:try_start_7 .. :try_end_10} :catch_21 +- +- :cond_10 +- :goto_10 +- :try_start_10 ++ :try_end_14 ++ .catchall {:try_start_b .. :try_end_14} :catchall_3f ++ .catch Llibcore/io/ErrnoException; {:try_start_b .. :try_end_14} :catch_25 ++ ++ :cond_14 ++ :goto_14 ++ :try_start_14 + monitor-exit v2 +- :try_end_11 +- .catchall {:try_start_10 .. :try_end_11} :catchall_3b ++ :try_end_15 ++ .catchall {:try_start_14 .. :try_end_15} :catchall_3f + + iget-object v1, p0, Ljava/lang/ProcessManager$ProcessImpl;->inputStream:Ljava/io/InputStream; + +@@ -124,10 +211,10 @@ + + return-void + +- :catch_21 ++ :catch_25 + move-exception v0 + +- :try_start_22 ++ :try_start_26 + new-instance v1, Ljava/lang/StringBuilder; + + invoke-direct {v1}, Ljava/lang/StringBuilder;->()V +@@ -150,14 +237,14 @@ + + invoke-static {v1, v0}, Ljava/lang/System;->logI(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto :goto_10 ++ goto :goto_14 + +- :catchall_3b ++ :catchall_3f + move-exception v1 + + monitor-exit v2 +- :try_end_3d +- .catchall {:try_start_22 .. :try_end_3d} :catchall_3b ++ :try_end_41 ++ .catchall {:try_start_26 .. :try_end_41} :catchall_3f + + throw v1 + .end method +@@ -165,14 +252,23 @@ + .method public exitValue()I + .registers 5 + ++ iget-boolean v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->fakeProcess:Z ++ ++ if-eqz v0, :cond_8 ++ ++ const/4 v0, 0x0 ++ ++ invoke-virtual {p0, v0}, Ljava/lang/ProcessManager$ProcessImpl;->setExitValue(I)V ++ ++ :cond_8 + iget-object v1, p0, Ljava/lang/ProcessManager$ProcessImpl;->exitValueMutex:Ljava/lang/Object; + + monitor-enter v1 + +- :try_start_3 ++ :try_start_b + iget-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->exitValue:Ljava/lang/Integer; + +- if-nez v0, :cond_25 ++ if-nez v0, :cond_2d + + new-instance v0, Ljava/lang/IllegalThreadStateException; + +@@ -200,17 +296,17 @@ + + throw v0 + +- :catchall_22 ++ :catchall_2a + move-exception v0 + + monitor-exit v1 +- :try_end_24 +- .catchall {:try_start_3 .. :try_end_24} :catchall_22 ++ :try_end_2c ++ .catchall {:try_start_b .. :try_end_2c} :catchall_2a + + throw v0 + +- :cond_25 +- :try_start_25 ++ :cond_2d ++ :try_start_2d + iget-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->exitValue:Ljava/lang/Integer; + + invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I +@@ -218,8 +314,8 @@ + move-result v0 + + monitor-exit v1 +- :try_end_2c +- .catchall {:try_start_25 .. :try_end_2c} :catchall_22 ++ :try_end_34 ++ .catchall {:try_start_2d .. :try_end_34} :catchall_2a + + return v0 + .end method +diff -Npru stock-core/smali/java/lang/ProcessManager.smali pdroid-core/smali/java/lang/ProcessManager.smali +--- stock-core/smali/java/lang/ProcessManager.smali 2013-08-10 20:37:53.547213899 -0700 ++++ pdroid-core/smali/java/lang/ProcessManager.smali 2013-08-10 20:37:50.523213775 -0700 +@@ -136,6 +136,155 @@ + return-void + .end method + ++.method private containsIpTableCommand(Ljava/lang/String;)Z ++ .registers 10 ++ ++ const/4 v5, 0x0 ++ ++ :try_start_1 ++ sget-object v6, Ljava/lang/System;->out:Ljava/io/PrintStream; ++ ++ const-string v7, "now we\'re in containsIpTableCommand" ++ ++ invoke-virtual {v6, v7}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V ++ ++ new-instance v3, Ljava/io/FileInputStream; ++ ++ invoke-direct {v3, p1}, Ljava/io/FileInputStream;->(Ljava/lang/String;)V ++ ++ new-instance v1, Ljava/io/DataInputStream; ++ ++ invoke-direct {v1, v3}, Ljava/io/DataInputStream;->(Ljava/io/InputStream;)V ++ ++ new-instance v0, Ljava/io/BufferedReader; ++ ++ new-instance v6, Ljava/io/InputStreamReader; ++ ++ invoke-direct {v6, v1}, Ljava/io/InputStreamReader;->(Ljava/io/InputStream;)V ++ ++ invoke-direct {v0, v6}, Ljava/io/BufferedReader;->(Ljava/io/Reader;)V ++ ++ :cond_1c ++ invoke-virtual {v0}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ if-eqz v4, :cond_6a ++ ++ const-string v6, "iptables" ++ ++ invoke-virtual {v4, v6}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z ++ ++ move-result v6 ++ ++ if-nez v6, :cond_32 ++ ++ const-string v6, "ip6tables" ++ ++ invoke-virtual {v4, v6}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z ++ :try_end_2f ++ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_2f} :catch_59 ++ ++ move-result v6 ++ ++ if-eqz v6, :cond_1c ++ ++ :cond_32 ++ :try_start_32 ++ invoke-virtual {v1}, Ljava/io/DataInputStream;->close()V ++ ++ invoke-virtual {v0}, Ljava/io/BufferedReader;->close()V ++ ++ invoke-virtual {v3}, Ljava/io/FileInputStream;->close()V ++ :try_end_3b ++ .catchall {:try_start_32 .. :try_end_3b} :catchall_62 ++ .catch Ljava/io/IOException; {:try_start_32 .. :try_end_3b} :catch_4a ++ ++ const/4 v3, 0x0 ++ ++ const/4 v1, 0x0 ++ ++ const/4 v0, 0x0 ++ ++ :try_start_3e ++ invoke-static {}, Ljava/lang/System;->gc()V ++ ++ :goto_41 ++ sget-object v6, Ljava/lang/System;->out:Ljava/io/PrintStream; ++ ++ const-string v7, "returning true, file contains iptable command" ++ ++ invoke-virtual {v6, v7}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V ++ :try_end_48 ++ .catch Ljava/lang/Exception; {:try_start_3e .. :try_end_48} :catch_59 ++ ++ const/4 v5, 0x1 ++ ++ :goto_49 ++ return v5 ++ ++ :catch_4a ++ move-exception v2 ++ ++ :try_start_4b ++ sget-object v6, Ljava/lang/System;->out:Ljava/io/PrintStream; ++ ++ const-string v7, "got exception while closing streams" ++ ++ invoke-virtual {v6, v7}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V ++ :try_end_52 ++ .catchall {:try_start_4b .. :try_end_52} :catchall_62 ++ ++ const/4 v3, 0x0 ++ ++ const/4 v1, 0x0 ++ ++ const/4 v0, 0x0 ++ ++ :try_start_55 ++ invoke-static {}, Ljava/lang/System;->gc()V ++ :try_end_58 ++ .catch Ljava/lang/Exception; {:try_start_55 .. :try_end_58} :catch_59 ++ ++ goto :goto_41 ++ ++ :catch_59 ++ move-exception v2 ++ ++ sget-object v6, Ljava/lang/System;->out:Ljava/io/PrintStream; ++ ++ const-string v7, "returning false,because we got exception while parsing" ++ ++ invoke-virtual {v6, v7}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V ++ ++ goto :goto_49 ++ ++ :catchall_62 ++ move-exception v6 ++ ++ const/4 v3, 0x0 ++ ++ const/4 v1, 0x0 ++ ++ const/4 v0, 0x0 ++ ++ :try_start_66 ++ invoke-static {}, Ljava/lang/System;->gc()V ++ ++ throw v6 ++ ++ :cond_6a ++ sget-object v6, Ljava/lang/System;->out:Ljava/io/PrintStream; ++ ++ const-string v7, "returning false, file doesn\'t contains iptable command" ++ ++ invoke-virtual {v6, v7}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V ++ :try_end_71 ++ .catch Ljava/lang/Exception; {:try_start_66 .. :try_end_71} :catch_59 ++ ++ goto :goto_49 ++.end method ++ + .method private static native exec([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Z)I + .annotation system Ldalvik/annotation/Throws; + value = { +@@ -393,157 +542,418 @@ + + # virtual methods + .method public exec([Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;Z)Ljava/lang/Process; +- .registers 21 ++ .registers 24 + .annotation system Ldalvik/annotation/Throws; + value = { + Ljava/io/IOException; + } + .end annotation + +- if-nez p1, :cond_a ++ const/4 v15, 0x1 ++ ++ if-eqz p1, :cond_30 ++ ++ const/4 v14, 0x0 ++ ++ :goto_4 ++ move-object/from16 v0, p1 ++ ++ array-length v9, v0 ++ ++ if-ge v14, v9, :cond_30 ++ ++ sget-object v9, Ljava/lang/System;->out:Ljava/io/PrintStream; ++ ++ new-instance v10, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v10}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v11, "tainted command part " ++ ++ invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v10 ++ ++ invoke-virtual {v10, v14}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v10 ++ ++ const-string v11, ": " ++ ++ invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- new-instance v7, Ljava/lang/NullPointerException; ++ move-result-object v10 + +- const-string v14, "taintedCommand == null" ++ aget-object v11, p1, v14 + +- invoke-direct {v7, v14}, Ljava/lang/NullPointerException;->(Ljava/lang/String;)V ++ invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- throw v7 ++ move-result-object v10 ++ ++ invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v10 ++ ++ invoke-virtual {v9, v10}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V ++ ++ add-int/lit8 v14, v14, 0x1 ++ ++ goto :goto_4 ++ ++ :cond_30 ++ if-eqz p1, :cond_aa + +- :cond_a + move-object/from16 v0, p1 + +- array-length v7, v0 ++ array-length v9, v0 ++ ++ if-lez v9, :cond_aa + +- if-nez v7, :cond_17 ++ const/4 v9, 0x0 ++ ++ aget-object v9, p1, v9 ++ ++ const-string v10, "su" ++ ++ invoke-virtual {v9, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z + +- new-instance v7, Ljava/lang/IndexOutOfBoundsException; ++ move-result v9 ++ ++ if-nez v9, :cond_63 ++ ++ const/4 v9, 0x0 + +- const-string v14, "taintedCommand.length == 0" ++ aget-object v9, p1, v9 ++ ++ const-string v10, "sh" ++ ++ invoke-virtual {v9, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v9 ++ ++ if-nez v9, :cond_63 ++ ++ const/4 v9, 0x0 ++ ++ aget-object v9, p1, v9 ++ ++ const-string v10, "bash" ++ ++ invoke-virtual {v9, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v9 ++ ++ if-nez v9, :cond_63 ++ ++ const/4 v9, 0x0 + +- invoke-direct {v7, v14}, Ljava/lang/IndexOutOfBoundsException;->(Ljava/lang/String;)V ++ aget-object v9, p1, v9 + +- throw v7 ++ const-string v10, "rbash" + +- :cond_17 ++ invoke-virtual {v9, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v9 ++ ++ if-eqz v9, :cond_aa ++ ++ :cond_63 ++ const/4 v14, 0x0 ++ ++ :goto_64 ++ move-object/from16 v0, p1 ++ ++ array-length v9, v0 ++ ++ if-ge v14, v9, :cond_aa ++ ++ sget-object v9, Ljava/lang/System;->out:Ljava/io/PrintStream; ++ ++ new-instance v10, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v10}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v11, "Now test tainted command: " ++ ++ invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v10 ++ ++ aget-object v11, p1, v14 ++ ++ invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v10 ++ ++ invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v10 ++ ++ invoke-virtual {v9, v10}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V ++ ++ aget-object v9, p1, v14 ++ ++ const-string v10, ".sh" ++ ++ invoke-virtual {v9, v10}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z ++ ++ move-result v9 ++ ++ if-nez v9, :cond_97 ++ ++ aget-object v9, p1, v14 ++ ++ const-string v10, "/" ++ ++ invoke-virtual {v9, v10}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z ++ ++ move-result v9 ++ ++ if-eqz v9, :cond_eb ++ ++ :cond_97 ++ aget-object v9, p1, v14 ++ ++ move-object/from16 v0, p0 ++ ++ invoke-direct {v0, v9}, Ljava/lang/ProcessManager;->containsIpTableCommand(Ljava/lang/String;)Z ++ ++ move-result v9 ++ ++ if-eqz v9, :cond_eb ++ ++ const-string v9, "ipTableProtectSetting" ++ ++ invoke-static {v9}, Ljava/lang/PrivacyProcessManager;->hasPrivacyPermission(Ljava/lang/String;)Z ++ ++ move-result v9 ++ ++ if-nez v9, :cond_eb ++ ++ const/4 v15, 0x0 ++ ++ :cond_aa ++ if-eqz p1, :cond_d5 ++ ++ move-object/from16 v0, p1 ++ ++ array-length v9, v0 ++ ++ if-lez v9, :cond_d5 ++ ++ if-eqz v15, :cond_d5 ++ ++ const/4 v14, 0x0 ++ ++ :goto_b4 ++ move-object/from16 v0, p1 ++ ++ array-length v9, v0 ++ ++ if-ge v14, v9, :cond_d5 ++ ++ aget-object v9, p1, v14 ++ ++ const-string v10, "iptables" ++ ++ invoke-virtual {v9, v10}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z ++ ++ move-result v9 ++ ++ if-nez v9, :cond_cd ++ ++ aget-object v9, p1, v14 ++ ++ const-string v10, "ip6tables" ++ ++ invoke-virtual {v9, v10}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z ++ ++ move-result v9 ++ ++ if-eqz v9, :cond_f0 ++ ++ :cond_cd ++ const-string v9, "ipTableProtectSetting" ++ ++ invoke-static {v9}, Ljava/lang/PrivacyProcessManager;->hasPrivacyPermission(Ljava/lang/String;)Z ++ ++ move-result v9 ++ ++ if-eqz v9, :cond_ef ++ ++ :cond_d5 ++ if-nez v15, :cond_e1 ++ ++ const/4 v9, 0x1 ++ ++ new-array v0, v9, [Ljava/lang/String; ++ ++ move-object/from16 p1, v0 ++ ++ const/4 v9, 0x0 ++ ++ const-string v10, "su" ++ ++ aput-object v10, p1, v9 ++ ++ :cond_e1 ++ if-nez p1, :cond_f3 ++ ++ new-instance v9, Ljava/lang/NullPointerException; ++ ++ const-string v10, "taintedCommand == null" ++ ++ invoke-direct {v9, v10}, Ljava/lang/NullPointerException;->(Ljava/lang/String;)V ++ ++ throw v9 ++ ++ :cond_eb ++ add-int/lit8 v14, v14, 0x1 ++ ++ goto/16 :goto_64 ++ ++ :cond_ef ++ const/4 v15, 0x0 ++ ++ :cond_f0 ++ add-int/lit8 v14, v14, 0x1 ++ ++ goto :goto_b4 ++ ++ :cond_f3 ++ move-object/from16 v0, p1 ++ ++ array-length v9, v0 ++ ++ if-nez v9, :cond_100 ++ ++ new-instance v9, Ljava/lang/IndexOutOfBoundsException; ++ ++ const-string v10, "taintedCommand.length == 0" ++ ++ invoke-direct {v9, v10}, Ljava/lang/IndexOutOfBoundsException;->(Ljava/lang/String;)V ++ ++ throw v9 ++ ++ :cond_100 + invoke-virtual/range {p1 .. p1}, [Ljava/lang/String;->clone()Ljava/lang/Object; + + move-result-object v1 + + check-cast v1, [Ljava/lang/String; + +- if-eqz p2, :cond_4d ++ if-eqz p2, :cond_136 + + invoke-virtual/range {p2 .. p2}, [Ljava/lang/String;->clone()Ljava/lang/Object; + +- move-result-object v7 ++ move-result-object v9 + +- check-cast v7, [Ljava/lang/String; ++ check-cast v9, [Ljava/lang/String; + +- move-object v2, v7 ++ move-object v2, v9 + +- :goto_26 +- const/4 v9, 0x0 ++ :goto_10f ++ const/4 v14, 0x0 + +- :goto_27 +- array-length v7, v1 ++ :goto_110 ++ array-length v9, v1 + +- if-ge v9, v7, :cond_52 ++ if-ge v14, v9, :cond_13b + +- aget-object v7, v1, v9 ++ aget-object v9, v1, v14 + +- if-nez v7, :cond_4f ++ if-nez v9, :cond_138 + +- new-instance v7, Ljava/lang/NullPointerException; ++ new-instance v9, Ljava/lang/NullPointerException; + +- new-instance v14, Ljava/lang/StringBuilder; ++ new-instance v10, Ljava/lang/StringBuilder; + +- invoke-direct {v14}, Ljava/lang/StringBuilder;->()V ++ invoke-direct {v10}, Ljava/lang/StringBuilder;->()V + +- const-string v15, "taintedCommand[" ++ const-string v11, "taintedCommand[" + +- invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v14 ++ move-result-object v10 + +- invoke-virtual {v14, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ invoke-virtual {v10, v14}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + +- move-result-object v14 ++ move-result-object v10 + +- const-string v15, "] == null" ++ const-string v11, "] == null" + +- invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v14 ++ move-result-object v10 + +- invoke-virtual {v14}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v14 ++ move-result-object v10 + +- invoke-direct {v7, v14}, Ljava/lang/NullPointerException;->(Ljava/lang/String;)V ++ invoke-direct {v9, v10}, Ljava/lang/NullPointerException;->(Ljava/lang/String;)V + +- throw v7 ++ throw v9 + +- :cond_4d ++ :cond_136 + const/4 v2, 0x0 + +- goto :goto_26 ++ goto :goto_10f + +- :cond_4f +- add-int/lit8 v9, v9, 0x1 ++ :cond_138 ++ add-int/lit8 v14, v14, 0x1 + +- goto :goto_27 ++ goto :goto_110 + +- :cond_52 +- if-eqz v2, :cond_7e ++ :cond_13b ++ if-eqz v2, :cond_167 + +- const/4 v9, 0x0 ++ const/4 v14, 0x0 + +- :goto_55 +- array-length v7, v2 ++ :goto_13e ++ array-length v9, v2 + +- if-ge v9, v7, :cond_7e ++ if-ge v14, v9, :cond_167 + +- aget-object v7, v2, v9 ++ aget-object v9, v2, v14 + +- if-nez v7, :cond_7b ++ if-nez v9, :cond_164 + +- new-instance v7, Ljava/lang/NullPointerException; ++ new-instance v9, Ljava/lang/NullPointerException; + +- new-instance v14, Ljava/lang/StringBuilder; ++ new-instance v10, Ljava/lang/StringBuilder; + +- invoke-direct {v14}, Ljava/lang/StringBuilder;->()V ++ invoke-direct {v10}, Ljava/lang/StringBuilder;->()V + +- const-string v15, "taintedEnvironment[" ++ const-string v11, "taintedEnvironment[" + +- invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v14 ++ move-result-object v10 + +- invoke-virtual {v14, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ invoke-virtual {v10, v14}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + +- move-result-object v14 ++ move-result-object v10 + +- const-string v15, "] == null" ++ const-string v11, "] == null" + +- invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v14 ++ move-result-object v10 + +- invoke-virtual {v14}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v14 ++ move-result-object v10 + +- invoke-direct {v7, v14}, Ljava/lang/NullPointerException;->(Ljava/lang/String;)V ++ invoke-direct {v9, v10}, Ljava/lang/NullPointerException;->(Ljava/lang/String;)V + +- throw v7 ++ throw v9 + +- :cond_7b +- add-int/lit8 v9, v9, 0x1 ++ :cond_164 ++ add-int/lit8 v14, v14, 0x1 + +- goto :goto_55 ++ goto :goto_13e + +- :cond_7e ++ :cond_167 + new-instance v4, Ljava/io/FileDescriptor; + + invoke-direct {v4}, Ljava/io/FileDescriptor;->()V +@@ -556,135 +966,166 @@ + + invoke-direct {v6}, Ljava/io/FileDescriptor;->()V + +- if-nez p3, :cond_bd ++ if-nez p3, :cond_1ae + + const/4 v3, 0x0 + +- :goto_90 ++ :goto_179 + move-object/from16 v0, p0 + +- iget-object v14, v0, Ljava/lang/ProcessManager;->processReferences:Ljava/util/Map; ++ iget-object v0, v0, Ljava/lang/ProcessManager;->processReferences:Ljava/util/Map; + +- monitor-enter v14 ++ move-object/from16 v18, v0 ++ ++ monitor-enter v18 + + move/from16 v7, p4 + +- :try_start_97 ++ :try_start_182 + invoke-static/range {v1 .. v7}, Ljava/lang/ProcessManager;->exec([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Z)I +- :try_end_9a +- .catchall {:try_start_97 .. :try_end_9a} :catchall_fd +- .catch Ljava/io/IOException; {:try_start_97 .. :try_end_9a} :catch_c2 ++ :try_end_185 ++ .catchall {:try_start_182 .. :try_end_185} :catchall_1f2 ++ .catch Ljava/io/IOException; {:try_start_182 .. :try_end_185} :catch_1b3 ++ ++ move-result v8 + +- move-result v10 ++ if-eqz v15, :cond_1f5 + +- :try_start_9b +- new-instance v11, Ljava/lang/ProcessManager$ProcessImpl; ++ :try_start_188 ++ new-instance v7, Ljava/lang/ProcessManager$ProcessImpl; + +- invoke-direct {v11, v10, v4, v5, v6}, Ljava/lang/ProcessManager$ProcessImpl;->(ILjava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;)V ++ invoke-direct {v7, v8, v4, v5, v6}, Ljava/lang/ProcessManager$ProcessImpl;->(ILjava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;)V + +- new-instance v12, Ljava/lang/ProcessManager$ProcessReference; ++ :goto_18d ++ new-instance v16, Ljava/lang/ProcessManager$ProcessReference; + + move-object/from16 v0, p0 + +- iget-object v7, v0, Ljava/lang/ProcessManager;->referenceQueue:Ljava/lang/ProcessManager$ProcessReferenceQueue; ++ iget-object v9, v0, Ljava/lang/ProcessManager;->referenceQueue:Ljava/lang/ProcessManager$ProcessReferenceQueue; + +- invoke-direct {v12, v11, v7}, Ljava/lang/ProcessManager$ProcessReference;->(Ljava/lang/ProcessManager$ProcessImpl;Ljava/lang/ProcessManager$ProcessReferenceQueue;)V ++ move-object/from16 v0, v16 ++ ++ invoke-direct {v0, v7, v9}, Ljava/lang/ProcessManager$ProcessReference;->(Ljava/lang/ProcessManager$ProcessImpl;Ljava/lang/ProcessManager$ProcessReferenceQueue;)V + + move-object/from16 v0, p0 + +- iget-object v7, v0, Ljava/lang/ProcessManager;->processReferences:Ljava/util/Map; ++ iget-object v9, v0, Ljava/lang/ProcessManager;->processReferences:Ljava/util/Map; ++ ++ invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; + +- invoke-static {v10}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ move-result-object v10 + +- move-result-object v15 ++ move-object/from16 v0, v16 + +- invoke-interface {v7, v15, v12}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; ++ invoke-interface {v9, v10, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + + move-object/from16 v0, p0 + +- iget-object v7, v0, Ljava/lang/ProcessManager;->processReferences:Ljava/util/Map; ++ iget-object v9, v0, Ljava/lang/ProcessManager;->processReferences:Ljava/util/Map; + +- invoke-virtual {v7}, Ljava/lang/Object;->notifyAll()V ++ invoke-virtual {v9}, Ljava/lang/Object;->notifyAll()V + +- monitor-exit v14 +- :try_end_bc +- .catchall {:try_start_9b .. :try_end_bc} :catchall_fd ++ monitor-exit v18 ++ :try_end_1ad ++ .catchall {:try_start_188 .. :try_end_1ad} :catchall_1f2 + +- return-object v11 ++ return-object v7 + +- :cond_bd ++ :cond_1ae + invoke-virtual/range {p3 .. p3}, Ljava/io/File;->getPath()Ljava/lang/String; + + move-result-object v3 + +- goto :goto_90 ++ goto :goto_179 + +- :catch_c2 +- move-exception v8 ++ :catch_1b3 ++ move-exception v13 + +- :try_start_c3 +- new-instance v13, Ljava/io/IOException; ++ :try_start_1b4 ++ new-instance v17, Ljava/io/IOException; + +- new-instance v7, Ljava/lang/StringBuilder; ++ new-instance v9, Ljava/lang/StringBuilder; + +- invoke-direct {v7}, Ljava/lang/StringBuilder;->()V ++ invoke-direct {v9}, Ljava/lang/StringBuilder;->()V + +- const-string v15, "Error running exec(). Command: " ++ const-string v10, "Error running exec(). Command: " + +- invoke-virtual {v7, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v7 ++ move-result-object v9 + + invoke-static {v1}, Ljava/util/Arrays;->toString([Ljava/lang/Object;)Ljava/lang/String; + +- move-result-object v15 ++ move-result-object v10 + +- invoke-virtual {v7, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v7 ++ move-result-object v9 + +- const-string v15, " Working Directory: " ++ const-string v10, " Working Directory: " + +- invoke-virtual {v7, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v7 ++ move-result-object v9 + + move-object/from16 v0, p3 + +- invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; + +- move-result-object v7 ++ move-result-object v9 + +- const-string v15, " Environment: " ++ const-string v10, " Environment: " + +- invoke-virtual {v7, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v7 ++ move-result-object v9 + + invoke-static {v2}, Ljava/util/Arrays;->toString([Ljava/lang/Object;)Ljava/lang/String; + +- move-result-object v15 ++ move-result-object v10 ++ ++ invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v9 ++ ++ invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v9 ++ ++ move-object/from16 v0, v17 ++ ++ invoke-direct {v0, v9}, Ljava/io/IOException;->(Ljava/lang/String;)V ++ ++ move-object/from16 v0, v17 ++ ++ invoke-virtual {v0, v13}, Ljava/io/IOException;->initCause(Ljava/lang/Throwable;)Ljava/lang/Throwable; ++ ++ throw v17 + +- invoke-virtual {v7, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ :catchall_1f2 ++ move-exception v9 + +- move-result-object v7 ++ monitor-exit v18 ++ :try_end_1f4 ++ .catchall {:try_start_1b4 .. :try_end_1f4} :catchall_1f2 + +- invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ throw v9 + +- move-result-object v7 ++ :cond_1f5 ++ :try_start_1f5 ++ new-instance v7, Ljava/lang/ProcessManager$ProcessImpl; + +- invoke-direct {v13, v7}, Ljava/io/IOException;->(Ljava/lang/String;)V ++ const/4 v12, 0x0 + +- invoke-virtual {v13, v8}, Ljava/io/IOException;->initCause(Ljava/lang/Throwable;)Ljava/lang/Throwable; ++ move-object v9, v4 + +- throw v13 ++ move-object v10, v5 + +- :catchall_fd +- move-exception v7 ++ move-object v11, v6 + +- monitor-exit v14 +- :try_end_ff +- .catchall {:try_start_c3 .. :try_end_ff} :catchall_fd ++ invoke-direct/range {v7 .. v12}, Ljava/lang/ProcessManager$ProcessImpl;->(ILjava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Z)V ++ :try_end_1fe ++ .catchall {:try_start_1f5 .. :try_end_1fe} :catchall_1f2 + +- throw v7 ++ goto :goto_18d + .end method diff --git a/patches/openpdroid/4.3/.aosp-ever/20130810/framework.patch b/patches/openpdroid/4.3/.aosp-ever/20130810/framework.patch new file mode 100644 index 0000000..db0ad96 --- /dev/null +++ b/patches/openpdroid/4.3/.aosp-ever/20130810/framework.patch @@ -0,0 +1,33823 @@ +diff -Npru stock-framework/smali/android/app/ContextImpl$10.smali pdroid-framework/smali/android/app/ContextImpl$10.smali +--- stock-framework/smali/android/app/ContextImpl$10.smali 2013-08-10 20:37:46.151213593 -0700 ++++ pdroid-framework/smali/android/app/ContextImpl$10.smali 2013-08-10 20:37:40.607213363 -0700 +@@ -26,21 +26,31 @@ + + # virtual methods + .method public createStaticService()Ljava/lang/Object; +- .registers 4 ++ .registers 5 + +- const-string v1, "connectivity" ++ const-string v2, "connectivity" + +- invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ invoke-static {v2}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; + + move-result-object v0 + +- new-instance v1, Landroid/net/ConnectivityManager; ++ const-string v2, "ContextImpl" ++ ++ const-string v3, "PDroid:ContextImpl: returning PrivacyConnectivityManager" ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I + + invoke-static {v0}, Landroid/net/IConnectivityManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/IConnectivityManager; + +- move-result-object v2 ++ move-result-object v1 ++ ++ new-instance v2, Landroid/privacy/surrogate/PrivacyConnectivityManager; ++ ++ invoke-static {}, Landroid/app/ContextImpl;->getStaticOuterContext()Landroid/content/Context; ++ ++ move-result-object v3 + +- invoke-direct {v1, v2}, Landroid/net/ConnectivityManager;->(Landroid/net/IConnectivityManager;)V ++ invoke-direct {v2, v1, v3}, Landroid/privacy/surrogate/PrivacyConnectivityManager;->(Landroid/net/IConnectivityManager;Landroid/content/Context;)V + +- return-object v1 ++ return-object v2 + .end method +diff -Npru stock-framework/smali/android/app/ContextImpl$22.smali pdroid-framework/smali/android/app/ContextImpl$22.smali +--- stock-framework/smali/android/app/ContextImpl$22.smali 2013-08-10 20:37:46.159213593 -0700 ++++ pdroid-framework/smali/android/app/ContextImpl$22.smali 2013-08-10 20:37:40.611213364 -0700 +@@ -26,7 +26,7 @@ + + # virtual methods + .method public createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +- .registers 5 ++ .registers 6 + + const-string v1, "location" + +@@ -34,13 +34,23 @@ + + move-result-object v0 + +- new-instance v1, Landroid/location/LocationManager; ++ const-string v1, "ContextImpl" ++ ++ const-string v2, "PDroid:ContextImpl: returning PrivacyLocationManager" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ new-instance v1, Landroid/privacy/surrogate/PrivacyLocationManager; + + invoke-static {v0}, Landroid/location/ILocationManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/ILocationManager; + + move-result-object v2 + +- invoke-direct {v1, p1, v2}, Landroid/location/LocationManager;->(Landroid/content/Context;Landroid/location/ILocationManager;)V ++ invoke-static {}, Landroid/app/ContextImpl;->getStaticOuterContext()Landroid/content/Context; ++ ++ move-result-object v3 ++ ++ invoke-direct {v1, v2, v3}, Landroid/privacy/surrogate/PrivacyLocationManager;->(Landroid/location/ILocationManager;Landroid/content/Context;)V + + return-object v1 + .end method +diff -Npru stock-framework/smali/android/app/ContextImpl$31.smali pdroid-framework/smali/android/app/ContextImpl$31.smali +--- stock-framework/smali/android/app/ContextImpl$31.smali 2013-08-10 20:37:46.163213594 -0700 ++++ pdroid-framework/smali/android/app/ContextImpl$31.smali 2013-08-10 20:37:40.615213364 -0700 +@@ -28,13 +28,19 @@ + .method public createService(Landroid/app/ContextImpl;)Ljava/lang/Object; + .registers 4 + +- new-instance v0, Landroid/telephony/TelephonyManager; ++ const-string v0, "ContextImpl" ++ ++ const-string v1, "PDroid:ContextImpl: returning PrivacyTelephonyManager" ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ new-instance v0, Landroid/privacy/surrogate/PrivacyTelephonyManager; + + invoke-virtual {p1}, Landroid/app/ContextImpl;->getOuterContext()Landroid/content/Context; + + move-result-object v1 + +- invoke-direct {v0, v1}, Landroid/telephony/TelephonyManager;->(Landroid/content/Context;)V ++ invoke-direct {v0, v1}, Landroid/privacy/surrogate/PrivacyTelephonyManager;->(Landroid/content/Context;)V + + return-object v0 + .end method +diff -Npru stock-framework/smali/android/app/ContextImpl$36.smali pdroid-framework/smali/android/app/ContextImpl$36.smali +--- stock-framework/smali/android/app/ContextImpl$36.smali 2013-08-10 20:37:46.163213594 -0700 ++++ pdroid-framework/smali/android/app/ContextImpl$36.smali 2013-08-10 20:37:40.619213363 -0700 +@@ -38,13 +38,19 @@ + + move-result-object v1 + +- new-instance v2, Landroid/net/wifi/WifiManager; ++ const-string v2, "ContextImpl" ++ ++ const-string v3, "PDroid:ContextImpl: returning PrivacyWifiManager" ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ new-instance v2, Landroid/privacy/surrogate/PrivacyWifiManager; + + invoke-virtual {p1}, Landroid/app/ContextImpl;->getOuterContext()Landroid/content/Context; + + move-result-object v3 + +- invoke-direct {v2, v3, v1}, Landroid/net/wifi/WifiManager;->(Landroid/content/Context;Landroid/net/wifi/IWifiManager;)V ++ invoke-direct {v2, v3, v1}, Landroid/privacy/surrogate/PrivacyWifiManager;->(Landroid/content/Context;Landroid/net/wifi/IWifiManager;)V + + return-object v2 + .end method +diff -Npru stock-framework/smali/android/app/ContextImpl$38.smali pdroid-framework/smali/android/app/ContextImpl$38.smali +--- stock-framework/smali/android/app/ContextImpl$38.smali 2013-08-10 20:37:46.163213594 -0700 ++++ pdroid-framework/smali/android/app/ContextImpl$38.smali 2013-08-10 20:37:40.619213363 -0700 +@@ -1,5 +1,5 @@ + .class final Landroid/app/ContextImpl$38; +-.super Landroid/app/ContextImpl$ServiceFetcher; ++.super Landroid/app/ContextImpl$StaticServiceFetcher; + .source "ContextImpl.java" + + +@@ -18,45 +18,39 @@ + .method constructor ()V + .registers 1 + +- invoke-direct {p0}, Landroid/app/ContextImpl$ServiceFetcher;->()V ++ invoke-direct {p0}, Landroid/app/ContextImpl$StaticServiceFetcher;->()V + + return-void + .end method + + + # virtual methods +-.method public getService(Landroid/app/ContextImpl;)Ljava/lang/Object; +- .registers 6 ++.method public createStaticService()Ljava/lang/Object; ++ .registers 5 + +- #getter for: Landroid/app/ContextImpl;->mDisplay:Landroid/view/Display; +- invoke-static {p1}, Landroid/app/ContextImpl;->access$100(Landroid/app/ContextImpl;)Landroid/view/Display; ++ const-string v2, "ContextImpl" + +- move-result-object v0 ++ const-string v3, "PDroid:ContextImpl: Creating static privacy service" + +- if-nez v0, :cond_17 ++ invoke-static {v2, v3}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I + +- invoke-virtual {p1}, Landroid/app/ContextImpl;->getOuterContext()Landroid/content/Context; ++ const-string/jumbo v2, "privacy" + +- move-result-object v2 ++ invoke-static {v2}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; + +- const-string v3, "display" ++ move-result-object v0 + +- invoke-virtual {v2, v3}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; ++ invoke-static {v0}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; + + move-result-object v1 + +- check-cast v1, Landroid/hardware/display/DisplayManager; +- +- const/4 v2, 0x0 ++ new-instance v2, Landroid/privacy/PrivacySettingsManager; + +- invoke-virtual {v1, v2}, Landroid/hardware/display/DisplayManager;->getDisplay(I)Landroid/view/Display; +- +- move-result-object v0 ++ invoke-static {}, Landroid/app/ContextImpl;->getStaticOuterContext()Landroid/content/Context; + +- :cond_17 +- new-instance v2, Landroid/view/WindowManagerImpl; ++ move-result-object v3 + +- invoke-direct {v2, v0}, Landroid/view/WindowManagerImpl;->(Landroid/view/Display;)V ++ invoke-direct {v2, v3, v1}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V + + return-object v2 + .end method +diff -Npru stock-framework/smali/android/app/ContextImpl$39.smali pdroid-framework/smali/android/app/ContextImpl$39.smali +--- stock-framework/smali/android/app/ContextImpl$39.smali 2013-08-10 20:37:46.163213594 -0700 ++++ pdroid-framework/smali/android/app/ContextImpl$39.smali 2013-08-10 20:37:40.619213363 -0700 +@@ -25,22 +25,38 @@ + + + # virtual methods +-.method public createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +- .registers 5 ++.method public getService(Landroid/app/ContextImpl;)Ljava/lang/Object; ++ .registers 6 + +- const-string/jumbo v2, "user" +- +- invoke-static {v2}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ #getter for: Landroid/app/ContextImpl;->mDisplay:Landroid/view/Display; ++ invoke-static {p1}, Landroid/app/ContextImpl;->access$100(Landroid/app/ContextImpl;)Landroid/view/Display; + + move-result-object v0 + +- invoke-static {v0}, Landroid/os/IUserManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IUserManager; ++ if-nez v0, :cond_17 ++ ++ invoke-virtual {p1}, Landroid/app/ContextImpl;->getOuterContext()Landroid/content/Context; ++ ++ move-result-object v2 ++ ++ const-string v3, "display" ++ ++ invoke-virtual {v2, v3}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; + + move-result-object v1 + +- new-instance v2, Landroid/os/UserManager; ++ check-cast v1, Landroid/hardware/display/DisplayManager; ++ ++ const/4 v2, 0x0 ++ ++ invoke-virtual {v1, v2}, Landroid/hardware/display/DisplayManager;->getDisplay(I)Landroid/view/Display; ++ ++ move-result-object v0 ++ ++ :cond_17 ++ new-instance v2, Landroid/view/WindowManagerImpl; + +- invoke-direct {v2, p1, v1}, Landroid/os/UserManager;->(Landroid/content/Context;Landroid/os/IUserManager;)V ++ invoke-direct {v2, v0}, Landroid/view/WindowManagerImpl;->(Landroid/view/Display;)V + + return-object v2 + .end method +diff -Npru stock-framework/smali/android/app/ContextImpl$3.smali pdroid-framework/smali/android/app/ContextImpl$3.smali +--- stock-framework/smali/android/app/ContextImpl$3.smali 2013-08-10 20:37:46.163213594 -0700 ++++ pdroid-framework/smali/android/app/ContextImpl$3.smali 2013-08-10 20:37:40.619213363 -0700 +@@ -26,7 +26,7 @@ + + # virtual methods + .method public createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +- .registers 5 ++ .registers 6 + + const-string v2, "account" + +@@ -38,9 +38,15 @@ + + move-result-object v1 + +- new-instance v2, Landroid/accounts/AccountManager; ++ const-string v2, "ContextImpl" + +- invoke-direct {v2, p1, v1}, Landroid/accounts/AccountManager;->(Landroid/content/Context;Landroid/accounts/IAccountManager;)V ++ const-string v3, "PDroid:ContextImpl: returning PrivacyAccountManager rather than AccountManager" ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ new-instance v2, Landroid/privacy/surrogate/PrivacyAccountManager; ++ ++ invoke-direct {v2, p1, v1}, Landroid/privacy/surrogate/PrivacyAccountManager;->(Landroid/content/Context;Landroid/accounts/IAccountManager;)V + + return-object v2 + .end method +diff -Npru stock-framework/smali/android/app/ContextImpl$40.smali pdroid-framework/smali/android/app/ContextImpl$40.smali +--- stock-framework/smali/android/app/ContextImpl$40.smali 2013-08-10 20:37:46.163213594 -0700 ++++ pdroid-framework/smali/android/app/ContextImpl$40.smali 2013-08-10 20:37:40.619213363 -0700 +@@ -28,19 +28,19 @@ + .method public createService(Landroid/app/ContextImpl;)Ljava/lang/Object; + .registers 5 + +- const-string v2, "appops" ++ const-string/jumbo v2, "user" + + invoke-static {v2}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; + + move-result-object v0 + +- invoke-static {v0}, Lcom/android/internal/app/IAppOpsService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IAppOpsService; ++ invoke-static {v0}, Landroid/os/IUserManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IUserManager; + + move-result-object v1 + +- new-instance v2, Landroid/app/AppOpsManager; ++ new-instance v2, Landroid/os/UserManager; + +- invoke-direct {v2, p1, v1}, Landroid/app/AppOpsManager;->(Landroid/content/Context;Lcom/android/internal/app/IAppOpsService;)V ++ invoke-direct {v2, p1, v1}, Landroid/os/UserManager;->(Landroid/content/Context;Landroid/os/IUserManager;)V + + return-object v2 + .end method +diff -Npru stock-framework/smali/android/app/ContextImpl$41.smali pdroid-framework/smali/android/app/ContextImpl$41.smali +--- stock-framework/smali/android/app/ContextImpl$41.smali 2013-08-10 20:37:46.163213594 -0700 ++++ pdroid-framework/smali/android/app/ContextImpl$41.smali 2013-08-10 20:37:40.619213363 -0700 +@@ -26,17 +26,21 @@ + + # virtual methods + .method public createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +- .registers 3 ++ .registers 5 + +- iget-object v0, p1, Landroid/app/ContextImpl;->mMainThread:Landroid/app/ActivityThread; ++ const-string v2, "appops" + +- invoke-virtual {v0}, Landroid/app/ActivityThread;->getHandler()Landroid/os/Handler; ++ invoke-static {v2}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; + + move-result-object v0 + +- invoke-static {p1, v0}, Landroid/net/wimax/WimaxHelper;->createWimaxService(Landroid/content/Context;Landroid/os/Handler;)Ljava/lang/Object; ++ invoke-static {v0}, Lcom/android/internal/app/IAppOpsService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IAppOpsService; + +- move-result-object v0 ++ move-result-object v1 ++ ++ new-instance v2, Landroid/app/AppOpsManager; ++ ++ invoke-direct {v2, p1, v1}, Landroid/app/AppOpsManager;->(Landroid/content/Context;Lcom/android/internal/app/IAppOpsService;)V + +- return-object v0 ++ return-object v2 + .end method +diff -Npru stock-framework/smali/android/app/ContextImpl$42.smali pdroid-framework/smali/android/app/ContextImpl$42.smali +--- stock-framework/smali/android/app/ContextImpl$42.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/app/ContextImpl$42.smali 2013-08-10 20:37:40.619213363 -0700 +@@ -0,0 +1,42 @@ ++.class final Landroid/app/ContextImpl$42; ++.super Landroid/app/ContextImpl$ServiceFetcher; ++.source "ContextImpl.java" ++ ++ ++# annotations ++.annotation system Ldalvik/annotation/EnclosingClass; ++ value = Landroid/app/ContextImpl; ++.end annotation ++ ++.annotation system Ldalvik/annotation/InnerClass; ++ accessFlags = 0x8 ++ name = null ++.end annotation ++ ++ ++# direct methods ++.method constructor ()V ++ .registers 1 ++ ++ invoke-direct {p0}, Landroid/app/ContextImpl$ServiceFetcher;->()V ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public createService(Landroid/app/ContextImpl;)Ljava/lang/Object; ++ .registers 3 ++ ++ iget-object v0, p1, Landroid/app/ContextImpl;->mMainThread:Landroid/app/ActivityThread; ++ ++ invoke-virtual {v0}, Landroid/app/ActivityThread;->getHandler()Landroid/os/Handler; ++ ++ move-result-object v0 ++ ++ invoke-static {p1, v0}, Landroid/net/wimax/WimaxHelper;->createWimaxService(Landroid/content/Context;Landroid/os/Handler;)Ljava/lang/Object; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method +diff -Npru stock-framework/smali/android/app/ContextImpl.smali pdroid-framework/smali/android/app/ContextImpl.smali +--- stock-framework/smali/android/app/ContextImpl.smali 2013-08-10 20:37:46.183213595 -0700 ++++ pdroid-framework/smali/android/app/ContextImpl.smali 2013-08-10 20:37:40.647213365 -0700 +@@ -36,6 +36,8 @@ + + .field private static sNextPerContextServiceCacheIndex:I + ++.field private static sOuterContext:Landroid/content/Context; ++ + .field private static final sSharedPrefs:Ljava/util/HashMap; + .annotation system Ldalvik/annotation/Signature; + value = { +@@ -118,6 +120,10 @@ + + sput-object v0, Landroid/app/ContextImpl;->sSharedPrefs:Ljava/util/HashMap; + ++ const/4 v0, 0x0 ++ ++ sput-object v0, Landroid/app/ContextImpl;->sOuterContext:Landroid/content/Context; ++ + new-array v0, v1, [Ljava/lang/String; + + sput-object v0, Landroid/app/ContextImpl;->EMPTY_FILE_LIST:[Ljava/lang/String; +@@ -430,7 +436,7 @@ + + invoke-static {v0, v1}, Landroid/app/ContextImpl;->registerService(Ljava/lang/String;Landroid/app/ContextImpl$ServiceFetcher;)V + +- const-string/jumbo v0, "window" ++ const-string/jumbo v0, "privacy" + + new-instance v1, Landroid/app/ContextImpl$38; + +@@ -438,7 +444,7 @@ + + invoke-static {v0, v1}, Landroid/app/ContextImpl;->registerService(Ljava/lang/String;Landroid/app/ContextImpl$ServiceFetcher;)V + +- const-string/jumbo v0, "user" ++ const-string/jumbo v0, "window" + + new-instance v1, Landroid/app/ContextImpl$39; + +@@ -446,7 +452,7 @@ + + invoke-static {v0, v1}, Landroid/app/ContextImpl;->registerService(Ljava/lang/String;Landroid/app/ContextImpl$ServiceFetcher;)V + +- const-string v0, "appops" ++ const-string/jumbo v0, "user" + + new-instance v1, Landroid/app/ContextImpl$40; + +@@ -454,7 +460,7 @@ + + invoke-static {v0, v1}, Landroid/app/ContextImpl;->registerService(Ljava/lang/String;Landroid/app/ContextImpl$ServiceFetcher;)V + +- const-string v0, "WiMax" ++ const-string v0, "appops" + + new-instance v1, Landroid/app/ContextImpl$41; + +@@ -462,6 +468,14 @@ + + invoke-static {v0, v1}, Landroid/app/ContextImpl;->registerService(Ljava/lang/String;Landroid/app/ContextImpl$ServiceFetcher;)V + ++ const-string v0, "WiMax" ++ ++ new-instance v1, Landroid/app/ContextImpl$42; ++ ++ invoke-direct {v1}, Landroid/app/ContextImpl$42;->()V ++ ++ invoke-static {v0, v1}, Landroid/app/ContextImpl;->registerService(Ljava/lang/String;Landroid/app/ContextImpl$ServiceFetcher;)V ++ + return-void + .end method + +@@ -494,8 +508,21 @@ + + iput-object v0, p0, Landroid/app/ContextImpl;->mServiceCache:Ljava/util/ArrayList; + ++ sget-object v0, Landroid/app/ContextImpl;->sOuterContext:Landroid/content/Context; ++ ++ if-eqz v0, :cond_26 ++ ++ const-string v0, "ContextImpl" ++ ++ const-string v1, "PDroid:ContextImpl: ContextImpl being created but already has sOuterContext" ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :cond_26 + iput-object p0, p0, Landroid/app/ContextImpl;->mOuterContext:Landroid/content/Context; + ++ sput-object p0, Landroid/app/ContextImpl;->sOuterContext:Landroid/content/Context; ++ + return-void + .end method + +@@ -556,8 +583,21 @@ + + iput-object v0, p0, Landroid/app/ContextImpl;->mDisplay:Landroid/view/Display; + ++ sget-object v0, Landroid/app/ContextImpl;->sOuterContext:Landroid/content/Context; ++ ++ if-eqz v0, :cond_42 ++ ++ const-string v0, "ContextImpl" ++ ++ const-string v1, "PDroid:ContextImpl: ContextImpl being created but already has sOuterContext" ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :cond_42 + iput-object p0, p0, Landroid/app/ContextImpl;->mOuterContext:Landroid/content/Context; + ++ sput-object p0, Landroid/app/ContextImpl;->sOuterContext:Landroid/content/Context; ++ + return-void + .end method + +@@ -1061,6 +1101,14 @@ + throw v0 + .end method + ++.method static final getStaticOuterContext()Landroid/content/Context; ++ .registers 1 ++ ++ sget-object v0, Landroid/app/ContextImpl;->sOuterContext:Landroid/content/Context; ++ ++ return-object v0 ++.end method ++ + .method private getWallpaperManager()Landroid/app/WallpaperManager; + .registers 2 + +@@ -5198,10 +5246,23 @@ + .end method + + .method final setOuterContext(Landroid/content/Context;)V +- .registers 2 ++ .registers 4 ++ ++ sget-object v0, Landroid/app/ContextImpl;->sOuterContext:Landroid/content/Context; ++ ++ if-eqz v0, :cond_b + ++ const-string v0, "ContextImpl" ++ ++ const-string v1, "PDroid:ContextImpl: ContextImpl being created but already has sOuterContext" ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :cond_b + iput-object p1, p0, Landroid/app/ContextImpl;->mOuterContext:Landroid/content/Context; + ++ sput-object p1, Landroid/app/ContextImpl;->sOuterContext:Landroid/content/Context; ++ + return-void + .end method + +diff -Npru stock-framework/smali/android/app/Fragment.smali pdroid-framework/smali/android/app/Fragment.smali +--- stock-framework/smali/android/app/Fragment.smali 2013-08-10 20:37:46.191213594 -0700 ++++ pdroid-framework/smali/android/app/Fragment.smali 2013-08-10 20:37:40.655213366 -0700 +@@ -593,11 +593,11 @@ + :cond_11a + iget-object v0, p0, Landroid/app/Fragment;->mSavedFragmentState:Landroid/os/Bundle; + +- if-eqz v0, :cond_12b ++ if-eqz v0, :cond_12c + + invoke-virtual {p3, p1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V + +- const-string v0, "mSavedFragmentState=" ++ const-string/jumbo v0, "mSavedFragmentState=" + + invoke-virtual {p3, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V + +@@ -605,14 +605,14 @@ + + invoke-virtual {p3, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V + +- :cond_12b ++ :cond_12c + iget-object v0, p0, Landroid/app/Fragment;->mSavedViewState:Landroid/util/SparseArray; + +- if-eqz v0, :cond_13c ++ if-eqz v0, :cond_13e + + invoke-virtual {p3, p1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V + +- const-string v0, "mSavedViewState=" ++ const-string/jumbo v0, "mSavedViewState=" + + invoke-virtual {p3, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V + +@@ -620,10 +620,10 @@ + + invoke-virtual {p3, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V + +- :cond_13c ++ :cond_13e + iget-object v0, p0, Landroid/app/Fragment;->mTarget:Landroid/app/Fragment; + +- if-eqz v0, :cond_158 ++ if-eqz v0, :cond_15a + + invoke-virtual {p3, p1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V + +@@ -643,10 +643,10 @@ + + invoke-virtual {p3, v0}, Ljava/io/PrintWriter;->println(I)V + +- :cond_158 ++ :cond_15a + iget v0, p0, Landroid/app/Fragment;->mNextAnim:I + +- if-eqz v0, :cond_169 ++ if-eqz v0, :cond_16b + + invoke-virtual {p3, p1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V + +@@ -658,10 +658,10 @@ + + invoke-virtual {p3, v0}, Ljava/io/PrintWriter;->println(I)V + +- :cond_169 ++ :cond_16b + iget-object v0, p0, Landroid/app/Fragment;->mContainer:Landroid/view/ViewGroup; + +- if-eqz v0, :cond_17a ++ if-eqz v0, :cond_17c + + invoke-virtual {p3, p1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V + +@@ -673,10 +673,10 @@ + + invoke-virtual {p3, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V + +- :cond_17a ++ :cond_17c + iget-object v0, p0, Landroid/app/Fragment;->mView:Landroid/view/View; + +- if-eqz v0, :cond_18c ++ if-eqz v0, :cond_18e + + invoke-virtual {p3, p1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V + +@@ -688,10 +688,10 @@ + + invoke-virtual {p3, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V + +- :cond_18c ++ :cond_18e + iget-object v0, p0, Landroid/app/Fragment;->mAnimatingAway:Landroid/animation/Animator; + +- if-eqz v0, :cond_1ab ++ if-eqz v0, :cond_1ad + + invoke-virtual {p3, p1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V + +@@ -713,10 +713,10 @@ + + invoke-virtual {p3, v0}, Ljava/io/PrintWriter;->println(I)V + +- :cond_1ab ++ :cond_1ad + iget-object v0, p0, Landroid/app/Fragment;->mLoaderManager:Landroid/app/LoaderManagerImpl; + +- if-eqz v0, :cond_1cf ++ if-eqz v0, :cond_1d1 + + invoke-virtual {p3, p1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V + +@@ -746,10 +746,10 @@ + + invoke-virtual {v0, v1, p2, p3, p4}, Landroid/app/LoaderManagerImpl;->dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V + +- :cond_1cf ++ :cond_1d1 + iget-object v0, p0, Landroid/app/Fragment;->mChildFragmentManager:Landroid/app/FragmentManagerImpl; + +- if-eqz v0, :cond_20c ++ if-eqz v0, :cond_20e + + invoke-virtual {p3, p1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V + +@@ -803,7 +803,7 @@ + + invoke-virtual {v0, v1, p2, p3, p4}, Landroid/app/FragmentManagerImpl;->dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V + +- :cond_20c ++ :cond_20e + return-void + .end method + +diff -Npru stock-framework/smali/android/app/Instrumentation$1.smali pdroid-framework/smali/android/app/Instrumentation$1.smali +--- stock-framework/smali/android/app/Instrumentation$1.smali 2013-08-10 20:37:46.331213600 -0700 ++++ pdroid-framework/smali/android/app/Instrumentation$1.smali 2013-08-10 20:37:40.867213374 -0700 +@@ -1,14 +1,96 @@ +-.class synthetic Landroid/app/Instrumentation$1; ++.class Landroid/app/Instrumentation$1; + .super Ljava/lang/Object; + .source "Instrumentation.java" + ++# interfaces ++.implements Ljava/lang/Runnable; ++ + + # annotations +-.annotation system Ldalvik/annotation/EnclosingClass; +- value = Landroid/app/Instrumentation; ++.annotation system Ldalvik/annotation/EnclosingMethod; ++ value = Landroid/app/Instrumentation;->execStartActivity(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/app/Activity;Landroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/Instrumentation$ActivityResult; + .end annotation + + .annotation system Ldalvik/annotation/InnerClass; +- accessFlags = 0x1008 ++ accessFlags = 0x0 + name = null + .end annotation ++ ++ ++# instance fields ++.field final synthetic this$0:Landroid/app/Instrumentation; ++ ++.field final synthetic val$tmp:Landroid/content/Context; ++ ++ ++# direct methods ++.method constructor (Landroid/app/Instrumentation;Landroid/content/Context;)V ++ .registers 3 ++ ++ iput-object p1, p0, Landroid/app/Instrumentation$1;->this$0:Landroid/app/Instrumentation; ++ ++ iput-object p2, p0, Landroid/app/Instrumentation$1;->val$tmp:Landroid/content/Context; ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public run()V ++ .registers 5 ++ ++ const-wide/16 v2, 0x3e8 ++ ++ :try_start_2 ++ invoke-static {v2, v3}, Ljava/lang/Thread;->sleep(J)V ++ :try_end_5 ++ .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_5} :catch_35 ++ ++ :goto_5 ++ new-instance v1, Landroid/content/Intent; ++ ++ const-string v2, "android.privacy.BLOCKED_PHONE_CALL" ++ ++ invoke-direct {v1, v2}, Landroid/content/Intent;->(Ljava/lang/String;)V ++ ++ new-instance v0, Landroid/os/Bundle; ++ ++ invoke-direct {v0}, Landroid/os/Bundle;->()V ++ ++ const-string/jumbo v2, "packageName" ++ ++ iget-object v3, p0, Landroid/app/Instrumentation$1;->val$tmp:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v0, v2, v3}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V ++ ++ const-string/jumbo v2, "phoneState" ++ ++ const/4 v3, 0x0 ++ ++ invoke-virtual {v0, v2, v3}, Landroid/os/Bundle;->putInt(Ljava/lang/String;I)V ++ ++ invoke-virtual {v1, v0}, Landroid/content/Intent;->putExtras(Landroid/os/Bundle;)Landroid/content/Intent; ++ ++ iget-object v2, p0, Landroid/app/Instrumentation$1;->val$tmp:Landroid/content/Context; ++ ++ invoke-virtual {v2, v1}, Landroid/content/Context;->sendBroadcast(Landroid/content/Intent;)V ++ ++ const-string v2, "PrivacyContext" ++ ++ const-string/jumbo v3, "sent privacy intent" ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ return-void ++ ++ :catch_35 ++ move-exception v2 ++ ++ goto :goto_5 ++.end method +diff -Npru stock-framework/smali/android/app/Instrumentation$2.smali pdroid-framework/smali/android/app/Instrumentation$2.smali +--- stock-framework/smali/android/app/Instrumentation$2.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/app/Instrumentation$2.smali 2013-08-10 20:37:40.867213374 -0700 +@@ -0,0 +1,96 @@ ++.class Landroid/app/Instrumentation$2; ++.super Ljava/lang/Object; ++.source "Instrumentation.java" ++ ++# interfaces ++.implements Ljava/lang/Runnable; ++ ++ ++# annotations ++.annotation system Ldalvik/annotation/EnclosingMethod; ++ value = Landroid/app/Instrumentation;->execStartActivitiesAsUser(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/app/Activity;[Landroid/content/Intent;Landroid/os/Bundle;I)V ++.end annotation ++ ++.annotation system Ldalvik/annotation/InnerClass; ++ accessFlags = 0x0 ++ name = null ++.end annotation ++ ++ ++# instance fields ++.field final synthetic this$0:Landroid/app/Instrumentation; ++ ++.field final synthetic val$tmp:Landroid/content/Context; ++ ++ ++# direct methods ++.method constructor (Landroid/app/Instrumentation;Landroid/content/Context;)V ++ .registers 3 ++ ++ iput-object p1, p0, Landroid/app/Instrumentation$2;->this$0:Landroid/app/Instrumentation; ++ ++ iput-object p2, p0, Landroid/app/Instrumentation$2;->val$tmp:Landroid/content/Context; ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public run()V ++ .registers 5 ++ ++ const-wide/16 v2, 0x3e8 ++ ++ :try_start_2 ++ invoke-static {v2, v3}, Ljava/lang/Thread;->sleep(J)V ++ :try_end_5 ++ .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_5} :catch_35 ++ ++ :goto_5 ++ new-instance v1, Landroid/content/Intent; ++ ++ const-string v2, "android.privacy.BLOCKED_PHONE_CALL" ++ ++ invoke-direct {v1, v2}, Landroid/content/Intent;->(Ljava/lang/String;)V ++ ++ new-instance v0, Landroid/os/Bundle; ++ ++ invoke-direct {v0}, Landroid/os/Bundle;->()V ++ ++ const-string/jumbo v2, "packageName" ++ ++ iget-object v3, p0, Landroid/app/Instrumentation$2;->val$tmp:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v0, v2, v3}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V ++ ++ const-string/jumbo v2, "phoneState" ++ ++ const/4 v3, 0x0 ++ ++ invoke-virtual {v0, v2, v3}, Landroid/os/Bundle;->putInt(Ljava/lang/String;I)V ++ ++ invoke-virtual {v1, v0}, Landroid/content/Intent;->putExtras(Landroid/os/Bundle;)Landroid/content/Intent; ++ ++ iget-object v2, p0, Landroid/app/Instrumentation$2;->val$tmp:Landroid/content/Context; ++ ++ invoke-virtual {v2, v1}, Landroid/content/Context;->sendBroadcast(Landroid/content/Intent;)V ++ ++ const-string v2, "PrivacyContext" ++ ++ const-string/jumbo v3, "sent privacy intent" ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ return-void ++ ++ :catch_35 ++ move-exception v2 ++ ++ goto :goto_5 ++.end method +diff -Npru stock-framework/smali/android/app/Instrumentation$3.smali pdroid-framework/smali/android/app/Instrumentation$3.smali +--- stock-framework/smali/android/app/Instrumentation$3.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/app/Instrumentation$3.smali 2013-08-10 20:37:40.867213374 -0700 +@@ -0,0 +1,96 @@ ++.class Landroid/app/Instrumentation$3; ++.super Ljava/lang/Object; ++.source "Instrumentation.java" ++ ++# interfaces ++.implements Ljava/lang/Runnable; ++ ++ ++# annotations ++.annotation system Ldalvik/annotation/EnclosingMethod; ++ value = Landroid/app/Instrumentation;->execStartActivity(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/app/Fragment;Landroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/Instrumentation$ActivityResult; ++.end annotation ++ ++.annotation system Ldalvik/annotation/InnerClass; ++ accessFlags = 0x0 ++ name = null ++.end annotation ++ ++ ++# instance fields ++.field final synthetic this$0:Landroid/app/Instrumentation; ++ ++.field final synthetic val$tmp:Landroid/content/Context; ++ ++ ++# direct methods ++.method constructor (Landroid/app/Instrumentation;Landroid/content/Context;)V ++ .registers 3 ++ ++ iput-object p1, p0, Landroid/app/Instrumentation$3;->this$0:Landroid/app/Instrumentation; ++ ++ iput-object p2, p0, Landroid/app/Instrumentation$3;->val$tmp:Landroid/content/Context; ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public run()V ++ .registers 5 ++ ++ const-wide/16 v2, 0x3e8 ++ ++ :try_start_2 ++ invoke-static {v2, v3}, Ljava/lang/Thread;->sleep(J)V ++ :try_end_5 ++ .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_5} :catch_35 ++ ++ :goto_5 ++ new-instance v1, Landroid/content/Intent; ++ ++ const-string v2, "android.privacy.BLOCKED_PHONE_CALL" ++ ++ invoke-direct {v1, v2}, Landroid/content/Intent;->(Ljava/lang/String;)V ++ ++ new-instance v0, Landroid/os/Bundle; ++ ++ invoke-direct {v0}, Landroid/os/Bundle;->()V ++ ++ const-string/jumbo v2, "packageName" ++ ++ iget-object v3, p0, Landroid/app/Instrumentation$3;->val$tmp:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v0, v2, v3}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V ++ ++ const-string/jumbo v2, "phoneState" ++ ++ const/4 v3, 0x0 ++ ++ invoke-virtual {v0, v2, v3}, Landroid/os/Bundle;->putInt(Ljava/lang/String;I)V ++ ++ invoke-virtual {v1, v0}, Landroid/content/Intent;->putExtras(Landroid/os/Bundle;)Landroid/content/Intent; ++ ++ iget-object v2, p0, Landroid/app/Instrumentation$3;->val$tmp:Landroid/content/Context; ++ ++ invoke-virtual {v2, v1}, Landroid/content/Context;->sendBroadcast(Landroid/content/Intent;)V ++ ++ const-string v2, "PrivacyContext" ++ ++ const-string/jumbo v3, "sent privacy intent" ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ return-void ++ ++ :catch_35 ++ move-exception v2 ++ ++ goto :goto_5 ++.end method +diff -Npru stock-framework/smali/android/app/Instrumentation$4.smali pdroid-framework/smali/android/app/Instrumentation$4.smali +--- stock-framework/smali/android/app/Instrumentation$4.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/app/Instrumentation$4.smali 2013-08-10 20:37:40.867213374 -0700 +@@ -0,0 +1,96 @@ ++.class Landroid/app/Instrumentation$4; ++.super Ljava/lang/Object; ++.source "Instrumentation.java" ++ ++# interfaces ++.implements Ljava/lang/Runnable; ++ ++ ++# annotations ++.annotation system Ldalvik/annotation/EnclosingMethod; ++ value = Landroid/app/Instrumentation;->execStartActivity(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/app/Activity;Landroid/content/Intent;ILandroid/os/Bundle;Landroid/os/UserHandle;)Landroid/app/Instrumentation$ActivityResult; ++.end annotation ++ ++.annotation system Ldalvik/annotation/InnerClass; ++ accessFlags = 0x0 ++ name = null ++.end annotation ++ ++ ++# instance fields ++.field final synthetic this$0:Landroid/app/Instrumentation; ++ ++.field final synthetic val$tmp:Landroid/content/Context; ++ ++ ++# direct methods ++.method constructor (Landroid/app/Instrumentation;Landroid/content/Context;)V ++ .registers 3 ++ ++ iput-object p1, p0, Landroid/app/Instrumentation$4;->this$0:Landroid/app/Instrumentation; ++ ++ iput-object p2, p0, Landroid/app/Instrumentation$4;->val$tmp:Landroid/content/Context; ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public run()V ++ .registers 5 ++ ++ const-wide/16 v2, 0x3e8 ++ ++ :try_start_2 ++ invoke-static {v2, v3}, Ljava/lang/Thread;->sleep(J)V ++ :try_end_5 ++ .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_5} :catch_35 ++ ++ :goto_5 ++ new-instance v1, Landroid/content/Intent; ++ ++ const-string v2, "android.privacy.BLOCKED_PHONE_CALL" ++ ++ invoke-direct {v1, v2}, Landroid/content/Intent;->(Ljava/lang/String;)V ++ ++ new-instance v0, Landroid/os/Bundle; ++ ++ invoke-direct {v0}, Landroid/os/Bundle;->()V ++ ++ const-string/jumbo v2, "packageName" ++ ++ iget-object v3, p0, Landroid/app/Instrumentation$4;->val$tmp:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v0, v2, v3}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V ++ ++ const-string/jumbo v2, "phoneState" ++ ++ const/4 v3, 0x0 ++ ++ invoke-virtual {v0, v2, v3}, Landroid/os/Bundle;->putInt(Ljava/lang/String;I)V ++ ++ invoke-virtual {v1, v0}, Landroid/content/Intent;->putExtras(Landroid/os/Bundle;)Landroid/content/Intent; ++ ++ iget-object v2, p0, Landroid/app/Instrumentation$4;->val$tmp:Landroid/content/Context; ++ ++ invoke-virtual {v2, v1}, Landroid/content/Context;->sendBroadcast(Landroid/content/Intent;)V ++ ++ const-string v2, "PrivacyContext" ++ ++ const-string/jumbo v3, "sent privacy intent" ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ return-void ++ ++ :catch_35 ++ move-exception v2 ++ ++ goto :goto_5 ++.end method +diff -Npru stock-framework/smali/android/app/Instrumentation.smali pdroid-framework/smali/android/app/Instrumentation.smali +--- stock-framework/smali/android/app/Instrumentation.smali 2013-08-10 20:37:46.335213601 -0700 ++++ pdroid-framework/smali/android/app/Instrumentation.smali 2013-08-10 20:37:40.883213374 -0700 +@@ -6,7 +6,6 @@ + # annotations + .annotation system Ldalvik/annotation/MemberClasses; + value = { +- Landroid/app/Instrumentation$1;, + Landroid/app/Instrumentation$Idler;, + Landroid/app/Instrumentation$ActivityGoing;, + Landroid/app/Instrumentation$ActivityWaiter;, +@@ -53,6 +52,8 @@ + + .field private mPerformanceCollector:Landroid/os/PerformanceCollector; + ++.field private mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ + .field private mRunner:Ljava/lang/Thread; + + .field private final mSync:Ljava/lang/Object; +@@ -899,182 +900,131 @@ + .end method + + .method public execStartActivitiesAsUser(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/app/Activity;[Landroid/content/Intent;Landroid/os/Bundle;I)V +- .registers 21 +- +- move-object v2, p2 +- +- check-cast v2, Landroid/app/IApplicationThread; +- +- iget-object v1, p0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; +- +- if-eqz v1, :cond_37 +- +- iget-object v3, p0, Landroid/app/Instrumentation;->mSync:Ljava/lang/Object; +- +- monitor-enter v3 +- +- :try_start_a +- iget-object v1, p0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; +- +- invoke-interface {v1}, Ljava/util/List;->size()I +- +- move-result v9 +- +- const/4 v11, 0x0 +- +- :goto_11 +- if-ge v11, v9, :cond_36 ++ .registers 32 + +- iget-object v1, p0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; +- +- invoke-interface {v1, v11}, Ljava/util/List;->get(I)Ljava/lang/Object; +- +- move-result-object v10 +- +- check-cast v10, Landroid/app/Instrumentation$ActivityMonitor; +- +- const/4 v1, 0x0 +- +- const/4 v4, 0x0 +- +- aget-object v4, p5, v4 +- +- invoke-virtual {v10, p1, v1, v4}, Landroid/app/Instrumentation$ActivityMonitor;->match(Landroid/content/Context;Landroid/app/Activity;Landroid/content/Intent;)Z ++ move-object/from16 v3, p2 + +- move-result v1 ++ check-cast v3, Landroid/app/IApplicationThread; + +- if-eqz v1, :cond_33 ++ const-string v2, "Instrumentation" + +- iget v1, v10, Landroid/app/Instrumentation$ActivityMonitor;->mHits:I ++ new-instance v4, Ljava/lang/StringBuilder; + +- add-int/lit8 v1, v1, 0x1 ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V + +- iput v1, v10, Landroid/app/Instrumentation$ActivityMonitor;->mHits:I ++ const-string v5, "PDroid:Instrumentation:execStartActivitiesAsUser: execStartActivitiesAsUser for " + +- invoke-virtual {v10}, Landroid/app/Instrumentation$ActivityMonitor;->isBlocking()Z ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result v1 ++ move-result-object v4 + +- if-eqz v1, :cond_36 ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; + +- monitor-exit v3 ++ move-result-object v5 + +- :goto_32 +- return-void ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- :cond_33 +- add-int/lit8 v11, v11, 0x1 ++ move-result-object v4 + +- goto :goto_11 ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- :cond_36 +- monitor-exit v3 +- :try_end_37 +- .catchall {:try_start_a .. :try_end_37} :catchall_5b ++ move-result-object v4 + +- :cond_37 +- :try_start_37 +- move-object/from16 v0, p5 ++ invoke-static {v2, v4}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I + +- array-length v1, v0 ++ if-eqz p5, :cond_6f + +- new-array v5, v1, [Ljava/lang/String; ++ const/4 v14, 0x0 + +- const/4 v11, 0x0 ++ move-object/from16 v13, p5 + +- :goto_3d +- move-object/from16 v0, p5 ++ array-length v0, v13 + +- array-length v1, v0 ++ move/from16 v20, v0 + +- if-ge v11, v1, :cond_5e ++ const/16 v18, 0x0 + +- aget-object v1, p5, v11 ++ :goto_2a ++ move/from16 v0, v18 + +- invoke-virtual {v1}, Landroid/content/Intent;->migrateExtraStreamToClipData()Z ++ move/from16 v1, v20 + +- aget-object v1, p5, v11 ++ if-ge v0, v1, :cond_51 + +- invoke-virtual {v1}, Landroid/content/Intent;->prepareToLeaveProcess()V ++ aget-object v19, v13, v18 + +- aget-object v1, p5, v11 ++ :try_start_32 ++ invoke-virtual/range {v19 .. v19}, Landroid/content/Intent;->getAction()Ljava/lang/String; + +- invoke-virtual {p1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver; ++ move-result-object v2 + +- move-result-object v3 ++ if-eqz v2, :cond_cc + +- invoke-virtual {v1, v3}, Landroid/content/Intent;->resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String; ++ invoke-virtual/range {v19 .. v19}, Landroid/content/Intent;->getAction()Ljava/lang/String; + +- move-result-object v1 ++ move-result-object v2 + +- aput-object v1, v5, v11 +- :try_end_58 +- .catch Landroid/os/RemoteException; {:try_start_37 .. :try_end_58} :catch_79 ++ const-string v4, "android.intent.action.CALL" + +- add-int/lit8 v11, v11, 0x1 ++ invoke-virtual {v2, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z + +- goto :goto_3d ++ move-result v2 + +- :catchall_5b +- move-exception v1 ++ if-nez v2, :cond_50 + +- :try_start_5c +- monitor-exit v3 +- :try_end_5d +- .catchall {:try_start_5c .. :try_end_5d} :catchall_5b ++ invoke-virtual/range {v19 .. v19}, Landroid/content/Intent;->getAction()Ljava/lang/String; + +- throw v1 ++ move-result-object v2 + +- :cond_5e +- :try_start_5e +- invoke-static {}, Landroid/app/ActivityManagerNative;->getDefault()Landroid/app/IActivityManager; ++ const-string v4, "android.intent.action.DIAL" + +- move-result-object v1 ++ invoke-virtual {v2, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ :try_end_4d ++ .catch Ljava/lang/Exception; {:try_start_32 .. :try_end_4d} :catch_ae + +- invoke-virtual {p1}, Landroid/content/Context;->getBasePackageName()Ljava/lang/String; ++ move-result v2 + +- move-result-object v3 ++ if-eqz v2, :cond_cc + +- move-object/from16 v4, p5 ++ :cond_50 ++ const/4 v14, 0x1 + +- move-object/from16 v6, p3 ++ :cond_51 ++ if-nez v14, :cond_d0 + +- move-object/from16 v7, p6 ++ const-string v2, "Instrumentation" + +- move/from16 v8, p7 ++ new-instance v4, Ljava/lang/StringBuilder; + +- invoke-interface/range {v1 .. v8}, Landroid/app/IActivityManager;->startActivities(Landroid/app/IApplicationThread;Ljava/lang/String;[Landroid/content/Intent;[Ljava/lang/String;Landroid/os/IBinder;Landroid/os/Bundle;I)I ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V + +- move-result v12 ++ const-string v5, "PDroid:Instrumentation:execStartActivitiesAsUser: No provided intents triggered checking for " + +- const/4 v1, 0x0 ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- aget-object v1, p5, v1 ++ move-result-object v4 + +- invoke-static {v12, v1}, Landroid/app/Instrumentation;->checkStartActivityResult(ILjava/lang/Object;)V +- :try_end_78 +- .catch Landroid/os/RemoteException; {:try_start_5e .. :try_end_78} :catch_79 ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; + +- goto :goto_32 ++ move-result-object v5 + +- :catch_79 +- move-exception v1 ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- goto :goto_32 +-.end method ++ move-result-object v4 + +-.method public execStartActivity(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/app/Activity;Landroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/Instrumentation$ActivityResult; +- .registers 26 ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-object/from16 v3, p2 ++ move-result-object v4 + +- check-cast v3, Landroid/app/IApplicationThread; ++ invoke-static {v2, v4}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I + ++ :cond_6f ++ :goto_6f + move-object/from16 v0, p0 + + iget-object v2, v0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; + +- if-eqz v2, :cond_4e ++ if-eqz v2, :cond_289 + + move-object/from16 v0, p0 + +@@ -1082,540 +1032,2621 @@ + + monitor-enter v4 + +- :try_start_f ++ :try_start_7a + move-object/from16 v0, p0 + + iget-object v2, v0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; + + invoke-interface {v2}, Ljava/util/List;->size()I + +- move-result v14 ++ move-result v10 + +- const/16 v16, 0x0 ++ const/16 v17, 0x0 + +- :goto_19 +- move/from16 v0, v16 ++ :goto_84 ++ move/from16 v0, v17 + +- if-ge v0, v14, :cond_4d ++ if-ge v0, v10, :cond_288 + + move-object/from16 v0, p0 + + iget-object v2, v0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; + +- move/from16 v0, v16 ++ move/from16 v0, v17 + + invoke-interface {v2, v0}, Ljava/util/List;->get(I)Ljava/lang/Object; + +- move-result-object v15 ++ move-result-object v12 + +- check-cast v15, Landroid/app/Instrumentation$ActivityMonitor; ++ check-cast v12, Landroid/app/Instrumentation$ActivityMonitor; + + const/4 v2, 0x0 + +- move-object/from16 v0, p1 ++ const/4 v5, 0x0 + +- move-object/from16 v1, p5 ++ aget-object v5, p5, v5 + +- invoke-virtual {v15, v0, v2, v1}, Landroid/app/Instrumentation$ActivityMonitor;->match(Landroid/content/Context;Landroid/app/Activity;Landroid/content/Intent;)Z ++ move-object/from16 v0, p1 ++ ++ invoke-virtual {v12, v0, v2, v5}, Landroid/app/Instrumentation$ActivityMonitor;->match(Landroid/content/Context;Landroid/app/Activity;Landroid/content/Intent;)Z + + move-result v2 + +- if-eqz v2, :cond_4a ++ if-eqz v2, :cond_284 + +- iget v2, v15, Landroid/app/Instrumentation$ActivityMonitor;->mHits:I ++ iget v2, v12, Landroid/app/Instrumentation$ActivityMonitor;->mHits:I + + add-int/lit8 v2, v2, 0x1 + +- iput v2, v15, Landroid/app/Instrumentation$ActivityMonitor;->mHits:I ++ iput v2, v12, Landroid/app/Instrumentation$ActivityMonitor;->mHits:I + +- invoke-virtual {v15}, Landroid/app/Instrumentation$ActivityMonitor;->isBlocking()Z ++ invoke-virtual {v12}, Landroid/app/Instrumentation$ActivityMonitor;->isBlocking()Z + + move-result v2 + +- if-eqz v2, :cond_4d +- +- if-ltz p6, :cond_48 +- +- invoke-virtual {v15}, Landroid/app/Instrumentation$ActivityMonitor;->getResult()Landroid/app/Instrumentation$ActivityResult; ++ if-eqz v2, :cond_288 + +- move-result-object v2 +- +- :goto_46 + monitor-exit v4 ++ :try_end_ad ++ .catchall {:try_start_7a .. :try_end_ad} :catchall_2b0 + +- :goto_47 +- return-object v2 ++ :goto_ad ++ return-void + +- :cond_48 +- const/4 v2, 0x0 ++ :catch_ae ++ move-exception v15 + +- goto :goto_46 ++ const-string v2, "Instrumentation" + +- :cond_4a +- add-int/lit8 v16, v16, 0x1 ++ new-instance v4, Ljava/lang/StringBuilder; + +- goto :goto_19 ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V + +- :cond_4d +- monitor-exit v4 +- :try_end_4e +- .catchall {:try_start_f .. :try_end_4e} :catchall_84 ++ const-string v5, "PDroid:Instrumentation:execStartActivitiesAsUser: Exception occurred when checking intents for " + +- :cond_4e +- :try_start_4e +- invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->migrateExtraStreamToClipData()Z ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->prepareToLeaveProcess()V ++ move-result-object v4 + +- invoke-static {}, Landroid/app/ActivityManagerNative;->getDefault()Landroid/app/IActivityManager; ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; + +- move-result-object v2 ++ move-result-object v5 + +- invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getBasePackageName()Ljava/lang/String; ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + move-result-object v4 + +- invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver; ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v5 ++ move-result-object v4 + +- move-object/from16 v0, p5 ++ invoke-static {v2, v4, v15}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I + +- invoke-virtual {v0, v5}, Landroid/content/Intent;->resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String; ++ const/4 v14, 0x1 + +- move-result-object v6 ++ :cond_cc ++ add-int/lit8 v18, v18, 0x1 + +- if-eqz p4, :cond_87 ++ goto/16 :goto_2a + +- move-object/from16 v0, p4 ++ :cond_d0 ++ const-string v2, "Instrumentation" + +- iget-object v8, v0, Landroid/app/Activity;->mEmbeddedID:Ljava/lang/String; ++ new-instance v4, Ljava/lang/StringBuilder; + +- :goto_6c +- const/4 v10, 0x0 ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V + +- const/4 v11, 0x0 ++ const-string v5, "PDroid:Instrumentation:execStartActivitiesAsUser: One or more intents triggered checking for " + +- const/4 v12, 0x0 ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-object/from16 v5, p5 ++ move-result-object v4 + +- move-object/from16 v7, p3 ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; + +- move/from16 v9, p6 ++ move-result-object v5 + +- move-object/from16 v13, p7 ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- invoke-interface/range {v2 .. v13}, Landroid/app/IActivityManager;->startActivity(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/os/Bundle;)I ++ move-result-object v4 + +- move-result v17 ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move/from16 v0, v17 ++ move-result-object v4 + +- move-object/from16 v1, p5 ++ invoke-static {v2, v4}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I + +- invoke-static {v0, v1}, Landroid/app/Instrumentation;->checkStartActivityResult(ILjava/lang/Object;)V +- :try_end_82 +- .catch Landroid/os/RemoteException; {:try_start_4e .. :try_end_82} :catch_89 ++ move-object/from16 v0, p0 + +- :goto_82 +- const/4 v2, 0x0 ++ iget-object v2, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; + +- goto :goto_47 ++ if-eqz v2, :cond_fc + +- :catchall_84 +- move-exception v2 ++ move-object/from16 v0, p0 + +- :try_start_85 +- monitor-exit v4 +- :try_end_86 +- .catchall {:try_start_85 .. :try_end_86} :catchall_84 ++ iget-object v2, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; + +- throw v2 ++ invoke-virtual {v2}, Landroid/privacy/PrivacySettingsManager;->isServiceAvailable()Z + +- :cond_87 +- const/4 v8, 0x0 ++ move-result v2 + +- goto :goto_6c ++ if-nez v2, :cond_193 + +- :catch_89 +- move-exception v2 ++ :cond_fc ++ new-instance v2, Landroid/privacy/PrivacySettingsManager; + +- goto :goto_82 +-.end method ++ const-string/jumbo v4, "privacy" + +-.method public execStartActivity(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/app/Activity;Landroid/content/Intent;ILandroid/os/Bundle;Landroid/os/UserHandle;)Landroid/app/Instrumentation$ActivityResult; +- .registers 29 ++ invoke-static {v4}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; + +- move-object/from16 v4, p2 ++ move-result-object v4 + +- check-cast v4, Landroid/app/IApplicationThread; ++ invoke-static {v4}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; + +- move-object/from16 v0, p0 ++ move-result-object v4 + +- iget-object v3, v0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; ++ move-object/from16 v0, p1 + +- if-eqz v3, :cond_56 ++ invoke-direct {v2, v0, v4}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V + + move-object/from16 v0, p0 + +- iget-object v5, v0, Landroid/app/Instrumentation;->mSync:Ljava/lang/Object; +- +- monitor-enter v5 ++ iput-object v2, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; + +- :try_start_f + move-object/from16 v0, p0 + +- iget-object v3, v0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; +- +- invoke-interface {v3}, Ljava/util/List;->size()I ++ iget-object v2, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; + +- move-result v16 ++ if-eqz v2, :cond_18b + +- const/16 v18, 0x0 ++ const-string v2, "Instrumentation" + +- :goto_19 +- move/from16 v0, v18 ++ const-string v4, "PDroid:Instrumentation:execStartActivitiesAsUser: Obtained privacy service" + +- move/from16 v1, v16 ++ invoke-static {v2, v4}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I + +- if-ge v0, v1, :cond_55 ++ :goto_11f ++ const/4 v11, 0x0 + + move-object/from16 v0, p0 + +- iget-object v3, v0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; +- +- move/from16 v0, v18 ++ iget-object v2, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; + +- invoke-interface {v3, v0}, Ljava/util/List;->get(I)Ljava/lang/Object; ++ if-eqz v2, :cond_130 + +- move-result-object v17 ++ move-object/from16 v0, p0 + +- check-cast v17, Landroid/app/Instrumentation$ActivityMonitor; ++ iget-object v2, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; + +- const/4 v3, 0x0 ++ invoke-virtual {v2}, Landroid/privacy/PrivacySettingsManager;->isServiceAvailable()Z + +- move-object/from16 v0, v17 ++ move-result v2 + +- move-object/from16 v1, p1 ++ if-nez v2, :cond_19b + +- move-object/from16 v2, p5 ++ :cond_130 ++ const-string v2, "Instrumentation" + +- invoke-virtual {v0, v1, v3, v2}, Landroid/app/Instrumentation$ActivityMonitor;->match(Landroid/content/Context;Landroid/app/Activity;Landroid/content/Intent;)Z ++ const-string v4, "PDroid:Instrumentation:execStartActivitiesAsUser: Privacy service not available - assuming permission denied" + +- move-result v3 ++ invoke-static {v2, v4}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I + +- if-eqz v3, :cond_52 ++ const/4 v11, 0x0 + +- move-object/from16 v0, v17 ++ move-object/from16 v0, p0 + +- iget v3, v0, Landroid/app/Instrumentation$ActivityMonitor;->mHits:I ++ iget-object v2, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; + +- add-int/lit8 v3, v3, 0x1 ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; + +- move-object/from16 v0, v17 ++ move-result-object v4 + +- iput v3, v0, Landroid/app/Instrumentation$ActivityMonitor;->mHits:I ++ const/4 v5, 0x1 + +- invoke-virtual/range {v17 .. v17}, Landroid/app/Instrumentation$ActivityMonitor;->isBlocking()Z ++ const-string/jumbo v7, "phoneCall" + +- move-result v3 ++ const/4 v8, 0x0 + +- if-eqz v3, :cond_55 ++ invoke-virtual {v2, v4, v5, v7, v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V + +- if-ltz p6, :cond_50 ++ :goto_148 ++ if-nez v11, :cond_6f + +- invoke-virtual/range {v17 .. v17}, Landroid/app/Instrumentation$ActivityMonitor;->getResult()Landroid/app/Instrumentation$ActivityResult; ++ new-instance v16, Ljava/util/ArrayList; + +- move-result-object v3 ++ move-object/from16 v0, p5 + +- :goto_4e +- monitor-exit v5 ++ array-length v2, v0 + +- :goto_4f +- return-object v3 ++ move-object/from16 v0, v16 + +- :cond_50 +- const/4 v3, 0x0 ++ invoke-direct {v0, v2}, Ljava/util/ArrayList;->(I)V + +- goto :goto_4e ++ move-object/from16 v13, p5 + +- :cond_52 +- add-int/lit8 v18, v18, 0x1 ++ array-length v0, v13 + +- goto :goto_19 ++ move/from16 v20, v0 + +- :cond_55 +- monitor-exit v5 +- :try_end_56 +- .catchall {:try_start_f .. :try_end_56} :catchall_90 ++ const/16 v18, 0x0 + +- :cond_56 +- :try_start_56 +- invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->migrateExtraStreamToClipData()Z ++ :goto_15b ++ move/from16 v0, v18 + +- invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->prepareToLeaveProcess()V ++ move/from16 v1, v20 + +- invoke-static {}, Landroid/app/ActivityManagerNative;->getDefault()Landroid/app/IActivityManager; ++ if-ge v0, v1, :cond_261 + +- move-result-object v3 ++ aget-object v19, v13, v18 + +- invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getBasePackageName()Ljava/lang/String; ++ :try_start_163 ++ invoke-virtual/range {v19 .. v19}, Landroid/content/Intent;->getAction()Ljava/lang/String; + +- move-result-object v5 ++ move-result-object v2 + +- invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver; ++ if-eqz v2, :cond_181 + +- move-result-object v6 ++ invoke-virtual/range {v19 .. v19}, Landroid/content/Intent;->getAction()Ljava/lang/String; + +- move-object/from16 v0, p5 ++ move-result-object v2 + +- invoke-virtual {v0, v6}, Landroid/content/Intent;->resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String; ++ const-string v4, "android.intent.action.CALL" + +- move-result-object v7 ++ invoke-virtual {v2, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z + +- if-eqz p4, :cond_93 ++ move-result v2 + +- move-object/from16 v0, p4 ++ if-nez v2, :cond_188 + +- iget-object v9, v0, Landroid/app/Activity;->mEmbeddedID:Ljava/lang/String; ++ invoke-virtual/range {v19 .. v19}, Landroid/content/Intent;->getAction()Ljava/lang/String; + +- :goto_74 +- const/4 v11, 0x0 ++ move-result-object v2 + +- const/4 v12, 0x0 ++ const-string v4, "android.intent.action.DIAL" + +- const/4 v13, 0x0 ++ invoke-virtual {v2, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z + +- invoke-virtual/range {p8 .. p8}, Landroid/os/UserHandle;->getIdentifier()I ++ move-result v2 + +- move-result v15 ++ if-nez v2, :cond_188 + +- move-object/from16 v6, p5 ++ :cond_181 ++ move-object/from16 v0, v16 + +- move-object/from16 v8, p3 ++ move-object/from16 v1, v19 + +- move/from16 v10, p6 ++ invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z ++ :try_end_188 ++ .catch Ljava/lang/Exception; {:try_start_163 .. :try_end_188} :catch_242 + +- move-object/from16 v14, p7 ++ :cond_188 ++ :goto_188 ++ add-int/lit8 v18, v18, 0x1 + +- invoke-interface/range {v3 .. v15}, Landroid/app/IActivityManager;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/os/Bundle;I)I ++ goto :goto_15b + +- move-result v19 ++ :cond_18b ++ const-string v2, "Instrumentation" + +- move/from16 v0, v19 ++ const-string v4, "PDroid:Instrumentation:execStartActivitiesAsUser: Privacy service not obtained" + +- move-object/from16 v1, p5 ++ invoke-static {v2, v4}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I + +- invoke-static {v0, v1}, Landroid/app/Instrumentation;->checkStartActivityResult(ILjava/lang/Object;)V +- :try_end_8e +- .catch Landroid/os/RemoteException; {:try_start_56 .. :try_end_8e} :catch_95 ++ goto :goto_11f + +- :goto_8e +- const/4 v3, 0x0 ++ :cond_193 ++ const-string v2, "Instrumentation" + +- goto :goto_4f ++ const-string v4, "PDroid:Instrumentation:execStartActivitiesAsUser: Already had privacy service" + +- :catchall_90 +- move-exception v3 ++ invoke-static {v2, v4}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I + +- :try_start_91 +- monitor-exit v5 +- :try_end_92 +- .catchall {:try_start_91 .. :try_end_92} :catchall_90 ++ goto :goto_11f + +- throw v3 ++ :cond_19b ++ move-object/from16 v0, p0 + +- :cond_93 +- const/4 v9, 0x0 ++ iget-object v2, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; + +- goto :goto_74 ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; + +- :catch_95 +- move-exception v3 ++ move-result-object v4 + +- goto :goto_8e +-.end method ++ invoke-virtual {v2, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;)Landroid/privacy/PrivacySettings; + +-.method public execStartActivity(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/app/Fragment;Landroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/Instrumentation$ActivityResult; +- .registers 26 ++ move-result-object v21 + +- move-object/from16 v3, p2 ++ if-nez v21, :cond_1d8 + +- check-cast v3, Landroid/app/IApplicationThread; ++ const-string v2, "Instrumentation" + +- move-object/from16 v0, p0 ++ new-instance v4, Ljava/lang/StringBuilder; + +- iget-object v2, v0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V + +- if-eqz v2, :cond_4e ++ const-string v5, "PDroid:Instrumentation:execStartActivitiesAsUser: Call intents allowed: No settings for package: " + +- move-object/from16 v0, p0 ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- iget-object v4, v0, Landroid/app/Instrumentation;->mSync:Ljava/lang/Object; ++ move-result-object v4 + +- monitor-enter v4 ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; + +- :try_start_f +- move-object/from16 v0, p0 ++ move-result-object v5 + +- iget-object v2, v0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- invoke-interface {v2}, Ljava/util/List;->size()I ++ move-result-object v4 + +- move-result v14 ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- const/16 v16, 0x0 ++ move-result-object v4 + +- :goto_19 +- move/from16 v0, v16 ++ invoke-static {v2, v4}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I + +- if-ge v0, v14, :cond_4d ++ const/4 v11, 0x1 + + move-object/from16 v0, p0 + +- iget-object v2, v0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; ++ iget-object v2, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; + +- move/from16 v0, v16 ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; + +- invoke-interface {v2, v0}, Ljava/util/List;->get(I)Ljava/lang/Object; ++ move-result-object v4 + +- move-result-object v15 ++ const/4 v5, 0x1 + +- check-cast v15, Landroid/app/Instrumentation$ActivityMonitor; ++ const-string/jumbo v7, "phoneCall" + +- const/4 v2, 0x0 ++ const/4 v8, 0x0 + +- move-object/from16 v0, p1 ++ invoke-virtual {v2, v4, v5, v7, v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V + +- move-object/from16 v1, p5 ++ goto/16 :goto_148 + +- invoke-virtual {v15, v0, v2, v1}, Landroid/app/Instrumentation$ActivityMonitor;->match(Landroid/content/Context;Landroid/app/Activity;Landroid/content/Intent;)Z ++ :cond_1d8 ++ invoke-virtual/range {v21 .. v21}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B + + move-result v2 + +- if-eqz v2, :cond_4a ++ if-nez v2, :cond_210 + +- iget v2, v15, Landroid/app/Instrumentation$ActivityMonitor;->mHits:I ++ const-string v2, "Instrumentation" + +- add-int/lit8 v2, v2, 0x1 ++ new-instance v4, Ljava/lang/StringBuilder; + +- iput v2, v15, Landroid/app/Instrumentation$ActivityMonitor;->mHits:I ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V + +- invoke-virtual {v15}, Landroid/app/Instrumentation$ActivityMonitor;->isBlocking()Z ++ const-string v5, "PDroid:Instrumentation:execStartActivitiesAsUser: Call intents allowed: Settings permit " + +- move-result v2 ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- if-eqz v2, :cond_4d ++ move-result-object v4 + +- if-ltz p6, :cond_48 ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; + +- invoke-virtual {v15}, Landroid/app/Instrumentation$ActivityMonitor;->getResult()Landroid/app/Instrumentation$ActivityResult; ++ move-result-object v5 + +- move-result-object v2 ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- :goto_46 +- monitor-exit v4 ++ move-result-object v4 + +- :goto_47 +- return-object v2 ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- :cond_48 +- const/4 v2, 0x0 ++ move-result-object v4 + +- goto :goto_46 ++ invoke-static {v2, v4}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I + +- :cond_4a +- add-int/lit8 v16, v16, 0x1 ++ const/4 v11, 0x1 + +- goto :goto_19 ++ move-object/from16 v0, p0 + +- :cond_4d +- monitor-exit v4 +- :try_end_4e +- .catchall {:try_start_f .. :try_end_4e} :catchall_84 ++ iget-object v2, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; + +- :cond_4e +- :try_start_4e +- invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->migrateExtraStreamToClipData()Z ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; + +- invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->prepareToLeaveProcess()V ++ move-result-object v4 + +- invoke-static {}, Landroid/app/ActivityManagerNative;->getDefault()Landroid/app/IActivityManager; ++ invoke-virtual/range {v21 .. v21}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B + +- move-result-object v2 ++ move-result v5 + +- invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getBasePackageName()Ljava/lang/String; ++ const-string/jumbo v7, "phoneCall" + +- move-result-object v4 ++ const/4 v8, 0x0 + +- invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver; ++ invoke-virtual {v2, v4, v5, v7, v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V + +- move-result-object v5 ++ goto/16 :goto_148 + +- move-object/from16 v0, p5 ++ :cond_210 ++ const-string v2, "Instrumentation" + +- invoke-virtual {v0, v5}, Landroid/content/Intent;->resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String; ++ new-instance v4, Ljava/lang/StringBuilder; + +- move-result-object v6 ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V + +- if-eqz p4, :cond_87 ++ const-string v5, "PDroid:Instrumentation:execStartActivitiesAsUser: Call intents denied: Settings deny " + +- move-object/from16 v0, p4 ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- iget-object v8, v0, Landroid/app/Fragment;->mWho:Ljava/lang/String; ++ move-result-object v4 + +- :goto_6c +- const/4 v10, 0x0 ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; + +- const/4 v11, 0x0 ++ move-result-object v5 + +- const/4 v12, 0x0 ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-object/from16 v5, p5 ++ move-result-object v4 + +- move-object/from16 v7, p3 ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v2, v4}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v11, 0x0 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v2, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual/range {v21 .. v21}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v5 ++ ++ const-string/jumbo v7, "phoneCall" ++ ++ const/4 v8, 0x0 ++ ++ invoke-virtual {v2, v4, v5, v7, v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ ++ goto/16 :goto_148 ++ ++ :catch_242 ++ move-exception v15 ++ ++ const-string v2, "Instrumentation" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivitiesAsUser: Exception occurred when checking intent for " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v2, v4, v15}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto/16 :goto_188 ++ ++ :cond_261 ++ invoke-interface/range {v16 .. v16}, Ljava/util/List;->size()I ++ ++ move-result v2 ++ ++ new-array v2, v2, [Landroid/content/Intent; ++ ++ move-object/from16 v0, v16 ++ ++ invoke-interface {v0, v2}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; ++ ++ move-result-object p5 ++ ++ check-cast p5, [Landroid/content/Intent; ++ ++ move-object/from16 v23, p1 ++ ++ new-instance v2, Ljava/lang/Thread; ++ ++ new-instance v4, Landroid/app/Instrumentation$2; ++ ++ move-object/from16 v0, p0 ++ ++ move-object/from16 v1, v23 ++ ++ invoke-direct {v4, v0, v1}, Landroid/app/Instrumentation$2;->(Landroid/app/Instrumentation;Landroid/content/Context;)V ++ ++ invoke-direct {v2, v4}, Ljava/lang/Thread;->(Ljava/lang/Runnable;)V ++ ++ invoke-virtual {v2}, Ljava/lang/Thread;->start()V ++ ++ goto/16 :goto_6f ++ ++ :cond_284 ++ add-int/lit8 v17, v17, 0x1 ++ ++ goto/16 :goto_84 ++ ++ :cond_288 ++ :try_start_288 ++ monitor-exit v4 ++ :try_end_289 ++ .catchall {:try_start_288 .. :try_end_289} :catchall_2b0 + +- move/from16 v9, p6 ++ :cond_289 ++ :try_start_289 ++ move-object/from16 v0, p5 ++ ++ array-length v2, v0 + +- move-object/from16 v13, p7 ++ new-array v6, v2, [Ljava/lang/String; + +- invoke-interface/range {v2 .. v13}, Landroid/app/IActivityManager;->startActivity(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/os/Bundle;)I ++ const/16 v17, 0x0 ++ ++ :goto_290 ++ move-object/from16 v0, p5 + +- move-result v17 ++ array-length v2, v0 + + move/from16 v0, v17 + +- move-object/from16 v1, p5 ++ if-ge v0, v2, :cond_2b3 + +- invoke-static {v0, v1}, Landroid/app/Instrumentation;->checkStartActivityResult(ILjava/lang/Object;)V +- :try_end_82 +- .catch Landroid/os/RemoteException; {:try_start_4e .. :try_end_82} :catch_89 ++ aget-object v2, p5, v17 + +- :goto_82 +- const/4 v2, 0x0 ++ invoke-virtual {v2}, Landroid/content/Intent;->migrateExtraStreamToClipData()Z ++ ++ aget-object v2, p5, v17 ++ ++ invoke-virtual {v2}, Landroid/content/Intent;->prepareToLeaveProcess()V ++ ++ aget-object v2, p5, v17 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v2, v4}, Landroid/content/Intent;->resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ aput-object v2, v6, v17 ++ :try_end_2ad ++ .catch Landroid/os/RemoteException; {:try_start_289 .. :try_end_2ad} :catch_2d1 + +- goto :goto_47 ++ add-int/lit8 v17, v17, 0x1 + +- :catchall_84 ++ goto :goto_290 ++ ++ :catchall_2b0 + move-exception v2 + +- :try_start_85 ++ :try_start_2b1 + monitor-exit v4 +- :try_end_86 +- .catchall {:try_start_85 .. :try_end_86} :catchall_84 ++ :try_end_2b2 ++ .catchall {:try_start_2b1 .. :try_end_2b2} :catchall_2b0 + + throw v2 + +- :cond_87 +- const/4 v8, 0x0 ++ :cond_2b3 ++ :try_start_2b3 ++ invoke-static {}, Landroid/app/ActivityManagerNative;->getDefault()Landroid/app/IActivityManager; ++ ++ move-result-object v2 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getBasePackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ move-object/from16 v5, p5 ++ ++ move-object/from16 v7, p3 ++ ++ move-object/from16 v8, p6 + +- goto :goto_6c ++ move/from16 v9, p7 + +- :catch_89 ++ invoke-interface/range {v2 .. v9}, Landroid/app/IActivityManager;->startActivities(Landroid/app/IApplicationThread;Ljava/lang/String;[Landroid/content/Intent;[Ljava/lang/String;Landroid/os/IBinder;Landroid/os/Bundle;I)I ++ ++ move-result v22 ++ ++ const/4 v2, 0x0 ++ ++ aget-object v2, p5, v2 ++ ++ move/from16 v0, v22 ++ ++ invoke-static {v0, v2}, Landroid/app/Instrumentation;->checkStartActivityResult(ILjava/lang/Object;)V ++ :try_end_2cf ++ .catch Landroid/os/RemoteException; {:try_start_2b3 .. :try_end_2cf} :catch_2d1 ++ ++ goto/16 :goto_ad ++ ++ :catch_2d1 + move-exception v2 + +- goto :goto_82 ++ goto/16 :goto_ad ++.end method ++ ++.method public execStartActivity(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/app/Activity;Landroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/Instrumentation$ActivityResult; ++ .registers 31 ++ ++ move-object/from16 v4, p2 ++ ++ check-cast v4, Landroid/app/IApplicationThread; ++ ++ const/16 v16, 0x1 ++ ++ :try_start_6 ++ const-string v3, "Instrumentation" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PDroid:Instrumentation:execStartActivity: execStartActivity for " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->getAction()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ if-eqz v3, :cond_ba ++ ++ invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->getAction()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ const-string v5, "android.intent.action.CALL" ++ ++ invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v3 ++ ++ if-nez v3, :cond_40 ++ ++ invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->getAction()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ const-string v5, "android.intent.action.DIAL" ++ ++ invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_ba ++ ++ :cond_40 ++ const/16 v16, 0x0 ++ ++ const-string v3, "Instrumentation" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PDroid:Instrumentation:execStartActivity: Intent action = Intent.ACTION_CALL or Intent.ACTION_DIAL for " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v3, :cond_6e ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v3}, Landroid/privacy/PrivacySettingsManager;->isServiceAvailable()Z ++ ++ move-result v3 ++ ++ if-nez v3, :cond_12e ++ ++ :cond_6e ++ new-instance v3, Landroid/privacy/PrivacySettingsManager; ++ ++ const-string/jumbo v5, "privacy" ++ ++ invoke-static {v5}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v5 ++ ++ invoke-static {v5}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, p1 ++ ++ invoke-direct {v3, v0, v5}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ move-object/from16 v0, p0 ++ ++ iput-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v3, :cond_104 ++ ++ const-string v3, "Instrumentation" ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivity: Obtained privacy service" ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :goto_91 ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v3, :cond_a1 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v3}, Landroid/privacy/PrivacySettingsManager;->isServiceAvailable()Z ++ ++ move-result v3 ++ ++ if-nez v3, :cond_137 ++ ++ :cond_a1 ++ const-string v3, "Instrumentation" ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivity: Privacy service not available: rejecting call attempt" ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/16 v16, 0x0 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ const/4 v6, 0x1 ++ ++ const-string/jumbo v7, "phoneCall" ++ ++ const/4 v8, 0x0 ++ ++ invoke-virtual {v3, v5, v6, v7, v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ :try_end_ba ++ .catch Ljava/lang/Exception; {:try_start_6 .. :try_end_ba} :catch_10c ++ ++ :cond_ba ++ :goto_ba ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; ++ ++ if-eqz v3, :cond_207 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v5, v0, Landroid/app/Instrumentation;->mSync:Ljava/lang/Object; ++ ++ monitor-enter v5 ++ ++ :try_start_c5 ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; ++ ++ invoke-interface {v3}, Ljava/util/List;->size()I ++ ++ move-result v15 ++ ++ const/16 v19, 0x0 ++ ++ :goto_cf ++ move/from16 v0, v19 ++ ++ if-ge v0, v15, :cond_206 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; ++ ++ move/from16 v0, v19 ++ ++ invoke-interface {v3, v0}, Ljava/util/List;->get(I)Ljava/lang/Object; ++ ++ move-result-object v17 ++ ++ check-cast v17, Landroid/app/Instrumentation$ActivityMonitor; ++ ++ const/4 v3, 0x0 ++ ++ move-object/from16 v0, v17 ++ ++ move-object/from16 v1, p1 ++ ++ move-object/from16 v2, p5 ++ ++ invoke-virtual {v0, v1, v3, v2}, Landroid/app/Instrumentation$ActivityMonitor;->match(Landroid/content/Context;Landroid/app/Activity;Landroid/content/Intent;)Z ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_202 ++ ++ move-object/from16 v0, v17 ++ ++ iget v3, v0, Landroid/app/Instrumentation$ActivityMonitor;->mHits:I ++ ++ add-int/lit8 v3, v3, 0x1 ++ ++ move-object/from16 v0, v17 ++ ++ iput v3, v0, Landroid/app/Instrumentation$ActivityMonitor;->mHits:I ++ ++ invoke-virtual/range {v17 .. v17}, Landroid/app/Instrumentation$ActivityMonitor;->isBlocking()Z ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_206 ++ ++ if-ltz p6, :cond_1ff ++ ++ invoke-virtual/range {v17 .. v17}, Landroid/app/Instrumentation$ActivityMonitor;->getResult()Landroid/app/Instrumentation$ActivityResult; ++ ++ move-result-object v3 ++ ++ :goto_102 ++ monitor-exit v5 ++ :try_end_103 ++ .catchall {:try_start_c5 .. :try_end_103} :catchall_221 ++ ++ :goto_103 ++ return-object v3 ++ ++ :cond_104 ++ :try_start_104 ++ const-string v3, "Instrumentation" ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivity: Privacy service not obtained" ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_10b ++ .catch Ljava/lang/Exception; {:try_start_104 .. :try_end_10b} :catch_10c ++ ++ goto :goto_91 ++ ++ :catch_10c ++ move-exception v18 ++ ++ if-eqz p1, :cond_1f4 ++ ++ const-string v3, "Instrumentation" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PDroid:Instrumentation:execStartActivity: Exception occurred handling intent for " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v18 ++ ++ invoke-static {v3, v5, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto :goto_ba ++ ++ :cond_12e ++ :try_start_12e ++ const-string v3, "Instrumentation" ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivity: Already had privacy service" ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto/16 :goto_91 ++ ++ :cond_137 ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v3, v5}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v20 ++ ++ if-nez v20, :cond_175 ++ ++ const-string v3, "Instrumentation" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PDroid:Instrumentation:execStartActivity: Call allowed: No settings for package: " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/16 v16, 0x1 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ const/4 v6, 0x0 ++ ++ const-string/jumbo v7, "phoneCall" ++ ++ const/4 v8, 0x0 ++ ++ invoke-virtual {v3, v5, v6, v7, v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ ++ goto/16 :goto_ba ++ ++ :cond_175 ++ invoke-virtual/range {v20 .. v20}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v3 ++ ++ if-nez v3, :cond_1ae ++ ++ const-string v3, "Instrumentation" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PDroid:Instrumentation:execStartActivity: Call allowed: Settings permit " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/16 v16, 0x1 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {v20 .. v20}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v6 ++ ++ const-string/jumbo v7, "phoneCall" ++ ++ const/4 v8, 0x0 ++ ++ invoke-virtual {v3, v5, v6, v7, v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ ++ goto/16 :goto_ba ++ ++ :cond_1ae ++ const-string v3, "Instrumentation" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PDroid:Instrumentation:execStartActivity: Call denied: Settings deny " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/16 v16, 0x0 ++ ++ move-object/from16 v22, p1 ++ ++ new-instance v3, Ljava/lang/Thread; ++ ++ new-instance v5, Landroid/app/Instrumentation$1; ++ ++ move-object/from16 v0, p0 ++ ++ move-object/from16 v1, v22 ++ ++ invoke-direct {v5, v0, v1}, Landroid/app/Instrumentation$1;->(Landroid/app/Instrumentation;Landroid/content/Context;)V ++ ++ invoke-direct {v3, v5}, Ljava/lang/Thread;->(Ljava/lang/Runnable;)V ++ ++ invoke-virtual {v3}, Ljava/lang/Thread;->start()V ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {v20 .. v20}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v6 ++ ++ const-string/jumbo v7, "phoneCall" ++ ++ const/4 v8, 0x0 ++ ++ invoke-virtual {v3, v5, v6, v7, v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ :try_end_1f2 ++ .catch Ljava/lang/Exception; {:try_start_12e .. :try_end_1f2} :catch_10c ++ ++ goto/16 :goto_ba ++ ++ :cond_1f4 ++ const-string v3, "Instrumentation" ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivity: Exception occurred handling intent for unknown package" ++ ++ move-object/from16 v0, v18 ++ ++ invoke-static {v3, v5, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto/16 :goto_ba ++ ++ :cond_1ff ++ const/4 v3, 0x0 ++ ++ goto/16 :goto_102 ++ ++ :cond_202 ++ add-int/lit8 v19, v19, 0x1 ++ ++ goto/16 :goto_cf ++ ++ :cond_206 ++ :try_start_206 ++ monitor-exit v5 ++ :try_end_207 ++ .catchall {:try_start_206 .. :try_end_207} :catchall_221 ++ ++ :cond_207 ++ if-nez v16, :cond_224 ++ ++ :try_start_209 ++ new-instance v3, Landroid/app/Instrumentation$ActivityResult; ++ ++ move/from16 v0, p6 ++ ++ move-object/from16 v1, p5 ++ ++ invoke-direct {v3, v0, v1}, Landroid/app/Instrumentation$ActivityResult;->(ILandroid/content/Intent;)V ++ :try_end_212 ++ .catch Ljava/lang/Exception; {:try_start_209 .. :try_end_212} :catch_214 ++ ++ goto/16 :goto_103 ++ ++ :catch_214 ++ move-exception v18 ++ ++ const-string v3, "Instrumentation" ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivity: Exception occurred while trying to create ActivityResult" ++ ++ move-object/from16 v0, v18 ++ ++ invoke-static {v3, v5, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ const/4 v3, 0x0 ++ ++ goto/16 :goto_103 ++ ++ :catchall_221 ++ move-exception v3 ++ ++ :try_start_222 ++ monitor-exit v5 ++ :try_end_223 ++ .catchall {:try_start_222 .. :try_end_223} :catchall_221 ++ ++ throw v3 ++ ++ :cond_224 ++ :try_start_224 ++ invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->migrateExtraStreamToClipData()Z ++ ++ invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->prepareToLeaveProcess()V ++ ++ invoke-static {}, Landroid/app/ActivityManagerNative;->getDefault()Landroid/app/IActivityManager; ++ ++ move-result-object v3 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getBasePackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver; ++ ++ move-result-object v6 ++ ++ move-object/from16 v0, p5 ++ ++ invoke-virtual {v0, v6}, Landroid/content/Intent;->resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String; ++ ++ move-result-object v7 ++ ++ if-eqz p4, :cond_25b ++ ++ move-object/from16 v0, p4 ++ ++ iget-object v9, v0, Landroid/app/Activity;->mEmbeddedID:Ljava/lang/String; ++ ++ :goto_242 ++ const/4 v11, 0x0 ++ ++ const/4 v12, 0x0 ++ ++ const/4 v13, 0x0 ++ ++ move-object/from16 v6, p5 ++ ++ move-object/from16 v8, p3 ++ ++ move/from16 v10, p6 ++ ++ move-object/from16 v14, p7 ++ ++ invoke-interface/range {v3 .. v14}, Landroid/app/IActivityManager;->startActivity(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/os/Bundle;)I ++ ++ move-result v21 ++ ++ move/from16 v0, v21 ++ ++ move-object/from16 v1, p5 ++ ++ invoke-static {v0, v1}, Landroid/app/Instrumentation;->checkStartActivityResult(ILjava/lang/Object;)V ++ :try_end_258 ++ .catch Landroid/os/RemoteException; {:try_start_224 .. :try_end_258} :catch_25d ++ ++ :goto_258 ++ const/4 v3, 0x0 ++ ++ goto/16 :goto_103 ++ ++ :cond_25b ++ const/4 v9, 0x0 ++ ++ goto :goto_242 ++ ++ :catch_25d ++ move-exception v3 ++ ++ goto :goto_258 ++.end method ++ ++.method public execStartActivity(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/app/Activity;Landroid/content/Intent;ILandroid/os/Bundle;Landroid/os/UserHandle;)Landroid/app/Instrumentation$ActivityResult; ++ .registers 33 ++ ++ move-object/from16 v4, p2 ++ ++ check-cast v4, Landroid/app/IApplicationThread; ++ ++ const/16 v17, 0x1 ++ ++ :try_start_6 ++ const-string v3, "Instrumentation" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PDroid:Instrumentation:execStartActivity (with UserHandle): execStartActivity for " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->getAction()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ if-eqz v3, :cond_ba ++ ++ invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->getAction()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ const-string v5, "android.intent.action.CALL" ++ ++ invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v3 ++ ++ if-nez v3, :cond_40 ++ ++ invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->getAction()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ const-string v5, "android.intent.action.DIAL" ++ ++ invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_ba ++ ++ :cond_40 ++ const/16 v17, 0x0 ++ ++ const-string v3, "Instrumentation" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PDroid:Instrumentation:execStartActivity (with UserHandle): Intent action = Intent.ACTION_CALL or Intent.ACTION_DIAL for " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v3, :cond_6e ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v3}, Landroid/privacy/PrivacySettingsManager;->isServiceAvailable()Z ++ ++ move-result v3 ++ ++ if-nez v3, :cond_130 ++ ++ :cond_6e ++ new-instance v3, Landroid/privacy/PrivacySettingsManager; ++ ++ const-string/jumbo v5, "privacy" ++ ++ invoke-static {v5}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v5 ++ ++ invoke-static {v5}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, p1 ++ ++ invoke-direct {v3, v0, v5}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ move-object/from16 v0, p0 ++ ++ iput-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v3, :cond_106 ++ ++ const-string v3, "Instrumentation" ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivity (with UserHandle): Obtained privacy service" ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :goto_91 ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v3, :cond_a1 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v3}, Landroid/privacy/PrivacySettingsManager;->isServiceAvailable()Z ++ ++ move-result v3 ++ ++ if-nez v3, :cond_139 ++ ++ :cond_a1 ++ const-string v3, "Instrumentation" ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivity (with UserHandle): Privacy service not available: rejecting call attempt" ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/16 v17, 0x0 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ const/4 v6, 0x1 ++ ++ const-string/jumbo v7, "phoneCall" ++ ++ const/4 v8, 0x0 ++ ++ invoke-virtual {v3, v5, v6, v7, v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ :try_end_ba ++ .catch Ljava/lang/Exception; {:try_start_6 .. :try_end_ba} :catch_10e ++ ++ :cond_ba ++ :goto_ba ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; ++ ++ if-eqz v3, :cond_209 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v5, v0, Landroid/app/Instrumentation;->mSync:Ljava/lang/Object; ++ ++ monitor-enter v5 ++ ++ :try_start_c5 ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; ++ ++ invoke-interface {v3}, Ljava/util/List;->size()I ++ ++ move-result v16 ++ ++ const/16 v20, 0x0 ++ ++ :goto_cf ++ move/from16 v0, v20 ++ ++ move/from16 v1, v16 ++ ++ if-ge v0, v1, :cond_208 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; ++ ++ move/from16 v0, v20 ++ ++ invoke-interface {v3, v0}, Ljava/util/List;->get(I)Ljava/lang/Object; ++ ++ move-result-object v18 ++ ++ check-cast v18, Landroid/app/Instrumentation$ActivityMonitor; ++ ++ const/4 v3, 0x0 ++ ++ move-object/from16 v0, v18 ++ ++ move-object/from16 v1, p1 ++ ++ move-object/from16 v2, p5 ++ ++ invoke-virtual {v0, v1, v3, v2}, Landroid/app/Instrumentation$ActivityMonitor;->match(Landroid/content/Context;Landroid/app/Activity;Landroid/content/Intent;)Z ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_204 ++ ++ move-object/from16 v0, v18 ++ ++ iget v3, v0, Landroid/app/Instrumentation$ActivityMonitor;->mHits:I ++ ++ add-int/lit8 v3, v3, 0x1 ++ ++ move-object/from16 v0, v18 ++ ++ iput v3, v0, Landroid/app/Instrumentation$ActivityMonitor;->mHits:I ++ ++ invoke-virtual/range {v18 .. v18}, Landroid/app/Instrumentation$ActivityMonitor;->isBlocking()Z ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_208 ++ ++ if-ltz p6, :cond_201 ++ ++ invoke-virtual/range {v18 .. v18}, Landroid/app/Instrumentation$ActivityMonitor;->getResult()Landroid/app/Instrumentation$ActivityResult; ++ ++ move-result-object v3 ++ ++ :goto_104 ++ monitor-exit v5 ++ :try_end_105 ++ .catchall {:try_start_c5 .. :try_end_105} :catchall_223 ++ ++ :goto_105 ++ return-object v3 ++ ++ :cond_106 ++ :try_start_106 ++ const-string v3, "Instrumentation" ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivity (with UserHandle): Privacy service not obtained" ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_10d ++ .catch Ljava/lang/Exception; {:try_start_106 .. :try_end_10d} :catch_10e ++ ++ goto :goto_91 ++ ++ :catch_10e ++ move-exception v19 ++ ++ if-eqz p1, :cond_1f6 ++ ++ const-string v3, "Instrumentation" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PDroid:Instrumentation:execStartActivity (with UserHandle): Exception occurred handling intent for " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v19 ++ ++ invoke-static {v3, v5, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto :goto_ba ++ ++ :cond_130 ++ :try_start_130 ++ const-string v3, "Instrumentation" ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivity (with UserHandle): Already had privacy service" ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto/16 :goto_91 ++ ++ :cond_139 ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v3, v5}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v21 ++ ++ if-nez v21, :cond_177 ++ ++ const-string v3, "Instrumentation" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PDroid:Instrumentation:execStartActivity (with UserHandle): Call allowed: No settings for package: " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/16 v17, 0x1 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ const/4 v6, 0x0 ++ ++ const-string/jumbo v7, "phoneCall" ++ ++ const/4 v8, 0x0 ++ ++ invoke-virtual {v3, v5, v6, v7, v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ ++ goto/16 :goto_ba ++ ++ :cond_177 ++ invoke-virtual/range {v21 .. v21}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v3 ++ ++ if-nez v3, :cond_1b0 ++ ++ const-string v3, "Instrumentation" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PDroid:Instrumentation:execStartActivity (with UserHandle): Call allowed: Settings permit " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/16 v17, 0x1 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {v21 .. v21}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v6 ++ ++ const-string/jumbo v7, "phoneCall" ++ ++ const/4 v8, 0x0 ++ ++ invoke-virtual {v3, v5, v6, v7, v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ ++ goto/16 :goto_ba ++ ++ :cond_1b0 ++ const-string v3, "Instrumentation" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PDroid:Instrumentation:execStartActivity (with UserHandle): Call denied: Settings deny " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ move-object/from16 v23, p1 ++ ++ const/16 v17, 0x0 ++ ++ new-instance v3, Ljava/lang/Thread; ++ ++ new-instance v5, Landroid/app/Instrumentation$4; ++ ++ move-object/from16 v0, p0 ++ ++ move-object/from16 v1, v23 ++ ++ invoke-direct {v5, v0, v1}, Landroid/app/Instrumentation$4;->(Landroid/app/Instrumentation;Landroid/content/Context;)V ++ ++ invoke-direct {v3, v5}, Ljava/lang/Thread;->(Ljava/lang/Runnable;)V ++ ++ invoke-virtual {v3}, Ljava/lang/Thread;->start()V ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {v21 .. v21}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v6 ++ ++ const-string/jumbo v7, "phoneCall" ++ ++ const/4 v8, 0x0 ++ ++ invoke-virtual {v3, v5, v6, v7, v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ :try_end_1f4 ++ .catch Ljava/lang/Exception; {:try_start_130 .. :try_end_1f4} :catch_10e ++ ++ goto/16 :goto_ba ++ ++ :cond_1f6 ++ const-string v3, "Instrumentation" ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivity (with UserHandle): Exception occurred handling intent for unknown package" ++ ++ move-object/from16 v0, v19 ++ ++ invoke-static {v3, v5, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto/16 :goto_ba ++ ++ :cond_201 ++ const/4 v3, 0x0 ++ ++ goto/16 :goto_104 ++ ++ :cond_204 ++ add-int/lit8 v20, v20, 0x1 ++ ++ goto/16 :goto_cf ++ ++ :cond_208 ++ :try_start_208 ++ monitor-exit v5 ++ :try_end_209 ++ .catchall {:try_start_208 .. :try_end_209} :catchall_223 ++ ++ :cond_209 ++ if-nez v17, :cond_226 ++ ++ :try_start_20b ++ new-instance v3, Landroid/app/Instrumentation$ActivityResult; ++ ++ move/from16 v0, p6 ++ ++ move-object/from16 v1, p5 ++ ++ invoke-direct {v3, v0, v1}, Landroid/app/Instrumentation$ActivityResult;->(ILandroid/content/Intent;)V ++ :try_end_214 ++ .catch Ljava/lang/Exception; {:try_start_20b .. :try_end_214} :catch_216 ++ ++ goto/16 :goto_105 ++ ++ :catch_216 ++ move-exception v19 ++ ++ const-string v3, "Instrumentation" ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivity (with UserHandle): Exception occurred while trying to create ActivityResult" ++ ++ move-object/from16 v0, v19 ++ ++ invoke-static {v3, v5, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ const/4 v3, 0x0 ++ ++ goto/16 :goto_105 ++ ++ :catchall_223 ++ move-exception v3 ++ ++ :try_start_224 ++ monitor-exit v5 ++ :try_end_225 ++ .catchall {:try_start_224 .. :try_end_225} :catchall_223 ++ ++ throw v3 ++ ++ :cond_226 ++ :try_start_226 ++ invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->migrateExtraStreamToClipData()Z ++ ++ invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->prepareToLeaveProcess()V ++ ++ invoke-static {}, Landroid/app/ActivityManagerNative;->getDefault()Landroid/app/IActivityManager; ++ ++ move-result-object v3 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getBasePackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver; ++ ++ move-result-object v6 ++ ++ move-object/from16 v0, p5 ++ ++ invoke-virtual {v0, v6}, Landroid/content/Intent;->resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String; ++ ++ move-result-object v7 ++ ++ if-eqz p4, :cond_261 ++ ++ move-object/from16 v0, p4 ++ ++ iget-object v9, v0, Landroid/app/Activity;->mEmbeddedID:Ljava/lang/String; ++ ++ :goto_244 ++ const/4 v11, 0x0 ++ ++ const/4 v12, 0x0 ++ ++ const/4 v13, 0x0 ++ ++ invoke-virtual/range {p8 .. p8}, Landroid/os/UserHandle;->getIdentifier()I ++ ++ move-result v15 ++ ++ move-object/from16 v6, p5 ++ ++ move-object/from16 v8, p3 ++ ++ move/from16 v10, p6 ++ ++ move-object/from16 v14, p7 ++ ++ invoke-interface/range {v3 .. v15}, Landroid/app/IActivityManager;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/os/Bundle;I)I ++ ++ move-result v22 ++ ++ move/from16 v0, v22 ++ ++ move-object/from16 v1, p5 ++ ++ invoke-static {v0, v1}, Landroid/app/Instrumentation;->checkStartActivityResult(ILjava/lang/Object;)V ++ :try_end_25e ++ .catch Landroid/os/RemoteException; {:try_start_226 .. :try_end_25e} :catch_263 ++ ++ :goto_25e ++ const/4 v3, 0x0 ++ ++ goto/16 :goto_105 ++ ++ :cond_261 ++ const/4 v9, 0x0 ++ ++ goto :goto_244 ++ ++ :catch_263 ++ move-exception v3 ++ ++ goto :goto_25e ++.end method ++ ++.method public execStartActivity(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/app/Fragment;Landroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/Instrumentation$ActivityResult; ++ .registers 31 ++ ++ move-object/from16 v4, p2 ++ ++ check-cast v4, Landroid/app/IApplicationThread; ++ ++ const/16 v16, 0x1 ++ ++ :try_start_6 ++ const-string v3, "Instrumentation" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PDroid:Instrumentation:execStartActivity (with Fragments): execStartActivity for " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->getAction()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ if-eqz v3, :cond_ba ++ ++ invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->getAction()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ const-string v5, "android.intent.action.CALL" ++ ++ invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v3 ++ ++ if-nez v3, :cond_40 ++ ++ invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->getAction()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ const-string v5, "android.intent.action.DIAL" ++ ++ invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_ba ++ ++ :cond_40 ++ const/16 v16, 0x0 ++ ++ const-string v3, "Instrumentation" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PDroid:Instrumentation:execStartActivity (with Fragments): Intent action = Intent.ACTION_CALL or Intent.ACTION_DIAL for " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v3, :cond_6e ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v3}, Landroid/privacy/PrivacySettingsManager;->isServiceAvailable()Z ++ ++ move-result v3 ++ ++ if-nez v3, :cond_12e ++ ++ :cond_6e ++ new-instance v3, Landroid/privacy/PrivacySettingsManager; ++ ++ const-string/jumbo v5, "privacy" ++ ++ invoke-static {v5}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v5 ++ ++ invoke-static {v5}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, p1 ++ ++ invoke-direct {v3, v0, v5}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ move-object/from16 v0, p0 ++ ++ iput-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v3, :cond_104 ++ ++ const-string v3, "Instrumentation" ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivity (with Fragments): Obtained privacy service" ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :goto_91 ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v3, :cond_a1 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v3}, Landroid/privacy/PrivacySettingsManager;->isServiceAvailable()Z ++ ++ move-result v3 ++ ++ if-nez v3, :cond_137 ++ ++ :cond_a1 ++ const-string v3, "Instrumentation" ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivity (with Fragments): Privacy service not available: rejecting call attempt" ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/16 v16, 0x0 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ const/4 v6, 0x1 ++ ++ const-string/jumbo v7, "phoneCall" ++ ++ const/4 v8, 0x0 ++ ++ invoke-virtual {v3, v5, v6, v7, v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ :try_end_ba ++ .catch Ljava/lang/Exception; {:try_start_6 .. :try_end_ba} :catch_10c ++ ++ :cond_ba ++ :goto_ba ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; ++ ++ if-eqz v3, :cond_207 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v5, v0, Landroid/app/Instrumentation;->mSync:Ljava/lang/Object; ++ ++ monitor-enter v5 ++ ++ :try_start_c5 ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; ++ ++ invoke-interface {v3}, Ljava/util/List;->size()I ++ ++ move-result v15 ++ ++ const/16 v19, 0x0 ++ ++ :goto_cf ++ move/from16 v0, v19 ++ ++ if-ge v0, v15, :cond_206 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mActivityMonitors:Ljava/util/List; ++ ++ move/from16 v0, v19 ++ ++ invoke-interface {v3, v0}, Ljava/util/List;->get(I)Ljava/lang/Object; ++ ++ move-result-object v17 ++ ++ check-cast v17, Landroid/app/Instrumentation$ActivityMonitor; ++ ++ const/4 v3, 0x0 ++ ++ move-object/from16 v0, v17 ++ ++ move-object/from16 v1, p1 ++ ++ move-object/from16 v2, p5 ++ ++ invoke-virtual {v0, v1, v3, v2}, Landroid/app/Instrumentation$ActivityMonitor;->match(Landroid/content/Context;Landroid/app/Activity;Landroid/content/Intent;)Z ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_202 ++ ++ move-object/from16 v0, v17 ++ ++ iget v3, v0, Landroid/app/Instrumentation$ActivityMonitor;->mHits:I ++ ++ add-int/lit8 v3, v3, 0x1 ++ ++ move-object/from16 v0, v17 ++ ++ iput v3, v0, Landroid/app/Instrumentation$ActivityMonitor;->mHits:I ++ ++ invoke-virtual/range {v17 .. v17}, Landroid/app/Instrumentation$ActivityMonitor;->isBlocking()Z ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_206 ++ ++ if-ltz p6, :cond_1ff ++ ++ invoke-virtual/range {v17 .. v17}, Landroid/app/Instrumentation$ActivityMonitor;->getResult()Landroid/app/Instrumentation$ActivityResult; ++ ++ move-result-object v3 ++ ++ :goto_102 ++ monitor-exit v5 ++ :try_end_103 ++ .catchall {:try_start_c5 .. :try_end_103} :catchall_221 ++ ++ :goto_103 ++ return-object v3 ++ ++ :cond_104 ++ :try_start_104 ++ const-string v3, "Instrumentation" ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivity (with Fragments): Privacy service not obtained" ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_10b ++ .catch Ljava/lang/Exception; {:try_start_104 .. :try_end_10b} :catch_10c ++ ++ goto :goto_91 ++ ++ :catch_10c ++ move-exception v18 ++ ++ if-eqz p1, :cond_1f4 ++ ++ const-string v3, "Instrumentation" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PDroid:Instrumentation:execStartActivity (with Fragments): Exception occurred handling intent for " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v18 ++ ++ invoke-static {v3, v5, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto :goto_ba ++ ++ :cond_12e ++ :try_start_12e ++ const-string v3, "Instrumentation" ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivity (with Fragments): Already had privacy service" ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto/16 :goto_91 ++ ++ :cond_137 ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v3, v5}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v20 ++ ++ if-nez v20, :cond_175 ++ ++ const-string v3, "Instrumentation" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PDroid:Instrumentation:execStartActivity (with Fragments): Call allowed: No settings for package: " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/16 v16, 0x1 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ const/4 v6, 0x0 ++ ++ const-string/jumbo v7, "phoneCall" ++ ++ const/4 v8, 0x0 ++ ++ invoke-virtual {v3, v5, v6, v7, v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ ++ goto/16 :goto_ba ++ ++ :cond_175 ++ invoke-virtual/range {v20 .. v20}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v3 ++ ++ if-nez v3, :cond_1ae ++ ++ const-string v3, "Instrumentation" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PDroid:Instrumentation:execStartActivity (with Fragments): Call allowed: Settings permit " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/16 v16, 0x1 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {v20 .. v20}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v6 ++ ++ const-string/jumbo v7, "phoneCall" ++ ++ const/4 v8, 0x0 ++ ++ invoke-virtual {v3, v5, v6, v7, v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ ++ goto/16 :goto_ba ++ ++ :cond_1ae ++ const-string v3, "Instrumentation" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PDroid:Instrumentation:execStartActivity (with Fragments): Call denied: Settings deny " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ move-object/from16 v22, p1 ++ ++ const/16 v16, 0x0 ++ ++ new-instance v3, Ljava/lang/Thread; ++ ++ new-instance v5, Landroid/app/Instrumentation$3; ++ ++ move-object/from16 v0, p0 ++ ++ move-object/from16 v1, v22 ++ ++ invoke-direct {v5, v0, v1}, Landroid/app/Instrumentation$3;->(Landroid/app/Instrumentation;Landroid/content/Context;)V ++ ++ invoke-direct {v3, v5}, Ljava/lang/Thread;->(Ljava/lang/Runnable;)V ++ ++ invoke-virtual {v3}, Ljava/lang/Thread;->start()V ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/app/Instrumentation;->mPrvSvc:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {v20 .. v20}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v6 ++ ++ const-string/jumbo v7, "phoneCall" ++ ++ const/4 v8, 0x0 ++ ++ invoke-virtual {v3, v5, v6, v7, v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ :try_end_1f2 ++ .catch Ljava/lang/Exception; {:try_start_12e .. :try_end_1f2} :catch_10c ++ ++ goto/16 :goto_ba ++ ++ :cond_1f4 ++ const-string v3, "Instrumentation" ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivity (with Fragments): Exception occurred handling intent for unknown package" ++ ++ move-object/from16 v0, v18 ++ ++ invoke-static {v3, v5, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto/16 :goto_ba ++ ++ :cond_1ff ++ const/4 v3, 0x0 ++ ++ goto/16 :goto_102 ++ ++ :cond_202 ++ add-int/lit8 v19, v19, 0x1 ++ ++ goto/16 :goto_cf ++ ++ :cond_206 ++ :try_start_206 ++ monitor-exit v5 ++ :try_end_207 ++ .catchall {:try_start_206 .. :try_end_207} :catchall_221 ++ ++ :cond_207 ++ if-nez v16, :cond_224 ++ ++ :try_start_209 ++ new-instance v3, Landroid/app/Instrumentation$ActivityResult; ++ ++ move/from16 v0, p6 ++ ++ move-object/from16 v1, p5 ++ ++ invoke-direct {v3, v0, v1}, Landroid/app/Instrumentation$ActivityResult;->(ILandroid/content/Intent;)V ++ :try_end_212 ++ .catch Ljava/lang/Exception; {:try_start_209 .. :try_end_212} :catch_214 ++ ++ goto/16 :goto_103 ++ ++ :catch_214 ++ move-exception v18 ++ ++ const-string v3, "Instrumentation" ++ ++ const-string v5, "PDroid:Instrumentation:execStartActivity (with Fragments): Exception occurred while trying to create ActivityResult" ++ ++ move-object/from16 v0, v18 ++ ++ invoke-static {v3, v5, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ const/4 v3, 0x0 ++ ++ goto/16 :goto_103 ++ ++ :catchall_221 ++ move-exception v3 ++ ++ :try_start_222 ++ monitor-exit v5 ++ :try_end_223 ++ .catchall {:try_start_222 .. :try_end_223} :catchall_221 ++ ++ throw v3 ++ ++ :cond_224 ++ :try_start_224 ++ invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->migrateExtraStreamToClipData()Z ++ ++ invoke-virtual/range {p5 .. p5}, Landroid/content/Intent;->prepareToLeaveProcess()V ++ ++ invoke-static {}, Landroid/app/ActivityManagerNative;->getDefault()Landroid/app/IActivityManager; ++ ++ move-result-object v3 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getBasePackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver; ++ ++ move-result-object v6 ++ ++ move-object/from16 v0, p5 ++ ++ invoke-virtual {v0, v6}, Landroid/content/Intent;->resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String; ++ ++ move-result-object v7 ++ ++ if-eqz p4, :cond_25b ++ ++ move-object/from16 v0, p4 ++ ++ iget-object v9, v0, Landroid/app/Fragment;->mWho:Ljava/lang/String; ++ ++ :goto_242 ++ const/4 v11, 0x0 ++ ++ const/4 v12, 0x0 ++ ++ const/4 v13, 0x0 ++ ++ move-object/from16 v6, p5 ++ ++ move-object/from16 v8, p3 ++ ++ move/from16 v10, p6 ++ ++ move-object/from16 v14, p7 ++ ++ invoke-interface/range {v3 .. v14}, Landroid/app/IActivityManager;->startActivity(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/os/Bundle;)I ++ ++ move-result v21 ++ ++ move/from16 v0, v21 ++ ++ move-object/from16 v1, p5 ++ ++ invoke-static {v0, v1}, Landroid/app/Instrumentation;->checkStartActivityResult(ILjava/lang/Object;)V ++ :try_end_258 ++ .catch Landroid/os/RemoteException; {:try_start_224 .. :try_end_258} :catch_25d ++ ++ :goto_258 ++ const/4 v3, 0x0 ++ ++ goto/16 :goto_103 ++ ++ :cond_25b ++ const/4 v9, 0x0 ++ ++ goto :goto_242 ++ ++ :catch_25d ++ move-exception v3 ++ ++ goto :goto_258 + .end method + + .method public finish(ILandroid/os/Bundle;)V +diff -Npru stock-framework/smali/android/app/WallpaperInfo.smali pdroid-framework/smali/android/app/WallpaperInfo.smali +--- stock-framework/smali/android/app/WallpaperInfo.smali 2013-08-10 20:37:46.419213604 -0700 ++++ pdroid-framework/smali/android/app/WallpaperInfo.smali 2013-08-10 20:37:40.995213379 -0700 +@@ -368,7 +368,7 @@ + + move-result-object v0 + +- const-string v1, "mSettingsActivityName=" ++ const-string/jumbo v1, "mSettingsActivityName=" + + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +diff -Npru stock-framework/smali/android/content/ContentResolver.smali pdroid-framework/smali/android/content/ContentResolver.smali +--- stock-framework/smali/android/content/ContentResolver.smali 2013-08-10 20:37:46.171213593 -0700 ++++ pdroid-framework/smali/android/content/ContentResolver.smali 2013-08-10 20:37:40.631213365 -0700 +@@ -3757,8 +3757,8 @@ + + invoke-virtual {v0, v10}, Landroid/os/CancellationSignal;->setRemote(Landroid/os/ICancellationSignal;)V + :try_end_1f +- .catchall {:try_start_c .. :try_end_1f} :catchall_d9 +- .catch Landroid/os/RemoteException; {:try_start_c .. :try_end_1f} :catch_c1 ++ .catchall {:try_start_c .. :try_end_1f} :catchall_f5 ++ .catch Landroid/os/RemoteException; {:try_start_c .. :try_end_1f} :catch_dd + + :cond_1f + :try_start_1f +@@ -3777,30 +3777,44 @@ + move-object/from16 v9, p5 + + invoke-interface/range {v3 .. v10}, Landroid/content/IContentProvider;->query(Ljava/lang/String;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/ICancellationSignal;)Landroid/database/Cursor; +- :try_end_30 +- .catchall {:try_start_1f .. :try_end_30} :catchall_d9 +- .catch Landroid/os/DeadObjectException; {:try_start_1f .. :try_end_30} :catch_49 +- .catch Landroid/os/RemoteException; {:try_start_1f .. :try_end_30} :catch_c1 + + move-result-object v20 + +- :goto_31 +- if-nez v20, :cond_80 ++ move-object/from16 v0, p0 ++ ++ iget-object v4, v0, Landroid/content/ContentResolver;->mContext:Landroid/content/Context; ++ ++ move-object/from16 v0, p1 ++ ++ move-object/from16 v1, p2 ++ ++ move-object/from16 v2, v20 ++ ++ invoke-static {v0, v1, v4, v2}, Landroid/privacy/surrogate/PrivacyContentResolver;->enforcePrivacyPermission(Landroid/net/Uri;[Ljava/lang/String;Landroid/content/Context;Landroid/database/Cursor;)Landroid/database/Cursor; ++ :try_end_3e ++ .catchall {:try_start_1f .. :try_end_3e} :catchall_f5 ++ .catch Landroid/os/DeadObjectException; {:try_start_1f .. :try_end_3e} :catch_57 ++ .catch Landroid/os/RemoteException; {:try_start_1f .. :try_end_3e} :catch_dd ++ ++ move-result-object v20 ++ ++ :goto_3f ++ if-nez v20, :cond_9c + + const/16 v23, 0x0 + +- if-eqz v20, :cond_3a ++ if-eqz v20, :cond_48 + + invoke-interface/range {v20 .. v20}, Landroid/database/Cursor;->close()V + +- :cond_3a +- if-eqz v3, :cond_41 ++ :cond_48 ++ if-eqz v3, :cond_4f + + move-object/from16 v0, p0 + + invoke-virtual {v0, v3}, Landroid/content/ContentResolver;->releaseUnstableProvider(Landroid/content/IContentProvider;)Z + +- :cond_41 ++ :cond_4f + if-eqz v11, :cond_8 + + move-object/from16 v0, p0 +@@ -3809,37 +3823,37 @@ + + goto :goto_8 + +- :catch_49 ++ :catch_57 + move-exception v19 + +- :try_start_4a ++ :try_start_58 + move-object/from16 v0, p0 + + invoke-virtual {v0, v3}, Landroid/content/ContentResolver;->unstableProviderDied(Landroid/content/IContentProvider;)V + + invoke-virtual/range {p0 .. p1}, Landroid/content/ContentResolver;->acquireProvider(Landroid/net/Uri;)Landroid/content/IContentProvider; +- :try_end_52 +- .catchall {:try_start_4a .. :try_end_52} :catchall_d9 +- .catch Landroid/os/RemoteException; {:try_start_4a .. :try_end_52} :catch_c1 ++ :try_end_60 ++ .catchall {:try_start_58 .. :try_end_60} :catchall_f5 ++ .catch Landroid/os/RemoteException; {:try_start_58 .. :try_end_60} :catch_dd + + move-result-object v11 + +- if-nez v11, :cond_6b ++ if-nez v11, :cond_79 + + const/16 v23, 0x0 + +- if-eqz v20, :cond_5c ++ if-eqz v20, :cond_6a + + invoke-interface/range {v20 .. v20}, Landroid/database/Cursor;->close()V + +- :cond_5c +- if-eqz v3, :cond_63 ++ :cond_6a ++ if-eqz v3, :cond_71 + + move-object/from16 v0, p0 + + invoke-virtual {v0, v3}, Landroid/content/ContentResolver;->releaseUnstableProvider(Landroid/content/IContentProvider;)Z + +- :cond_63 ++ :cond_71 + if-eqz v11, :cond_8 + + move-object/from16 v0, p0 +@@ -3848,8 +3862,8 @@ + + goto :goto_8 + +- :cond_6b +- :try_start_6b ++ :cond_79 ++ :try_start_79 + move-object/from16 v0, p0 + + iget-object v12, v0, Landroid/content/ContentResolver;->mPackageName:Ljava/lang/String; +@@ -3870,9 +3884,23 @@ + + move-result-object v20 + +- goto :goto_31 ++ move-object/from16 v0, p0 ++ ++ iget-object v4, v0, Landroid/content/ContentResolver;->mContext:Landroid/content/Context; ++ ++ move-object/from16 v0, p1 ++ ++ move-object/from16 v1, p2 ++ ++ move-object/from16 v2, v20 ++ ++ invoke-static {v0, v1, v4, v2}, Landroid/privacy/surrogate/PrivacyContentResolver;->enforcePrivacyPermission(Landroid/net/Uri;[Ljava/lang/String;Landroid/content/Context;Landroid/database/Cursor;)Landroid/database/Cursor; ++ ++ move-result-object v20 ++ ++ goto :goto_3f + +- :cond_80 ++ :cond_9c + invoke-interface/range {v20 .. v20}, Landroid/database/Cursor;->getCount()I + + invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J +@@ -3895,11 +3923,11 @@ + + new-instance v23, Landroid/content/ContentResolver$CursorWrapperInner; + +- if-eqz v11, :cond_bc ++ if-eqz v11, :cond_d8 + + move-object v4, v11 + +- :goto_9b ++ :goto_b7 + move-object/from16 v0, v23 + + move-object/from16 v1, p0 +@@ -3907,26 +3935,26 @@ + move-object/from16 v2, v20 + + invoke-direct {v0, v1, v2, v4}, Landroid/content/ContentResolver$CursorWrapperInner;->(Landroid/content/ContentResolver;Landroid/database/Cursor;Landroid/content/IContentProvider;)V +- :try_end_a4 +- .catchall {:try_start_6b .. :try_end_a4} :catchall_d9 +- .catch Landroid/os/RemoteException; {:try_start_6b .. :try_end_a4} :catch_c1 ++ :try_end_c0 ++ .catchall {:try_start_79 .. :try_end_c0} :catchall_f5 ++ .catch Landroid/os/RemoteException; {:try_start_79 .. :try_end_c0} :catch_dd + + const/4 v11, 0x0 + + const/16 v20, 0x0 + +- if-eqz v20, :cond_ac ++ if-eqz v20, :cond_c8 + + invoke-interface/range {v20 .. v20}, Landroid/database/Cursor;->close()V + +- :cond_ac +- if-eqz v3, :cond_b3 ++ :cond_c8 ++ if-eqz v3, :cond_cf + + move-object/from16 v0, p0 + + invoke-virtual {v0, v3}, Landroid/content/ContentResolver;->releaseUnstableProvider(Landroid/content/IContentProvider;)Z + +- :cond_b3 ++ :cond_cf + if-eqz v11, :cond_8 + + move-object/from16 v0, p0 +@@ -3935,34 +3963,34 @@ + + goto/16 :goto_8 + +- :cond_bc +- :try_start_bc ++ :cond_d8 ++ :try_start_d8 + invoke-virtual/range {p0 .. p1}, Landroid/content/ContentResolver;->acquireProvider(Landroid/net/Uri;)Landroid/content/IContentProvider; +- :try_end_bf +- .catchall {:try_start_bc .. :try_end_bf} :catchall_d9 +- .catch Landroid/os/RemoteException; {:try_start_bc .. :try_end_bf} :catch_c1 ++ :try_end_db ++ .catchall {:try_start_d8 .. :try_end_db} :catchall_f5 ++ .catch Landroid/os/RemoteException; {:try_start_d8 .. :try_end_db} :catch_dd + + move-result-object v4 + +- goto :goto_9b ++ goto :goto_b7 + +- :catch_c1 ++ :catch_dd + move-exception v19 + + const/16 v23, 0x0 + +- if-eqz v20, :cond_c9 ++ if-eqz v20, :cond_e5 + + invoke-interface/range {v20 .. v20}, Landroid/database/Cursor;->close()V + +- :cond_c9 +- if-eqz v3, :cond_d0 ++ :cond_e5 ++ if-eqz v3, :cond_ec + + move-object/from16 v0, p0 + + invoke-virtual {v0, v3}, Landroid/content/ContentResolver;->releaseUnstableProvider(Landroid/content/IContentProvider;)Z + +- :cond_d0 ++ :cond_ec + if-eqz v11, :cond_8 + + move-object/from16 v0, p0 +@@ -3971,28 +3999,28 @@ + + goto/16 :goto_8 + +- :catchall_d9 ++ :catchall_f5 + move-exception v4 + +- if-eqz v20, :cond_df ++ if-eqz v20, :cond_fb + + invoke-interface/range {v20 .. v20}, Landroid/database/Cursor;->close()V + +- :cond_df +- if-eqz v3, :cond_e6 ++ :cond_fb ++ if-eqz v3, :cond_102 + + move-object/from16 v0, p0 + + invoke-virtual {v0, v3}, Landroid/content/ContentResolver;->releaseUnstableProvider(Landroid/content/IContentProvider;)Z + +- :cond_e6 +- if-eqz v11, :cond_ed ++ :cond_102 ++ if-eqz v11, :cond_109 + + move-object/from16 v0, p0 + + invoke-virtual {v0, v11}, Landroid/content/ContentResolver;->releaseProvider(Landroid/content/IContentProvider;)Z + +- :cond_ed ++ :cond_109 + throw v4 + .end method + +diff -Npru stock-framework/smali/android/content/CursorLoader.smali pdroid-framework/smali/android/content/CursorLoader.smali +--- stock-framework/smali/android/content/CursorLoader.smali 2013-08-10 20:37:46.635213613 -0700 ++++ pdroid-framework/smali/android/content/CursorLoader.smali 2013-08-10 20:37:41.231213389 -0700 +@@ -201,7 +201,7 @@ + + invoke-virtual {p3, p1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V + +- const-string v0, "mSelection=" ++ const-string/jumbo v0, "mSelection=" + + invoke-virtual {p3, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V + +@@ -211,7 +211,7 @@ + + invoke-virtual {p3, p1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V + +- const-string v0, "mSelectionArgs=" ++ const-string/jumbo v0, "mSelectionArgs=" + + invoke-virtual {p3, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V + +@@ -225,7 +225,7 @@ + + invoke-virtual {p3, p1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V + +- const-string v0, "mSortOrder=" ++ const-string/jumbo v0, "mSortOrder=" + + invoke-virtual {p3, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V + +diff -Npru stock-framework/smali/android/hardware/Camera$EventHandler.smali pdroid-framework/smali/android/hardware/Camera$EventHandler.smali +--- stock-framework/smali/android/hardware/Camera$EventHandler.smali 2013-08-10 20:37:47.191213637 -0700 ++++ pdroid-framework/smali/android/hardware/Camera$EventHandler.smali 2013-08-10 20:37:41.743213411 -0700 +@@ -36,418 +36,644 @@ + + # virtual methods + .method public handleMessage(Landroid/os/Message;)V +- .registers 9 ++ .registers 16 + +- const/4 v3, 0x1 ++ const/4 v7, 0x1 ++ ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ ++ #getter for: Landroid/hardware/Camera;->privacyMode:Z ++ invoke-static {v0}, Landroid/hardware/Camera;->access$000(Landroid/hardware/Camera;)Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_e ++ ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ ++ #calls: Landroid/hardware/Camera;->initiate()V ++ invoke-static {v0}, Landroid/hardware/Camera;->access$100(Landroid/hardware/Camera;)V ++ ++ :cond_e ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ ++ #calls: Landroid/hardware/Camera;->getPackageName()[Ljava/lang/String; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$200(Landroid/hardware/Camera;)[Ljava/lang/String; ++ ++ move-result-object v10 ++ ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ ++ #calls: Landroid/hardware/Camera;->checkIfPackagesAllowed()I ++ invoke-static {v0}, Landroid/hardware/Camera;->access$300(Landroid/hardware/Camera;)I ++ ++ move-result v0 ++ ++ const/4 v1, -0x2 ++ ++ if-ne v0, v1, :cond_68 ++ ++ const/4 v7, 0x0 ++ ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ ++ const/4 v1, 0x0 ++ ++ #calls: Landroid/hardware/Camera;->dataAccess(Z)V ++ invoke-static {v0, v1}, Landroid/hardware/Camera;->access$400(Landroid/hardware/Camera;Z)V ++ ++ if-eqz v10, :cond_48 ++ ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ ++ #getter for: Landroid/hardware/Camera;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$500(Landroid/hardware/Camera;)Landroid/privacy/PrivacySettingsManager; ++ ++ move-result-object v0 ++ ++ const/4 v1, 0x0 ++ ++ aget-object v1, v10, v1 + + const/4 v2, 0x0 + +- iget v4, p1, Landroid/os/Message;->what:I ++ const/4 v3, 0x1 ++ ++ const-string v4, "camera" ++ ++ const/4 v5, 0x0 ++ ++ iget-object v6, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ ++ #getter for: Landroid/hardware/Camera;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ invoke-static {v6}, Landroid/hardware/Camera;->access$500(Landroid/hardware/Camera;)Landroid/privacy/PrivacySettingsManager; ++ ++ move-result-object v6 ++ ++ const/4 v12, 0x0 ++ ++ aget-object v12, v10, v12 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v13 ++ ++ invoke-virtual {v6, v12, v13}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; + +- sparse-switch v4, :sswitch_data_158 ++ move-result-object v6 + +- const-string v3, "Camera" ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V + +- new-instance v4, Ljava/lang/StringBuilder; ++ :cond_48 ++ :goto_48 ++ iget v0, p1, Landroid/os/Message;->what:I + +- invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ sparse-switch v0, :sswitch_data_218 + +- const-string v5, "Unknown message type " ++ const-string v0, "Camera" + +- invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ new-instance v1, Ljava/lang/StringBuilder; + +- move-result-object v4 ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V + +- iget v5, p1, Landroid/os/Message;->what:I ++ const-string v2, "Unknown message type " + +- invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v4 ++ move-result-object v1 ++ ++ iget v2, p1, Landroid/os/Message;->what:I ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 + +- invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v4 ++ move-result-object v1 + +- invoke-static {v3, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I + +- :cond_21 +- :goto_21 ++ :cond_67 ++ :goto_67 + return-void + +- :sswitch_22 +- iget-object v3, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ :cond_68 ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ ++ const/4 v1, 0x1 ++ ++ #calls: Landroid/hardware/Camera;->dataAccess(Z)V ++ invoke-static {v0, v1}, Landroid/hardware/Camera;->access$400(Landroid/hardware/Camera;Z)V ++ ++ if-eqz v10, :cond_48 ++ ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ ++ #getter for: Landroid/hardware/Camera;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$500(Landroid/hardware/Camera;)Landroid/privacy/PrivacySettingsManager; ++ ++ move-result-object v0 ++ ++ const/4 v1, 0x0 ++ ++ aget-object v1, v10, v1 ++ ++ const/4 v2, 0x0 ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "camera" ++ ++ const/4 v5, 0x0 ++ ++ iget-object v6, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ ++ #getter for: Landroid/hardware/Camera;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ invoke-static {v6}, Landroid/hardware/Camera;->access$500(Landroid/hardware/Camera;)Landroid/privacy/PrivacySettingsManager; ++ ++ move-result-object v6 ++ ++ const/4 v12, 0x0 ++ ++ aget-object v12, v10, v12 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v13 ++ ++ invoke-virtual {v6, v12, v13}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_48 ++ ++ :sswitch_93 ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mShutterCallback:Landroid/hardware/Camera$ShutterCallback; +- invoke-static {v3}, Landroid/hardware/Camera;->access$000(Landroid/hardware/Camera;)Landroid/hardware/Camera$ShutterCallback; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$600(Landroid/hardware/Camera;)Landroid/hardware/Camera$ShutterCallback; + +- move-result-object v3 ++ move-result-object v0 + +- if-eqz v3, :cond_21 ++ if-eqz v0, :cond_67 + +- iget-object v3, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mShutterCallback:Landroid/hardware/Camera$ShutterCallback; +- invoke-static {v3}, Landroid/hardware/Camera;->access$000(Landroid/hardware/Camera;)Landroid/hardware/Camera$ShutterCallback; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$600(Landroid/hardware/Camera;)Landroid/hardware/Camera$ShutterCallback; + +- move-result-object v3 ++ move-result-object v0 + +- invoke-interface {v3}, Landroid/hardware/Camera$ShutterCallback;->onShutter()V ++ invoke-interface {v0}, Landroid/hardware/Camera$ShutterCallback;->onShutter()V + +- goto :goto_21 ++ goto :goto_67 + +- :sswitch_34 +- iget-object v3, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ :sswitch_a5 ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mRawImageCallback:Landroid/hardware/Camera$PictureCallback; +- invoke-static {v3}, Landroid/hardware/Camera;->access$100(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$700(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; ++ ++ move-result-object v0 + +- move-result-object v3 ++ if-eqz v0, :cond_67 + +- if-eqz v3, :cond_21 ++ if-eqz v7, :cond_c1 + +- iget-object v3, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mRawImageCallback:Landroid/hardware/Camera$PictureCallback; +- invoke-static {v3}, Landroid/hardware/Camera;->access$100(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$700(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; + +- move-result-object v4 ++ move-result-object v1 + +- iget-object v3, p1, Landroid/os/Message;->obj:Ljava/lang/Object; ++ iget-object v0, p1, Landroid/os/Message;->obj:Ljava/lang/Object; + +- check-cast v3, [B ++ check-cast v0, [B + +- check-cast v3, [B ++ check-cast v0, [B + +- iget-object v5, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; ++ iget-object v2, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; + +- invoke-interface {v4, v3, v5}, Landroid/hardware/Camera$PictureCallback;->onPictureTaken([BLandroid/hardware/Camera;)V ++ invoke-interface {v1, v0, v2}, Landroid/hardware/Camera$PictureCallback;->onPictureTaken([BLandroid/hardware/Camera;)V + +- goto :goto_21 ++ goto :goto_67 + +- :sswitch_4e +- iget-object v3, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ :cond_c1 ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ ++ #getter for: Landroid/hardware/Camera;->mRawImageCallback:Landroid/hardware/Camera$PictureCallback; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$700(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; ++ ++ move-result-object v0 ++ ++ const/4 v1, 0x0 ++ ++ iget-object v2, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; ++ ++ invoke-interface {v0, v1, v2}, Landroid/hardware/Camera$PictureCallback;->onPictureTaken([BLandroid/hardware/Camera;)V ++ ++ goto :goto_67 ++ ++ :sswitch_ce ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mJpegCallback:Landroid/hardware/Camera$PictureCallback; +- invoke-static {v3}, Landroid/hardware/Camera;->access$200(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$800(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; + +- move-result-object v3 ++ move-result-object v0 + +- if-eqz v3, :cond_21 ++ if-eqz v0, :cond_67 + +- iget-object v3, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ if-eqz v7, :cond_eb ++ ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mJpegCallback:Landroid/hardware/Camera$PictureCallback; +- invoke-static {v3}, Landroid/hardware/Camera;->access$200(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$800(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; + +- move-result-object v4 ++ move-result-object v1 + +- iget-object v3, p1, Landroid/os/Message;->obj:Ljava/lang/Object; ++ iget-object v0, p1, Landroid/os/Message;->obj:Ljava/lang/Object; + +- check-cast v3, [B ++ check-cast v0, [B + +- check-cast v3, [B ++ check-cast v0, [B + +- iget-object v5, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; ++ iget-object v2, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; + +- invoke-interface {v4, v3, v5}, Landroid/hardware/Camera$PictureCallback;->onPictureTaken([BLandroid/hardware/Camera;)V ++ invoke-interface {v1, v0, v2}, Landroid/hardware/Camera$PictureCallback;->onPictureTaken([BLandroid/hardware/Camera;)V + +- goto :goto_21 ++ goto/16 :goto_67 + +- :sswitch_68 +- iget-object v4, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ :cond_eb ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + +- #getter for: Landroid/hardware/Camera;->mPreviewCallback:Landroid/hardware/Camera$PreviewCallback; +- invoke-static {v4}, Landroid/hardware/Camera;->access$300(Landroid/hardware/Camera;)Landroid/hardware/Camera$PreviewCallback; ++ #getter for: Landroid/hardware/Camera;->mJpegCallback:Landroid/hardware/Camera$PictureCallback; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$800(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; ++ ++ move-result-object v0 ++ ++ iget-object v1, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ ++ #calls: Landroid/hardware/Camera;->getFakeImage()[B ++ invoke-static {v1}, Landroid/hardware/Camera;->access$900(Landroid/hardware/Camera;)[B + + move-result-object v1 + +- if-eqz v1, :cond_21 ++ iget-object v2, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; ++ ++ invoke-interface {v0, v1, v2}, Landroid/hardware/Camera$PictureCallback;->onPictureTaken([BLandroid/hardware/Camera;)V + +- iget-object v4, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ goto/16 :goto_67 ++ ++ :sswitch_fe ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ ++ #getter for: Landroid/hardware/Camera;->mPreviewCallback:Landroid/hardware/Camera$PreviewCallback; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$1000(Landroid/hardware/Camera;)Landroid/hardware/Camera$PreviewCallback; ++ ++ move-result-object v9 ++ ++ if-eqz v9, :cond_67 ++ ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mOneShot:Z +- invoke-static {v4}, Landroid/hardware/Camera;->access$400(Landroid/hardware/Camera;)Z ++ invoke-static {v0}, Landroid/hardware/Camera;->access$1100(Landroid/hardware/Camera;)Z + +- move-result v4 ++ move-result v0 + +- if-eqz v4, :cond_8a ++ if-eqz v0, :cond_123 + +- iget-object v3, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + +- const/4 v4, 0x0 ++ const/4 v1, 0x0 + + #setter for: Landroid/hardware/Camera;->mPreviewCallback:Landroid/hardware/Camera$PreviewCallback; +- invoke-static {v3, v4}, Landroid/hardware/Camera;->access$302(Landroid/hardware/Camera;Landroid/hardware/Camera$PreviewCallback;)Landroid/hardware/Camera$PreviewCallback; ++ invoke-static {v0, v1}, Landroid/hardware/Camera;->access$1002(Landroid/hardware/Camera;Landroid/hardware/Camera$PreviewCallback;)Landroid/hardware/Camera$PreviewCallback; ++ ++ :cond_114 ++ :goto_114 ++ if-eqz v7, :cond_133 + +- :cond_7e +- :goto_7e +- iget-object v3, p1, Landroid/os/Message;->obj:Ljava/lang/Object; ++ iget-object v0, p1, Landroid/os/Message;->obj:Ljava/lang/Object; + +- check-cast v3, [B ++ check-cast v0, [B + +- check-cast v3, [B ++ check-cast v0, [B + +- iget-object v4, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; ++ iget-object v1, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; + +- invoke-interface {v1, v3, v4}, Landroid/hardware/Camera$PreviewCallback;->onPreviewFrame([BLandroid/hardware/Camera;)V ++ invoke-interface {v9, v0, v1}, Landroid/hardware/Camera$PreviewCallback;->onPreviewFrame([BLandroid/hardware/Camera;)V + +- goto :goto_21 ++ goto/16 :goto_67 + +- :cond_8a +- iget-object v4, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ :cond_123 ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mWithBuffer:Z +- invoke-static {v4}, Landroid/hardware/Camera;->access$500(Landroid/hardware/Camera;)Z ++ invoke-static {v0}, Landroid/hardware/Camera;->access$1200(Landroid/hardware/Camera;)Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_114 + +- move-result v4 ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + +- if-nez v4, :cond_7e ++ const/4 v1, 0x1 + +- iget-object v4, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ const/4 v2, 0x0 + + #calls: Landroid/hardware/Camera;->setHasPreviewCallback(ZZ)V +- invoke-static {v4, v3, v2}, Landroid/hardware/Camera;->access$600(Landroid/hardware/Camera;ZZ)V ++ invoke-static {v0, v1, v2}, Landroid/hardware/Camera;->access$1300(Landroid/hardware/Camera;ZZ)V ++ ++ goto :goto_114 ++ ++ :cond_133 ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + +- goto :goto_7e ++ #calls: Landroid/hardware/Camera;->getFakeImage()[B ++ invoke-static {v0}, Landroid/hardware/Camera;->access$900(Landroid/hardware/Camera;)[B ++ ++ move-result-object v0 + +- :sswitch_98 +- iget-object v3, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ iget-object v1, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; ++ ++ invoke-interface {v9, v0, v1}, Landroid/hardware/Camera$PreviewCallback;->onPreviewFrame([BLandroid/hardware/Camera;)V ++ ++ goto/16 :goto_67 ++ ++ :sswitch_140 ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mPostviewCallback:Landroid/hardware/Camera$PictureCallback; +- invoke-static {v3}, Landroid/hardware/Camera;->access$700(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$1400(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; + +- move-result-object v3 ++ move-result-object v0 + +- if-eqz v3, :cond_21 ++ if-eqz v0, :cond_67 + +- iget-object v3, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ if-eqz v7, :cond_15d ++ ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mPostviewCallback:Landroid/hardware/Camera$PictureCallback; +- invoke-static {v3}, Landroid/hardware/Camera;->access$700(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$1400(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; + +- move-result-object v4 ++ move-result-object v1 + +- iget-object v3, p1, Landroid/os/Message;->obj:Ljava/lang/Object; ++ iget-object v0, p1, Landroid/os/Message;->obj:Ljava/lang/Object; + +- check-cast v3, [B ++ check-cast v0, [B + +- check-cast v3, [B ++ check-cast v0, [B + +- iget-object v5, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; ++ iget-object v2, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; + +- invoke-interface {v4, v3, v5}, Landroid/hardware/Camera$PictureCallback;->onPictureTaken([BLandroid/hardware/Camera;)V ++ invoke-interface {v1, v0, v2}, Landroid/hardware/Camera$PictureCallback;->onPictureTaken([BLandroid/hardware/Camera;)V + +- goto/16 :goto_21 ++ goto/16 :goto_67 + +- :sswitch_b3 +- const/4 v0, 0x0 ++ :cond_15d ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ ++ #getter for: Landroid/hardware/Camera;->mPostviewCallback:Landroid/hardware/Camera$PictureCallback; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$1400(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; ++ ++ move-result-object v0 ++ ++ iget-object v1, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ ++ #calls: Landroid/hardware/Camera;->getFakeImage()[B ++ invoke-static {v1}, Landroid/hardware/Camera;->access$900(Landroid/hardware/Camera;)[B + +- iget-object v4, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; ++ ++ invoke-interface {v0, v1, v2}, Landroid/hardware/Camera$PictureCallback;->onPictureTaken([BLandroid/hardware/Camera;)V ++ ++ goto/16 :goto_67 ++ ++ :sswitch_170 ++ const/4 v8, 0x0 ++ ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mAutoFocusCallbackLock:Ljava/lang/Object; +- invoke-static {v4}, Landroid/hardware/Camera;->access$800(Landroid/hardware/Camera;)Ljava/lang/Object; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$1500(Landroid/hardware/Camera;)Ljava/lang/Object; + +- move-result-object v4 ++ move-result-object v1 + +- monitor-enter v4 ++ monitor-enter v1 + +- :try_start_bb +- iget-object v5, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ :try_start_178 ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mAutoFocusCallback:Landroid/hardware/Camera$AutoFocusCallback; +- invoke-static {v5}, Landroid/hardware/Camera;->access$900(Landroid/hardware/Camera;)Landroid/hardware/Camera$AutoFocusCallback; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$1600(Landroid/hardware/Camera;)Landroid/hardware/Camera$AutoFocusCallback; + +- move-result-object v0 ++ move-result-object v8 + +- monitor-exit v4 +- :try_end_c2 +- .catchall {:try_start_bb .. :try_end_c2} :catchall_cf ++ monitor-exit v1 ++ :try_end_17f ++ .catchall {:try_start_178 .. :try_end_17f} :catchall_18d + +- if-eqz v0, :cond_21 ++ if-eqz v8, :cond_67 + +- iget v4, p1, Landroid/os/Message;->arg1:I ++ iget v0, p1, Landroid/os/Message;->arg1:I + +- if-nez v4, :cond_d2 ++ if-nez v0, :cond_190 + +- :goto_c8 +- iget-object v3, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; ++ const/4 v11, 0x0 + +- invoke-interface {v0, v2, v3}, Landroid/hardware/Camera$AutoFocusCallback;->onAutoFocus(ZLandroid/hardware/Camera;)V ++ :goto_186 ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; + +- goto/16 :goto_21 ++ invoke-interface {v8, v11, v0}, Landroid/hardware/Camera$AutoFocusCallback;->onAutoFocus(ZLandroid/hardware/Camera;)V + +- :catchall_cf +- move-exception v3 ++ goto/16 :goto_67 + +- :try_start_d0 +- monitor-exit v4 +- :try_end_d1 +- .catchall {:try_start_d0 .. :try_end_d1} :catchall_cf ++ :catchall_18d ++ move-exception v0 + +- throw v3 ++ :try_start_18e ++ monitor-exit v1 ++ :try_end_18f ++ .catchall {:try_start_18e .. :try_end_18f} :catchall_18d + +- :cond_d2 +- move v2, v3 ++ throw v0 + +- goto :goto_c8 ++ :cond_190 ++ const/4 v11, 0x1 + +- :sswitch_d4 +- iget-object v4, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ goto :goto_186 ++ ++ :sswitch_192 ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mZoomListener:Landroid/hardware/Camera$OnZoomChangeListener; +- invoke-static {v4}, Landroid/hardware/Camera;->access$1000(Landroid/hardware/Camera;)Landroid/hardware/Camera$OnZoomChangeListener; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$1700(Landroid/hardware/Camera;)Landroid/hardware/Camera$OnZoomChangeListener; + +- move-result-object v4 ++ move-result-object v0 + +- if-eqz v4, :cond_21 ++ if-eqz v0, :cond_67 + +- iget-object v4, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mZoomListener:Landroid/hardware/Camera$OnZoomChangeListener; +- invoke-static {v4}, Landroid/hardware/Camera;->access$1000(Landroid/hardware/Camera;)Landroid/hardware/Camera$OnZoomChangeListener; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$1700(Landroid/hardware/Camera;)Landroid/hardware/Camera$OnZoomChangeListener; + +- move-result-object v4 ++ move-result-object v1 + +- iget v5, p1, Landroid/os/Message;->arg1:I ++ iget v2, p1, Landroid/os/Message;->arg1:I + +- iget v6, p1, Landroid/os/Message;->arg2:I ++ iget v0, p1, Landroid/os/Message;->arg2:I + +- if-eqz v6, :cond_ef ++ if-eqz v0, :cond_1ae + +- :goto_e8 +- iget-object v6, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; ++ const/4 v0, 0x1 + +- invoke-interface {v4, v5, v3, v6}, Landroid/hardware/Camera$OnZoomChangeListener;->onZoomChange(IZLandroid/hardware/Camera;)V ++ :goto_1a7 ++ iget-object v3, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; + +- goto/16 :goto_21 ++ invoke-interface {v1, v2, v0, v3}, Landroid/hardware/Camera$OnZoomChangeListener;->onZoomChange(IZLandroid/hardware/Camera;)V + +- :cond_ef +- move v3, v2 ++ goto/16 :goto_67 + +- goto :goto_e8 ++ :cond_1ae ++ const/4 v0, 0x0 + +- :sswitch_f1 +- iget-object v3, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ goto :goto_1a7 ++ ++ :sswitch_1b0 ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mFaceListener:Landroid/hardware/Camera$FaceDetectionListener; +- invoke-static {v3}, Landroid/hardware/Camera;->access$1100(Landroid/hardware/Camera;)Landroid/hardware/Camera$FaceDetectionListener; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$1800(Landroid/hardware/Camera;)Landroid/hardware/Camera$FaceDetectionListener; + +- move-result-object v3 ++ move-result-object v0 + +- if-eqz v3, :cond_21 ++ if-eqz v0, :cond_67 + +- iget-object v3, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mFaceListener:Landroid/hardware/Camera$FaceDetectionListener; +- invoke-static {v3}, Landroid/hardware/Camera;->access$1100(Landroid/hardware/Camera;)Landroid/hardware/Camera$FaceDetectionListener; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$1800(Landroid/hardware/Camera;)Landroid/hardware/Camera$FaceDetectionListener; + +- move-result-object v4 ++ move-result-object v1 + +- iget-object v3, p1, Landroid/os/Message;->obj:Ljava/lang/Object; ++ iget-object v0, p1, Landroid/os/Message;->obj:Ljava/lang/Object; + +- check-cast v3, [Landroid/hardware/Camera$Face; ++ check-cast v0, [Landroid/hardware/Camera$Face; + +- check-cast v3, [Landroid/hardware/Camera$Face; ++ check-cast v0, [Landroid/hardware/Camera$Face; + +- iget-object v5, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; ++ iget-object v2, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; + +- invoke-interface {v4, v3, v5}, Landroid/hardware/Camera$FaceDetectionListener;->onFaceDetection([Landroid/hardware/Camera$Face;Landroid/hardware/Camera;)V ++ invoke-interface {v1, v0, v2}, Landroid/hardware/Camera$FaceDetectionListener;->onFaceDetection([Landroid/hardware/Camera$Face;Landroid/hardware/Camera;)V + +- goto/16 :goto_21 ++ goto/16 :goto_67 + +- :sswitch_10c +- const-string v3, "Camera" ++ :sswitch_1cb ++ const-string v0, "Camera" + +- new-instance v4, Ljava/lang/StringBuilder; ++ new-instance v1, Ljava/lang/StringBuilder; + +- invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V + +- const-string v5, "Error " ++ const-string v2, "Error " + +- invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v4 ++ move-result-object v1 + +- iget v5, p1, Landroid/os/Message;->arg1:I ++ iget v2, p1, Landroid/os/Message;->arg1:I + +- invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + +- move-result-object v4 ++ move-result-object v1 + +- invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v4 ++ move-result-object v1 + +- invoke-static {v3, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I + +- iget-object v3, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mErrorCallback:Landroid/hardware/Camera$ErrorCallback; +- invoke-static {v3}, Landroid/hardware/Camera;->access$1200(Landroid/hardware/Camera;)Landroid/hardware/Camera$ErrorCallback; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$1900(Landroid/hardware/Camera;)Landroid/hardware/Camera$ErrorCallback; + +- move-result-object v3 ++ move-result-object v0 + +- if-eqz v3, :cond_21 ++ if-eqz v0, :cond_67 + +- iget-object v3, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mErrorCallback:Landroid/hardware/Camera$ErrorCallback; +- invoke-static {v3}, Landroid/hardware/Camera;->access$1200(Landroid/hardware/Camera;)Landroid/hardware/Camera$ErrorCallback; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$1900(Landroid/hardware/Camera;)Landroid/hardware/Camera$ErrorCallback; + +- move-result-object v3 ++ move-result-object v0 + +- iget v4, p1, Landroid/os/Message;->arg1:I ++ iget v1, p1, Landroid/os/Message;->arg1:I + +- iget-object v5, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; ++ iget-object v2, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; + +- invoke-interface {v3, v4, v5}, Landroid/hardware/Camera$ErrorCallback;->onError(ILandroid/hardware/Camera;)V ++ invoke-interface {v0, v1, v2}, Landroid/hardware/Camera$ErrorCallback;->onError(ILandroid/hardware/Camera;)V + +- goto/16 :goto_21 ++ goto/16 :goto_67 + +- :sswitch_13d +- iget-object v4, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ :sswitch_1fc ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mAutoFocusMoveCallback:Landroid/hardware/Camera$AutoFocusMoveCallback; +- invoke-static {v4}, Landroid/hardware/Camera;->access$1300(Landroid/hardware/Camera;)Landroid/hardware/Camera$AutoFocusMoveCallback; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$2000(Landroid/hardware/Camera;)Landroid/hardware/Camera$AutoFocusMoveCallback; + +- move-result-object v4 ++ move-result-object v0 + +- if-eqz v4, :cond_21 ++ if-eqz v0, :cond_67 + +- iget-object v4, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; ++ iget-object v0, p0, Landroid/hardware/Camera$EventHandler;->this$0:Landroid/hardware/Camera; + + #getter for: Landroid/hardware/Camera;->mAutoFocusMoveCallback:Landroid/hardware/Camera$AutoFocusMoveCallback; +- invoke-static {v4}, Landroid/hardware/Camera;->access$1300(Landroid/hardware/Camera;)Landroid/hardware/Camera$AutoFocusMoveCallback; ++ invoke-static {v0}, Landroid/hardware/Camera;->access$2000(Landroid/hardware/Camera;)Landroid/hardware/Camera$AutoFocusMoveCallback; + +- move-result-object v4 ++ move-result-object v1 + +- iget v5, p1, Landroid/os/Message;->arg1:I ++ iget v0, p1, Landroid/os/Message;->arg1:I + +- if-nez v5, :cond_156 ++ if-nez v0, :cond_216 + +- :goto_14f +- iget-object v3, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; ++ const/4 v0, 0x0 ++ ++ :goto_20f ++ iget-object v2, p0, Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera; + +- invoke-interface {v4, v2, v3}, Landroid/hardware/Camera$AutoFocusMoveCallback;->onAutoFocusMoving(ZLandroid/hardware/Camera;)V ++ invoke-interface {v1, v0, v2}, Landroid/hardware/Camera$AutoFocusMoveCallback;->onAutoFocusMoving(ZLandroid/hardware/Camera;)V + +- goto/16 :goto_21 ++ goto/16 :goto_67 + +- :cond_156 +- move v2, v3 ++ :cond_216 ++ const/4 v0, 0x1 + +- goto :goto_14f ++ goto :goto_20f + +- :sswitch_data_158 ++ :sswitch_data_218 + .sparse-switch +- 0x1 -> :sswitch_10c +- 0x2 -> :sswitch_22 +- 0x4 -> :sswitch_b3 +- 0x8 -> :sswitch_d4 +- 0x10 -> :sswitch_68 +- 0x40 -> :sswitch_98 +- 0x80 -> :sswitch_34 +- 0x100 -> :sswitch_4e +- 0x400 -> :sswitch_f1 +- 0x800 -> :sswitch_13d ++ 0x1 -> :sswitch_1cb ++ 0x2 -> :sswitch_93 ++ 0x4 -> :sswitch_170 ++ 0x8 -> :sswitch_192 ++ 0x10 -> :sswitch_fe ++ 0x40 -> :sswitch_140 ++ 0x80 -> :sswitch_a5 ++ 0x100 -> :sswitch_ce ++ 0x400 -> :sswitch_1b0 ++ 0x800 -> :sswitch_1fc + .end sparse-switch + .end method +diff -Npru stock-framework/smali/android/hardware/Camera.smali pdroid-framework/smali/android/hardware/Camera.smali +--- stock-framework/smali/android/hardware/Camera.smali 2013-08-10 20:37:47.199213636 -0700 ++++ pdroid-framework/smali/android/hardware/Camera.smali 2013-08-10 20:37:41.751213410 -0700 +@@ -62,10 +62,20 @@ + + .field private static final CAMERA_MSG_ZOOM:I = 0x8 + ++.field private static final GOT_ERROR:I = -0x3 ++ ++.field private static final IS_ALLOWED:I = -0x1 ++ ++.field private static final IS_NOT_ALLOWED:I = -0x2 ++ ++.field private static final PRIVACY_TAG:Ljava/lang/String; = "PM,Camera" ++ + .field private static final TAG:Ljava/lang/String; = "Camera" + + + # instance fields ++.field private context:Landroid/content/Context; ++ + .field private mAutoFocusCallback:Landroid/hardware/Camera$AutoFocusCallback; + + .field private mAutoFocusCallbackLock:Ljava/lang/Object; +@@ -86,6 +96,8 @@ + + .field private mOneShot:Z + ++.field private mPm:Landroid/content/pm/IPackageManager; ++ + .field private mPostviewCallback:Landroid/hardware/Camera$PictureCallback; + + .field private mPreviewCallback:Landroid/hardware/Camera$PreviewCallback; +@@ -98,16 +110,20 @@ + + .field private mZoomListener:Landroid/hardware/Camera$OnZoomChangeListener; + ++.field private pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++.field private privacyMode:Z ++ + + # direct methods + .method constructor ()V +- .registers 2 ++ .registers 3 + +- invoke-direct {p0}, Ljava/lang/Object;->()V ++ const/4 v1, 0x0 + +- const/4 v0, 0x0 ++ invoke-direct {p0}, Ljava/lang/Object;->()V + +- iput-boolean v0, p0, Landroid/hardware/Camera;->mFaceDetectionRunning:Z ++ iput-boolean v1, p0, Landroid/hardware/Camera;->mFaceDetectionRunning:Z + + new-instance v0, Ljava/lang/Object; + +@@ -115,19 +131,21 @@ + + iput-object v0, p0, Landroid/hardware/Camera;->mAutoFocusCallbackLock:Ljava/lang/Object; + ++ iput-boolean v1, p0, Landroid/hardware/Camera;->privacyMode:Z ++ + return-void + .end method + + .method constructor (I)V +- .registers 6 ++ .registers 7 ++ ++ const/4 v4, 0x0 + + const/4 v3, 0x0 + + invoke-direct {p0}, Ljava/lang/Object;->()V + +- const/4 v2, 0x0 +- +- iput-boolean v2, p0, Landroid/hardware/Camera;->mFaceDetectionRunning:Z ++ iput-boolean v4, p0, Landroid/hardware/Camera;->mFaceDetectionRunning:Z + + new-instance v2, Ljava/lang/Object; + +@@ -135,6 +153,8 @@ + + iput-object v2, p0, Landroid/hardware/Camera;->mAutoFocusCallbackLock:Ljava/lang/Object; + ++ iput-boolean v4, p0, Landroid/hardware/Camera;->privacyMode:Z ++ + iput-object v3, p0, Landroid/hardware/Camera;->mShutterCallback:Landroid/hardware/Camera$ShutterCallback; + + iput-object v3, p0, Landroid/hardware/Camera;->mRawImageCallback:Landroid/hardware/Camera$PictureCallback; +@@ -147,11 +167,13 @@ + + iput-object v3, p0, Landroid/hardware/Camera;->mZoomListener:Landroid/hardware/Camera$OnZoomChangeListener; + ++ invoke-direct {p0}, Landroid/hardware/Camera;->initiate()V ++ + invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper; + + move-result-object v0 + +- if-eqz v0, :cond_34 ++ if-eqz v0, :cond_39 + + new-instance v2, Landroid/hardware/Camera$EventHandler; + +@@ -159,7 +181,7 @@ + + iput-object v2, p0, Landroid/hardware/Camera;->mEventHandler:Landroid/hardware/Camera$EventHandler; + +- :goto_27 ++ :goto_2c + invoke-static {}, Landroid/app/ActivityThread;->currentPackageName()Ljava/lang/String; + + move-result-object v1 +@@ -172,12 +194,12 @@ + + return-void + +- :cond_34 ++ :cond_39 + invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper; + + move-result-object v0 + +- if-eqz v0, :cond_42 ++ if-eqz v0, :cond_47 + + new-instance v2, Landroid/hardware/Camera$EventHandler; + +@@ -185,12 +207,12 @@ + + iput-object v2, p0, Landroid/hardware/Camera;->mEventHandler:Landroid/hardware/Camera$EventHandler; + +- goto :goto_27 ++ goto :goto_2c + +- :cond_42 ++ :cond_47 + iput-object v3, p0, Landroid/hardware/Camera;->mEventHandler:Landroid/hardware/Camera$EventHandler; + +- goto :goto_27 ++ goto :goto_2c + .end method + + .method private final native _addCallbackBuffer([BI)V +@@ -211,122 +233,184 @@ + .method private final native _stopPreview()V + .end method + +-.method static synthetic access$000(Landroid/hardware/Camera;)Landroid/hardware/Camera$ShutterCallback; ++.method static synthetic access$000(Landroid/hardware/Camera;)Z + .registers 2 + +- iget-object v0, p0, Landroid/hardware/Camera;->mShutterCallback:Landroid/hardware/Camera$ShutterCallback; ++ iget-boolean v0, p0, Landroid/hardware/Camera;->privacyMode:Z + +- return-object v0 ++ return v0 + .end method + +-.method static synthetic access$100(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; ++.method static synthetic access$100(Landroid/hardware/Camera;)V ++ .registers 1 ++ ++ invoke-direct {p0}, Landroid/hardware/Camera;->initiate()V ++ ++ return-void ++.end method ++ ++.method static synthetic access$1000(Landroid/hardware/Camera;)Landroid/hardware/Camera$PreviewCallback; + .registers 2 + +- iget-object v0, p0, Landroid/hardware/Camera;->mRawImageCallback:Landroid/hardware/Camera$PictureCallback; ++ iget-object v0, p0, Landroid/hardware/Camera;->mPreviewCallback:Landroid/hardware/Camera$PreviewCallback; + + return-object v0 + .end method + +-.method static synthetic access$1000(Landroid/hardware/Camera;)Landroid/hardware/Camera$OnZoomChangeListener; ++.method static synthetic access$1002(Landroid/hardware/Camera;Landroid/hardware/Camera$PreviewCallback;)Landroid/hardware/Camera$PreviewCallback; + .registers 2 + +- iget-object v0, p0, Landroid/hardware/Camera;->mZoomListener:Landroid/hardware/Camera$OnZoomChangeListener; ++ iput-object p1, p0, Landroid/hardware/Camera;->mPreviewCallback:Landroid/hardware/Camera$PreviewCallback; ++ ++ return-object p1 ++.end method ++ ++.method static synthetic access$1100(Landroid/hardware/Camera;)Z ++ .registers 2 ++ ++ iget-boolean v0, p0, Landroid/hardware/Camera;->mOneShot:Z ++ ++ return v0 ++.end method ++ ++.method static synthetic access$1200(Landroid/hardware/Camera;)Z ++ .registers 2 ++ ++ iget-boolean v0, p0, Landroid/hardware/Camera;->mWithBuffer:Z ++ ++ return v0 ++.end method ++ ++.method static synthetic access$1300(Landroid/hardware/Camera;ZZ)V ++ .registers 3 ++ ++ invoke-direct {p0, p1, p2}, Landroid/hardware/Camera;->setHasPreviewCallback(ZZ)V ++ ++ return-void ++.end method ++ ++.method static synthetic access$1400(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/hardware/Camera;->mPostviewCallback:Landroid/hardware/Camera$PictureCallback; + + return-object v0 + .end method + +-.method static synthetic access$1100(Landroid/hardware/Camera;)Landroid/hardware/Camera$FaceDetectionListener; ++.method static synthetic access$1500(Landroid/hardware/Camera;)Ljava/lang/Object; + .registers 2 + +- iget-object v0, p0, Landroid/hardware/Camera;->mFaceListener:Landroid/hardware/Camera$FaceDetectionListener; ++ iget-object v0, p0, Landroid/hardware/Camera;->mAutoFocusCallbackLock:Ljava/lang/Object; + + return-object v0 + .end method + +-.method static synthetic access$1200(Landroid/hardware/Camera;)Landroid/hardware/Camera$ErrorCallback; ++.method static synthetic access$1600(Landroid/hardware/Camera;)Landroid/hardware/Camera$AutoFocusCallback; + .registers 2 + +- iget-object v0, p0, Landroid/hardware/Camera;->mErrorCallback:Landroid/hardware/Camera$ErrorCallback; ++ iget-object v0, p0, Landroid/hardware/Camera;->mAutoFocusCallback:Landroid/hardware/Camera$AutoFocusCallback; + + return-object v0 + .end method + +-.method static synthetic access$1300(Landroid/hardware/Camera;)Landroid/hardware/Camera$AutoFocusMoveCallback; ++.method static synthetic access$1700(Landroid/hardware/Camera;)Landroid/hardware/Camera$OnZoomChangeListener; + .registers 2 + +- iget-object v0, p0, Landroid/hardware/Camera;->mAutoFocusMoveCallback:Landroid/hardware/Camera$AutoFocusMoveCallback; ++ iget-object v0, p0, Landroid/hardware/Camera;->mZoomListener:Landroid/hardware/Camera$OnZoomChangeListener; + + return-object v0 + .end method + +-.method static synthetic access$200(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; ++.method static synthetic access$1800(Landroid/hardware/Camera;)Landroid/hardware/Camera$FaceDetectionListener; + .registers 2 + +- iget-object v0, p0, Landroid/hardware/Camera;->mJpegCallback:Landroid/hardware/Camera$PictureCallback; ++ iget-object v0, p0, Landroid/hardware/Camera;->mFaceListener:Landroid/hardware/Camera$FaceDetectionListener; + + return-object v0 + .end method + +-.method static synthetic access$300(Landroid/hardware/Camera;)Landroid/hardware/Camera$PreviewCallback; ++.method static synthetic access$1900(Landroid/hardware/Camera;)Landroid/hardware/Camera$ErrorCallback; + .registers 2 + +- iget-object v0, p0, Landroid/hardware/Camera;->mPreviewCallback:Landroid/hardware/Camera$PreviewCallback; ++ iget-object v0, p0, Landroid/hardware/Camera;->mErrorCallback:Landroid/hardware/Camera$ErrorCallback; + + return-object v0 + .end method + +-.method static synthetic access$302(Landroid/hardware/Camera;Landroid/hardware/Camera$PreviewCallback;)Landroid/hardware/Camera$PreviewCallback; ++.method static synthetic access$200(Landroid/hardware/Camera;)[Ljava/lang/String; + .registers 2 + +- iput-object p1, p0, Landroid/hardware/Camera;->mPreviewCallback:Landroid/hardware/Camera$PreviewCallback; ++ invoke-direct {p0}, Landroid/hardware/Camera;->getPackageName()[Ljava/lang/String; + +- return-object p1 ++ move-result-object v0 ++ ++ return-object v0 + .end method + +-.method static synthetic access$400(Landroid/hardware/Camera;)Z ++.method static synthetic access$2000(Landroid/hardware/Camera;)Landroid/hardware/Camera$AutoFocusMoveCallback; + .registers 2 + +- iget-boolean v0, p0, Landroid/hardware/Camera;->mOneShot:Z ++ iget-object v0, p0, Landroid/hardware/Camera;->mAutoFocusMoveCallback:Landroid/hardware/Camera$AutoFocusMoveCallback; + +- return v0 ++ return-object v0 + .end method + +-.method static synthetic access$500(Landroid/hardware/Camera;)Z ++.method static synthetic access$300(Landroid/hardware/Camera;)I + .registers 2 + +- iget-boolean v0, p0, Landroid/hardware/Camera;->mWithBuffer:Z ++ invoke-direct {p0}, Landroid/hardware/Camera;->checkIfPackagesAllowed()I ++ ++ move-result v0 + + return v0 + .end method + +-.method static synthetic access$600(Landroid/hardware/Camera;ZZ)V +- .registers 3 ++.method static synthetic access$400(Landroid/hardware/Camera;Z)V ++ .registers 2 + +- invoke-direct {p0, p1, p2}, Landroid/hardware/Camera;->setHasPreviewCallback(ZZ)V ++ invoke-direct {p0, p1}, Landroid/hardware/Camera;->dataAccess(Z)V + + return-void + .end method + ++.method static synthetic access$500(Landroid/hardware/Camera;)Landroid/privacy/PrivacySettingsManager; ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/hardware/Camera;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ return-object v0 ++.end method ++ ++.method static synthetic access$600(Landroid/hardware/Camera;)Landroid/hardware/Camera$ShutterCallback; ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/hardware/Camera;->mShutterCallback:Landroid/hardware/Camera$ShutterCallback; ++ ++ return-object v0 ++.end method ++ + .method static synthetic access$700(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; + .registers 2 + +- iget-object v0, p0, Landroid/hardware/Camera;->mPostviewCallback:Landroid/hardware/Camera$PictureCallback; ++ iget-object v0, p0, Landroid/hardware/Camera;->mRawImageCallback:Landroid/hardware/Camera$PictureCallback; + + return-object v0 + .end method + +-.method static synthetic access$800(Landroid/hardware/Camera;)Ljava/lang/Object; ++.method static synthetic access$800(Landroid/hardware/Camera;)Landroid/hardware/Camera$PictureCallback; + .registers 2 + +- iget-object v0, p0, Landroid/hardware/Camera;->mAutoFocusCallbackLock:Ljava/lang/Object; ++ iget-object v0, p0, Landroid/hardware/Camera;->mJpegCallback:Landroid/hardware/Camera$PictureCallback; + + return-object v0 + .end method + +-.method static synthetic access$900(Landroid/hardware/Camera;)Landroid/hardware/Camera$AutoFocusCallback; ++.method static synthetic access$900(Landroid/hardware/Camera;)[B + .registers 2 + +- iget-object v0, p0, Landroid/hardware/Camera;->mAutoFocusCallback:Landroid/hardware/Camera$AutoFocusCallback; ++ invoke-direct {p0}, Landroid/hardware/Camera;->getFakeImage()[B ++ ++ move-result-object v0 + + return-object v0 + .end method +@@ -372,6 +456,205 @@ + return-void + .end method + ++.method private checkIfPackagesAllowed()I ++ .registers 9 ++ ++ const/4 v5, -0x3 ++ ++ :try_start_1 ++ iget-object v6, p0, Landroid/hardware/Camera;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v6, :cond_41 ++ ++ const/4 v2, 0x0 ++ ++ invoke-direct {p0}, Landroid/hardware/Camera;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v4 ++ ++ if-eqz v3, :cond_2c ++ ++ const/4 v1, 0x0 ++ ++ :goto_11 ++ array-length v6, v3 ++ ++ if-ge v1, v6, :cond_2a ++ ++ iget-object v6, p0, Landroid/hardware/Camera;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v7, v3, v1 ++ ++ invoke-virtual {v6, v7, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v2 ++ ++ if-eqz v2, :cond_26 ++ ++ invoke-virtual {v2}, Landroid/privacy/PrivacySettings;->getCameraSetting()B ++ ++ move-result v6 ++ ++ if-eqz v6, :cond_26 ++ ++ const/4 v5, -0x2 ++ ++ :goto_25 ++ return v5 ++ ++ :cond_26 ++ const/4 v2, 0x0 ++ ++ add-int/lit8 v1, v1, 0x1 ++ ++ goto :goto_11 ++ ++ :cond_2a ++ const/4 v5, -0x1 ++ ++ goto :goto_25 ++ ++ :cond_2c ++ const-string v6, "PM,Camera" ++ ++ const-string/jumbo v7, "return GOT_ERROR, because package_names are NULL" ++ ++ invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_34 ++ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_34} :catch_35 ++ ++ goto :goto_25 ++ ++ :catch_35 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v6, "PM,Camera" ++ ++ const-string v7, "Got exception in checkIfPackagesAllowed" ++ ++ invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto :goto_25 ++ ++ :cond_41 ++ :try_start_41 ++ const-string v6, "PM,Camera" ++ ++ const-string/jumbo v7, "return GOT_ERROR, because pSetMan is NULL" ++ ++ invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_49 ++ .catch Ljava/lang/Exception; {:try_start_41 .. :try_end_49} :catch_35 ++ ++ goto :goto_25 ++.end method ++ ++.method private dataAccess(Z)V ++ .registers 7 ++ ++ invoke-direct {p0}, Landroid/hardware/Camera;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ if-eqz p1, :cond_2f ++ ++ if-eqz v1, :cond_2f ++ ++ const/4 v0, 0x0 ++ ++ :goto_9 ++ array-length v2, v1 ++ ++ if-ge v0, v2, :cond_58 ++ ++ const-string v2, "PM,Camera" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Allowed Package: -" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ aget-object v4, v1, v0 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, "- accessing camera." ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_9 ++ ++ :cond_2f ++ if-eqz v1, :cond_58 ++ ++ const/4 v0, 0x0 ++ ++ :goto_32 ++ array-length v2, v1 ++ ++ if-ge v0, v2, :cond_58 ++ ++ const-string v2, "PM,Camera" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Blocked Package: -" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ aget-object v4, v1, v0 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, "- accessing camera." ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_32 ++ ++ :cond_58 ++ return-void ++.end method ++ + .method private native enableFocusMoveCallback(I)V + .end method + +@@ -437,9 +720,193 @@ + return-object v1 + .end method + ++.method private getFakeImage()[B ++ .registers 9 ++ ++ :try_start_0 ++ const-string v2, "/system/media/PDroid.jpeg" ++ ++ new-instance v5, Ljava/io/File; ++ ++ invoke-direct {v5, v2}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ const/4 v3, 0x0 ++ ++ new-instance v3, Ljava/io/FileInputStream; ++ ++ invoke-direct {v3, v5}, Ljava/io/FileInputStream;->(Ljava/io/File;)V ++ ++ invoke-static {v3}, Landroid/graphics/BitmapFactory;->decodeStream(Ljava/io/InputStream;)Landroid/graphics/Bitmap; ++ ++ move-result-object v0 ++ ++ new-instance v4, Ljava/io/ByteArrayOutputStream; ++ ++ invoke-direct {v4}, Ljava/io/ByteArrayOutputStream;->()V ++ ++ sget-object v6, Landroid/graphics/Bitmap$CompressFormat;->JPEG:Landroid/graphics/Bitmap$CompressFormat; ++ ++ const/16 v7, 0x64 ++ ++ invoke-virtual {v0, v6, v7, v4}, Landroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z ++ ++ invoke-virtual {v4}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B ++ :try_end_20 ++ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_20} :catch_22 ++ ++ move-result-object v6 ++ ++ :goto_21 ++ return-object v6 ++ ++ :catch_22 ++ move-exception v1 ++ ++ const-string v6, "PM,Camera" ++ ++ const-string/jumbo v7, "something went wrong with getting the picture!" ++ ++ invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const/4 v6, 0x0 ++ ++ goto :goto_21 ++.end method ++ + .method public static native getNumberOfCameras()I + .end method + ++.method private getPackageName()[Ljava/lang/String; ++ .registers 6 ++ ++ :try_start_0 ++ iget-object v3, p0, Landroid/hardware/Camera;->mPm:Landroid/content/pm/IPackageManager; ++ ++ if-eqz v3, :cond_f ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v2 ++ ++ iget-object v3, p0, Landroid/hardware/Camera;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-interface {v3, v2}, Landroid/content/pm/IPackageManager;->getPackagesForUid(I)[Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ :goto_e ++ return-object v1 ++ ++ :cond_f ++ const-string/jumbo v3, "package" ++ ++ invoke-static {v3}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v3 ++ ++ invoke-static {v3}, Landroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager; ++ ++ move-result-object v3 ++ ++ iput-object v3, p0, Landroid/hardware/Camera;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v2 ++ ++ iget-object v3, p0, Landroid/hardware/Camera;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-interface {v3, v2}, Landroid/content/pm/IPackageManager;->getPackagesForUid(I)[Ljava/lang/String; ++ :try_end_25 ++ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_25} :catch_27 ++ ++ move-result-object v1 ++ ++ goto :goto_e ++ ++ :catch_27 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v3, "PM,Camera" ++ ++ const-string/jumbo v4, "something went wrong with getting package name" ++ ++ invoke-static {v3, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v1, 0x0 ++ ++ goto :goto_e ++.end method ++ ++.method private initiate()V ++ .registers 5 ++ ++ const/4 v1, 0x0 ++ ++ :try_start_1 ++ iput-object v1, p0, Landroid/hardware/Camera;->context:Landroid/content/Context; ++ ++ new-instance v1, Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v2, p0, Landroid/hardware/Camera;->context:Landroid/content/Context; ++ ++ const-string/jumbo v3, "privacy" ++ ++ invoke-static {v3}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v3 ++ ++ invoke-static {v3}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v3 ++ ++ invoke-direct {v1, v2, v3}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v1, p0, Landroid/hardware/Camera;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string/jumbo v1, "package" ++ ++ invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Landroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager; ++ ++ move-result-object v1 ++ ++ iput-object v1, p0, Landroid/hardware/Camera;->mPm:Landroid/content/pm/IPackageManager; ++ ++ const/4 v1, 0x1 ++ ++ iput-boolean v1, p0, Landroid/hardware/Camera;->privacyMode:Z ++ :try_end_27 ++ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_27} :catch_28 ++ ++ :goto_27 ++ return-void ++ ++ :catch_28 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v1, "PM,Camera" ++ ++ const-string v2, "Something went wrong with initalize variables" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v1, 0x0 ++ ++ iput-boolean v1, p0, Landroid/hardware/Camera;->privacyMode:Z ++ ++ goto :goto_27 ++.end method ++ + .method private final native native_autoFocus()V + .end method + +@@ -1022,7 +1489,7 @@ + .end method + + .method public final takePicture(Landroid/hardware/Camera$ShutterCallback;Landroid/hardware/Camera$PictureCallback;Landroid/hardware/Camera$PictureCallback;Landroid/hardware/Camera$PictureCallback;)V +- .registers 7 ++ .registers 8 + + iput-object p1, p0, Landroid/hardware/Camera;->mShutterCallback:Landroid/hardware/Camera$ShutterCallback; + +@@ -1032,36 +1499,62 @@ + + iput-object p4, p0, Landroid/hardware/Camera;->mJpegCallback:Landroid/hardware/Camera$PictureCallback; + ++ iget-boolean v1, p0, Landroid/hardware/Camera;->privacyMode:Z ++ ++ if-nez v1, :cond_f ++ ++ invoke-direct {p0}, Landroid/hardware/Camera;->initiate()V ++ ++ :cond_f ++ invoke-direct {p0}, Landroid/hardware/Camera;->checkIfPackagesAllowed()I ++ ++ move-result v1 ++ ++ const/4 v2, -0x2 ++ ++ if-ne v1, v2, :cond_20 ++ ++ const/4 v1, 0x0 ++ ++ iput-object v1, p0, Landroid/hardware/Camera;->mRawImageCallback:Landroid/hardware/Camera$PictureCallback; ++ ++ const-string v1, "PM,Camera" ++ ++ const-string v2, "blocked rawImageCallback -> it will never be called!" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :cond_20 + const/4 v0, 0x0 + + iget-object v1, p0, Landroid/hardware/Camera;->mShutterCallback:Landroid/hardware/Camera$ShutterCallback; + +- if-eqz v1, :cond_f ++ if-eqz v1, :cond_27 + + or-int/lit8 v0, v0, 0x2 + +- :cond_f ++ :cond_27 + iget-object v1, p0, Landroid/hardware/Camera;->mRawImageCallback:Landroid/hardware/Camera$PictureCallback; + +- if-eqz v1, :cond_15 ++ if-eqz v1, :cond_2d + + or-int/lit16 v0, v0, 0x80 + +- :cond_15 ++ :cond_2d + iget-object v1, p0, Landroid/hardware/Camera;->mPostviewCallback:Landroid/hardware/Camera$PictureCallback; + +- if-eqz v1, :cond_1b ++ if-eqz v1, :cond_33 + + or-int/lit8 v0, v0, 0x40 + +- :cond_1b ++ :cond_33 + iget-object v1, p0, Landroid/hardware/Camera;->mJpegCallback:Landroid/hardware/Camera$PictureCallback; + +- if-eqz v1, :cond_21 ++ if-eqz v1, :cond_39 + + or-int/lit16 v0, v0, 0x100 + +- :cond_21 ++ :cond_39 + invoke-direct {p0, v0}, Landroid/hardware/Camera;->native_takePicture(I)V + + const/4 v1, 0x0 +diff -Npru stock-framework/smali/android/media/AudioRecord.smali pdroid-framework/smali/android/media/AudioRecord.smali +--- stock-framework/smali/android/media/AudioRecord.smali 2013-08-10 20:37:47.351213643 -0700 ++++ pdroid-framework/smali/android/media/AudioRecord.smali 2013-08-10 20:37:41.899213417 -0700 +@@ -29,10 +29,18 @@ + + .field public static final ERROR_INVALID_OPERATION:I = -0x3 + ++.field private static final GOT_ERROR:I = -0x3 ++ ++.field private static final IS_ALLOWED:I = -0x1 ++ ++.field private static final IS_NOT_ALLOWED:I = -0x2 ++ + .field private static final NATIVE_EVENT_MARKER:I = 0x2 + + .field private static final NATIVE_EVENT_NEW_POS:I = 0x3 + ++.field private static final PRIVACY_TAG:Ljava/lang/String; = "PM,AudioRecord" ++ + .field public static final RECORDSTATE_RECORDING:I = 0x3 + + .field public static final RECORDSTATE_STOPPED:I = 0x1 +@@ -47,6 +55,8 @@ + + + # instance fields ++.field private context:Landroid/content/Context; ++ + .field private mAudioFormat:I + + .field private mChannelConfiguration:I +@@ -65,6 +75,8 @@ + + .field private mNativeRecorderInJavaObj:I + ++.field private mPm:Landroid/content/pm/IPackageManager; ++ + .field private mPositionListener:Landroid/media/AudioRecord$OnRecordPositionUpdateListener; + + .field private final mPositionListenerLock:Ljava/lang/Object; +@@ -81,6 +93,10 @@ + + .field private mState:I + ++.field private pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++.field private privacyMode:Z ++ + + # direct methods + .method public constructor (IIIII)V +@@ -159,6 +175,10 @@ + + const/4 v0, 0x0 + ++ iput-boolean v0, p0, Landroid/media/AudioRecord;->privacyMode:Z ++ ++ const/4 v0, 0x0 ++ + iput v0, p0, Landroid/media/AudioRecord;->mState:I + + const/4 v0, 0x1 +@@ -171,7 +191,7 @@ + + iput-object v0, p0, Landroid/media/AudioRecord;->mInitializationLooper:Landroid/os/Looper; + +- if-nez v0, :cond_4f ++ if-nez v0, :cond_52 + + invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper; + +@@ -179,7 +199,7 @@ + + iput-object v0, p0, Landroid/media/AudioRecord;->mInitializationLooper:Landroid/os/Looper; + +- :cond_4f ++ :cond_52 + invoke-direct {p0, p1, p2, p3, p4}, Landroid/media/AudioRecord;->audioParamCheck(IIII)V + + invoke-direct {p0, p5}, Landroid/media/AudioRecord;->audioBuffSizeCheck(I)V +@@ -214,7 +234,7 @@ + + move-result v8 + +- if-eqz v8, :cond_8f ++ if-eqz v8, :cond_92 + + new-instance v0, Ljava/lang/StringBuilder; + +@@ -242,10 +262,12 @@ + + invoke-static {v0}, Landroid/media/AudioRecord;->loge(Ljava/lang/String;)V + +- :goto_8e ++ :goto_91 + return-void + +- :cond_8f ++ :cond_92 ++ invoke-direct {p0}, Landroid/media/AudioRecord;->initiate()V ++ + const/4 v0, 0x0 + + aget v0, v7, v0 +@@ -256,7 +278,7 @@ + + iput v0, p0, Landroid/media/AudioRecord;->mState:I + +- goto :goto_8e ++ goto :goto_91 + .end method + + .method static synthetic access$000(Landroid/media/AudioRecord;)Ljava/lang/Object; +@@ -469,6 +491,205 @@ + .end packed-switch + .end method + ++.method private checkIfPackagesAllowed()I ++ .registers 9 ++ ++ const/4 v5, -0x3 ++ ++ :try_start_1 ++ iget-object v6, p0, Landroid/media/AudioRecord;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v6, :cond_41 ++ ++ const/4 v2, 0x0 ++ ++ invoke-direct {p0}, Landroid/media/AudioRecord;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v4 ++ ++ if-eqz v3, :cond_2c ++ ++ const/4 v1, 0x0 ++ ++ :goto_11 ++ array-length v6, v3 ++ ++ if-ge v1, v6, :cond_2a ++ ++ iget-object v6, p0, Landroid/media/AudioRecord;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v7, v3, v1 ++ ++ invoke-virtual {v6, v7, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v2 ++ ++ if-eqz v2, :cond_26 ++ ++ invoke-virtual {v2}, Landroid/privacy/PrivacySettings;->getRecordAudioSetting()B ++ ++ move-result v6 ++ ++ if-eqz v6, :cond_26 ++ ++ const/4 v5, -0x2 ++ ++ :goto_25 ++ return v5 ++ ++ :cond_26 ++ const/4 v2, 0x0 ++ ++ add-int/lit8 v1, v1, 0x1 ++ ++ goto :goto_11 ++ ++ :cond_2a ++ const/4 v5, -0x1 ++ ++ goto :goto_25 ++ ++ :cond_2c ++ const-string v6, "PM,AudioRecord" ++ ++ const-string/jumbo v7, "return GOT_ERROR, because package_names are NULL" ++ ++ invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_34 ++ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_34} :catch_35 ++ ++ goto :goto_25 ++ ++ :catch_35 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v6, "PM,AudioRecord" ++ ++ const-string v7, "Got exception in checkIfPackagesAllowed" ++ ++ invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto :goto_25 ++ ++ :cond_41 ++ :try_start_41 ++ const-string v6, "PM,AudioRecord" ++ ++ const-string/jumbo v7, "return GOT_ERROR, because pSetMan is NULL" ++ ++ invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_49 ++ .catch Ljava/lang/Exception; {:try_start_41 .. :try_end_49} :catch_35 ++ ++ goto :goto_25 ++.end method ++ ++.method private dataAccess(Z)V ++ .registers 7 ++ ++ invoke-direct {p0}, Landroid/media/AudioRecord;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ if-eqz p1, :cond_2f ++ ++ if-eqz v1, :cond_2f ++ ++ const/4 v0, 0x0 ++ ++ :goto_9 ++ array-length v2, v1 ++ ++ if-ge v0, v2, :cond_58 ++ ++ const-string v2, "PM,AudioRecord" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Allowed Package: -" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ aget-object v4, v1, v0 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, "- accessing microphone." ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_9 ++ ++ :cond_2f ++ if-eqz v1, :cond_58 ++ ++ const/4 v0, 0x0 ++ ++ :goto_32 ++ array-length v2, v1 ++ ++ if-ge v0, v2, :cond_58 ++ ++ const-string v2, "PM,AudioRecord" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Blocked Package: -" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ aget-object v4, v1, v0 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, "- accessing microphone." ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_32 ++ ++ :cond_58 ++ return-void ++.end method ++ + .method public static getMinBufferSize(III)I + .registers 8 + +@@ -540,6 +761,135 @@ + .end sparse-switch + .end method + ++.method private getPackageName()[Ljava/lang/String; ++ .registers 6 ++ ++ :try_start_0 ++ iget-object v3, p0, Landroid/media/AudioRecord;->mPm:Landroid/content/pm/IPackageManager; ++ ++ if-eqz v3, :cond_f ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v2 ++ ++ iget-object v3, p0, Landroid/media/AudioRecord;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-interface {v3, v2}, Landroid/content/pm/IPackageManager;->getPackagesForUid(I)[Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ :goto_e ++ return-object v1 ++ ++ :cond_f ++ const-string/jumbo v3, "package" ++ ++ invoke-static {v3}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v3 ++ ++ invoke-static {v3}, Landroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager; ++ ++ move-result-object v3 ++ ++ iput-object v3, p0, Landroid/media/AudioRecord;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v2 ++ ++ iget-object v3, p0, Landroid/media/AudioRecord;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-interface {v3, v2}, Landroid/content/pm/IPackageManager;->getPackagesForUid(I)[Ljava/lang/String; ++ :try_end_25 ++ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_25} :catch_27 ++ ++ move-result-object v1 ++ ++ goto :goto_e ++ ++ :catch_27 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v3, "PM,AudioRecord" ++ ++ const-string/jumbo v4, "something went wrong with getting package name" ++ ++ invoke-static {v3, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v1, 0x0 ++ ++ goto :goto_e ++.end method ++ ++.method private initiate()V ++ .registers 5 ++ ++ const/4 v1, 0x0 ++ ++ :try_start_1 ++ iput-object v1, p0, Landroid/media/AudioRecord;->context:Landroid/content/Context; ++ ++ new-instance v1, Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v2, p0, Landroid/media/AudioRecord;->context:Landroid/content/Context; ++ ++ const-string/jumbo v3, "privacy" ++ ++ invoke-static {v3}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v3 ++ ++ invoke-static {v3}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v3 ++ ++ invoke-direct {v1, v2, v3}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v1, p0, Landroid/media/AudioRecord;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string/jumbo v1, "package" ++ ++ invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Landroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager; ++ ++ move-result-object v1 ++ ++ iput-object v1, p0, Landroid/media/AudioRecord;->mPm:Landroid/content/pm/IPackageManager; ++ ++ const/4 v1, 0x1 ++ ++ iput-boolean v1, p0, Landroid/media/AudioRecord;->privacyMode:Z ++ :try_end_27 ++ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_27} :catch_28 ++ ++ :goto_27 ++ return-void ++ ++ :catch_28 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v1, "PM,AudioRecord" ++ ++ const-string v2, "Something went wrong with initalize variables" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v1, 0x0 ++ ++ iput-boolean v1, p0, Landroid/media/AudioRecord;->privacyMode:Z ++ ++ goto :goto_27 ++.end method ++ + .method private static logd(Ljava/lang/String;)V + .registers 4 + +@@ -990,19 +1340,68 @@ + .end method + + .method public startRecording()V +- .registers 4 ++ .registers 11 + .annotation system Ldalvik/annotation/Throws; + value = { + Ljava/lang/IllegalStateException; + } + .end annotation + ++ const/4 v5, 0x0 ++ ++ const/4 v3, 0x1 ++ ++ const/4 v2, 0x0 ++ ++ iget-boolean v0, p0, Landroid/media/AudioRecord;->privacyMode:Z ++ ++ if-nez v0, :cond_a ++ ++ invoke-direct {p0}, Landroid/media/AudioRecord;->initiate()V ++ ++ :cond_a + iget v0, p0, Landroid/media/AudioRecord;->mState:I + +- const/4 v1, 0x1 ++ if-ne v0, v3, :cond_15 ++ ++ invoke-direct {p0}, Landroid/media/AudioRecord;->checkIfPackagesAllowed()I ++ ++ move-result v0 ++ ++ const/4 v1, -0x2 ++ ++ if-ne v0, v1, :cond_3d + +- if-eq v0, v1, :cond_e ++ :cond_15 ++ invoke-direct {p0, v2}, Landroid/media/AudioRecord;->dataAccess(Z)V + ++ invoke-direct {p0}, Landroid/media/AudioRecord;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v7 ++ ++ if-eqz v7, :cond_34 ++ ++ iget-object v0, p0, Landroid/media/AudioRecord;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v7, v2 ++ ++ const-string/jumbo v4, "recordAudio" ++ ++ iget-object v6, p0, Landroid/media/AudioRecord;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v8, v7, v2 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v9 ++ ++ invoke-virtual {v6, v8, v9}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_34 + new-instance v0, Ljava/lang/IllegalStateException; + + const-string/jumbo v1, "startRecording() called on an uninitialized AudioRecord." +@@ -1011,7 +1410,38 @@ + + throw v0 + +- :cond_e ++ :cond_3d ++ invoke-direct {p0, v3}, Landroid/media/AudioRecord;->dataAccess(Z)V ++ ++ invoke-direct {p0}, Landroid/media/AudioRecord;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v7 ++ ++ if-eqz v7, :cond_5d ++ ++ iget-object v0, p0, Landroid/media/AudioRecord;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v7, v2 ++ ++ const-string/jumbo v4, "recordAudio" ++ ++ iget-object v3, p0, Landroid/media/AudioRecord;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v6, v7, v2 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v8 ++ ++ invoke-virtual {v3, v6, v8}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_5d + iget-object v1, p0, Landroid/media/AudioRecord;->mRecordingStateLock:Ljava/lang/Object; + + monitor-enter v1 +@@ -1020,28 +1450,28 @@ + + const/4 v2, 0x0 + +- :try_start_13 ++ :try_start_62 + invoke-direct {p0, v0, v2}, Landroid/media/AudioRecord;->native_start(II)I + + move-result v0 + +- if-nez v0, :cond_1c ++ if-nez v0, :cond_6b + + const/4 v0, 0x3 + + iput v0, p0, Landroid/media/AudioRecord;->mRecordingState:I + +- :cond_1c ++ :cond_6b + monitor-exit v1 + + return-void + +- :catchall_1e ++ :catchall_6d + move-exception v0 + + monitor-exit v1 +- :try_end_20 +- .catchall {:try_start_13 .. :try_end_20} :catchall_1e ++ :try_end_6f ++ .catchall {:try_start_62 .. :try_end_6f} :catchall_6d + + throw v0 + .end method +diff -Npru stock-framework/smali/android/media/MediaRecorder$PrivacyRunner.smali pdroid-framework/smali/android/media/MediaRecorder$PrivacyRunner.smali +--- stock-framework/smali/android/media/MediaRecorder$PrivacyRunner.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/media/MediaRecorder$PrivacyRunner.smali 2013-08-10 20:37:41.975213420 -0700 +@@ -0,0 +1,218 @@ ++.class Landroid/media/MediaRecorder$PrivacyRunner; ++.super Ljava/lang/Thread; ++.source "MediaRecorder.java" ++ ++ ++# annotations ++.annotation system Ldalvik/annotation/EnclosingClass; ++ value = Landroid/media/MediaRecorder; ++.end annotation ++ ++.annotation system Ldalvik/annotation/InnerClass; ++ accessFlags = 0x2 ++ name = "PrivacyRunner" ++.end annotation ++ ++ ++# static fields ++.field private static final OFFSET_DELAY:J = 0x9c4L ++ ++ ++# instance fields ++.field private delay:J ++ ++.field final synthetic this$0:Landroid/media/MediaRecorder; ++ ++ ++# direct methods ++.method public constructor (Landroid/media/MediaRecorder;)V ++ .registers 4 ++ ++ iput-object p1, p0, Landroid/media/MediaRecorder$PrivacyRunner;->this$0:Landroid/media/MediaRecorder; ++ ++ invoke-direct {p0}, Ljava/lang/Thread;->()V ++ ++ const-wide/16 v0, 0x9c4 ++ ++ iput-wide v0, p0, Landroid/media/MediaRecorder$PrivacyRunner;->delay:J ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public getDelay()J ++ .registers 3 ++ ++ iget-wide v0, p0, Landroid/media/MediaRecorder$PrivacyRunner;->delay:J ++ ++ return-wide v0 ++.end method ++ ++.method public run()V ++ .registers 5 ++ ++ :try_start_0 ++ iget-wide v2, p0, Landroid/media/MediaRecorder$PrivacyRunner;->delay:J ++ ++ invoke-static {v2, v3}, Ljava/lang/Thread;->sleep(J)V ++ ++ iget-object v2, p0, Landroid/media/MediaRecorder$PrivacyRunner;->this$0:Landroid/media/MediaRecorder; ++ ++ #calls: Landroid/media/MediaRecorder;->privacyStop()V ++ invoke-static {v2}, Landroid/media/MediaRecorder;->access$300(Landroid/media/MediaRecorder;)V ++ ++ iget-object v2, p0, Landroid/media/MediaRecorder$PrivacyRunner;->this$0:Landroid/media/MediaRecorder; ++ ++ #getter for: Landroid/media/MediaRecorder;->mPath:Ljava/lang/String; ++ invoke-static {v2}, Landroid/media/MediaRecorder;->access$400(Landroid/media/MediaRecorder;)Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ if-eqz v2, :cond_2f ++ ++ new-instance v1, Ljava/io/File; ++ ++ iget-object v2, p0, Landroid/media/MediaRecorder$PrivacyRunner;->this$0:Landroid/media/MediaRecorder; ++ ++ #getter for: Landroid/media/MediaRecorder;->mPath:Ljava/lang/String; ++ invoke-static {v2}, Landroid/media/MediaRecorder;->access$400(Landroid/media/MediaRecorder;)Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-direct {v1, v2}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v1}, Ljava/io/File;->delete()Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_29 ++ ++ iget-object v2, p0, Landroid/media/MediaRecorder$PrivacyRunner;->this$0:Landroid/media/MediaRecorder; ++ ++ const/4 v3, 0x1 ++ ++ #setter for: Landroid/media/MediaRecorder;->deletedFile:Z ++ invoke-static {v2, v3}, Landroid/media/MediaRecorder;->access$502(Landroid/media/MediaRecorder;Z)Z ++ :try_end_29 ++ .catchall {:try_start_0 .. :try_end_29} :catchall_76 ++ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_29} :catch_57 ++ ++ :cond_29 ++ :goto_29 ++ iget-object v2, p0, Landroid/media/MediaRecorder$PrivacyRunner;->this$0:Landroid/media/MediaRecorder; ++ ++ #calls: Landroid/media/MediaRecorder;->privacyStop()V ++ invoke-static {v2}, Landroid/media/MediaRecorder;->access$300(Landroid/media/MediaRecorder;)V ++ ++ :goto_2e ++ return-void ++ ++ :cond_2f ++ :try_start_2f ++ iget-object v2, p0, Landroid/media/MediaRecorder$PrivacyRunner;->this$0:Landroid/media/MediaRecorder; ++ ++ #getter for: Landroid/media/MediaRecorder;->mFd:Ljava/io/FileDescriptor; ++ invoke-static {v2}, Landroid/media/MediaRecorder;->access$600(Landroid/media/MediaRecorder;)Ljava/io/FileDescriptor; ++ ++ move-result-object v2 ++ ++ if-eqz v2, :cond_68 ++ ++ iget-object v2, p0, Landroid/media/MediaRecorder$PrivacyRunner;->this$0:Landroid/media/MediaRecorder; ++ ++ #getter for: Landroid/media/MediaRecorder;->pFileDescriptorPath:Ljava/lang/String; ++ invoke-static {v2}, Landroid/media/MediaRecorder;->access$700(Landroid/media/MediaRecorder;)Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ if-eqz v2, :cond_68 ++ ++ new-instance v1, Ljava/io/File; ++ ++ iget-object v2, p0, Landroid/media/MediaRecorder$PrivacyRunner;->this$0:Landroid/media/MediaRecorder; ++ ++ #getter for: Landroid/media/MediaRecorder;->pFileDescriptorPath:Ljava/lang/String; ++ invoke-static {v2}, Landroid/media/MediaRecorder;->access$700(Landroid/media/MediaRecorder;)Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-direct {v1, v2}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v1}, Ljava/io/File;->delete()Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_29 ++ ++ iget-object v2, p0, Landroid/media/MediaRecorder$PrivacyRunner;->this$0:Landroid/media/MediaRecorder; ++ ++ const/4 v3, 0x1 ++ ++ #setter for: Landroid/media/MediaRecorder;->deletedFile:Z ++ invoke-static {v2, v3}, Landroid/media/MediaRecorder;->access$502(Landroid/media/MediaRecorder;Z)Z ++ :try_end_56 ++ .catchall {:try_start_2f .. :try_end_56} :catchall_76 ++ .catch Ljava/lang/Exception; {:try_start_2f .. :try_end_56} :catch_57 ++ ++ goto :goto_29 ++ ++ :catch_57 ++ move-exception v0 ++ ++ :try_start_58 ++ const-string v2, "PM,MediaRecorder" ++ ++ const-string v3, "Something went wrong while waiting for cancel the stream!" ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ :try_end_62 ++ .catchall {:try_start_58 .. :try_end_62} :catchall_76 ++ ++ iget-object v2, p0, Landroid/media/MediaRecorder$PrivacyRunner;->this$0:Landroid/media/MediaRecorder; ++ ++ #calls: Landroid/media/MediaRecorder;->privacyStop()V ++ invoke-static {v2}, Landroid/media/MediaRecorder;->access$300(Landroid/media/MediaRecorder;)V ++ ++ goto :goto_2e ++ ++ :cond_68 ++ :try_start_68 ++ const-string v2, "PM,MediaRecorder" ++ ++ const-string v3, "Can\'t delete temporary File, because all is null?! It could be that we only want to record audio?!" ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v2, p0, Landroid/media/MediaRecorder$PrivacyRunner;->this$0:Landroid/media/MediaRecorder; ++ ++ const/4 v3, 0x0 ++ ++ #setter for: Landroid/media/MediaRecorder;->deletedFile:Z ++ invoke-static {v2, v3}, Landroid/media/MediaRecorder;->access$502(Landroid/media/MediaRecorder;Z)Z ++ :try_end_75 ++ .catchall {:try_start_68 .. :try_end_75} :catchall_76 ++ .catch Ljava/lang/Exception; {:try_start_68 .. :try_end_75} :catch_57 ++ ++ goto :goto_29 ++ ++ :catchall_76 ++ move-exception v2 ++ ++ iget-object v3, p0, Landroid/media/MediaRecorder$PrivacyRunner;->this$0:Landroid/media/MediaRecorder; ++ ++ #calls: Landroid/media/MediaRecorder;->privacyStop()V ++ invoke-static {v3}, Landroid/media/MediaRecorder;->access$300(Landroid/media/MediaRecorder;)V ++ ++ throw v2 ++.end method ++ ++.method public setDelay(J)V ++ .registers 3 ++ ++ iput-wide p1, p0, Landroid/media/MediaRecorder$PrivacyRunner;->delay:J ++ ++ return-void ++.end method +diff -Npru stock-framework/smali/android/media/MediaRecorder.smali pdroid-framework/smali/android/media/MediaRecorder.smali +--- stock-framework/smali/android/media/MediaRecorder.smali 2013-08-10 20:37:47.499213649 -0700 ++++ pdroid-framework/smali/android/media/MediaRecorder.smali 2013-08-10 20:37:41.979213420 -0700 +@@ -6,6 +6,7 @@ + # annotations + .annotation system Ldalvik/annotation/MemberClasses; + value = { ++ Landroid/media/MediaRecorder$PrivacyRunner;, + Landroid/media/MediaRecorder$EventHandler;, + Landroid/media/MediaRecorder$OnInfoListener;, + Landroid/media/MediaRecorder$OnErrorListener;, +@@ -19,6 +20,14 @@ + + + # static fields ++.field private static final BOTH_DATA_ACCESS:I = 0xb ++ ++.field private static final GOT_ERROR:I = -0x3 ++ ++.field private static final IS_ALLOWED:I = -0x1 ++ ++.field private static final IS_NOT_ALLOWED:I = -0x2 ++ + .field public static final MEDIA_ERROR_SERVER_DIED:I = 0x64 + + .field public static final MEDIA_RECORDER_ERROR_UNKNOWN:I = 0x1 +@@ -53,10 +62,30 @@ + + .field public static final MEDIA_RECORDER_TRACK_INTER_CHUNK_TIME_MS:I = 0x3ee + ++.field private static final MIC_DATA_ACCESS:I = 0xa ++ ++.field private static final MODE_RECORD_AUDIO:I = 0x2 ++ ++.field private static final MODE_RECORD_BOTH:I = 0x3 ++ ++.field private static final PRIVACY_PATH_DEF:Ljava/lang/String; = "/data/data/" ++ ++.field private static final PRIVACY_TAG:Ljava/lang/String; = "PM,MediaRecorder" ++ ++.field private static final STATE_RECORD_AUDIO:I = 0x0 ++ ++.field private static final STATE_RECORD_BOTH:I = 0x1 ++ + .field private static final TAG:Ljava/lang/String; = "MediaRecorder" + + + # instance fields ++.field private ACTUAL_STATE:I ++ ++.field private context:Landroid/content/Context; ++ ++.field private deletedFile:Z ++ + .field private mEventHandler:Landroid/media/MediaRecorder$EventHandler; + + .field private mFd:Ljava/io/FileDescriptor; +@@ -69,8 +98,24 @@ + + .field private mPath:Ljava/lang/String; + ++.field private mPm:Landroid/content/pm/IPackageManager; ++ + .field private mSurface:Landroid/view/Surface; + ++.field private pFileDescriptor:Ljava/io/FileDescriptor; ++ ++.field private pFileDescriptorPath:Ljava/lang/String; ++ ++.field private pPath:Ljava/lang/String; ++ ++.field private pRunner:Landroid/media/MediaRecorder$PrivacyRunner; ++ ++.field private pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++.field private privacyMode:Z ++ ++.field private stoppedStream:Z ++ + + # direct methods + .method static constructor ()V +@@ -86,15 +131,35 @@ + .end method + + .method public constructor ()V +- .registers 4 ++ .registers 5 ++ ++ const/4 v3, 0x0 ++ ++ const/4 v2, 0x0 + + invoke-direct {p0}, Ljava/lang/Object;->()V + ++ iput-object v2, p0, Landroid/media/MediaRecorder;->pPath:Ljava/lang/String; ++ ++ iput-object v2, p0, Landroid/media/MediaRecorder;->pFileDescriptorPath:Ljava/lang/String; ++ ++ iput-object v2, p0, Landroid/media/MediaRecorder;->pFileDescriptor:Ljava/io/FileDescriptor; ++ ++ iput-object v2, p0, Landroid/media/MediaRecorder;->pRunner:Landroid/media/MediaRecorder$PrivacyRunner; ++ ++ iput-boolean v3, p0, Landroid/media/MediaRecorder;->deletedFile:Z ++ ++ iput-boolean v3, p0, Landroid/media/MediaRecorder;->privacyMode:Z ++ ++ iput-boolean v3, p0, Landroid/media/MediaRecorder;->stoppedStream:Z ++ ++ iput v3, p0, Landroid/media/MediaRecorder;->ACTUAL_STATE:I ++ + invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper; + + move-result-object v0 + +- if-eqz v0, :cond_1d ++ if-eqz v0, :cond_32 + + new-instance v2, Landroid/media/MediaRecorder$EventHandler; + +@@ -102,7 +167,9 @@ + + iput-object v2, p0, Landroid/media/MediaRecorder;->mEventHandler:Landroid/media/MediaRecorder$EventHandler; + +- :goto_10 ++ :goto_22 ++ invoke-direct {p0}, Landroid/media/MediaRecorder;->initiate()V ++ + invoke-static {}, Landroid/app/ActivityThread;->currentPackageName()Ljava/lang/String; + + move-result-object v1 +@@ -115,12 +182,12 @@ + + return-void + +- :cond_1d ++ :cond_32 + invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper; + + move-result-object v0 + +- if-eqz v0, :cond_2b ++ if-eqz v0, :cond_40 + + new-instance v2, Landroid/media/MediaRecorder$EventHandler; + +@@ -128,14 +195,12 @@ + + iput-object v2, p0, Landroid/media/MediaRecorder;->mEventHandler:Landroid/media/MediaRecorder$EventHandler; + +- goto :goto_10 +- +- :cond_2b +- const/4 v2, 0x0 ++ goto :goto_22 + ++ :cond_40 + iput-object v2, p0, Landroid/media/MediaRecorder;->mEventHandler:Landroid/media/MediaRecorder$EventHandler; + +- goto :goto_10 ++ goto :goto_22 + .end method + + .method private native _prepare()V +@@ -180,12 +245,1724 @@ + return-object v0 + .end method + +-.method public static final getAudioSourceMax()I ++.method static synthetic access$300(Landroid/media/MediaRecorder;)V + .registers 1 + +- const/4 v0, 0x7 ++ invoke-direct {p0}, Landroid/media/MediaRecorder;->privacyStop()V ++ ++ return-void ++.end method ++ ++.method static synthetic access$400(Landroid/media/MediaRecorder;)Ljava/lang/String; ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/media/MediaRecorder;->mPath:Ljava/lang/String; ++ ++ return-object v0 ++.end method ++ ++.method static synthetic access$502(Landroid/media/MediaRecorder;Z)Z ++ .registers 2 ++ ++ iput-boolean p1, p0, Landroid/media/MediaRecorder;->deletedFile:Z ++ ++ return p1 ++.end method ++ ++.method static synthetic access$600(Landroid/media/MediaRecorder;)Ljava/io/FileDescriptor; ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/media/MediaRecorder;->mFd:Ljava/io/FileDescriptor; ++ ++ return-object v0 ++.end method ++ ++.method static synthetic access$700(Landroid/media/MediaRecorder;)Ljava/lang/String; ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/media/MediaRecorder;->pFileDescriptorPath:Ljava/lang/String; ++ ++ return-object v0 ++.end method ++ ++.method private checkIfPackagesAllowed(I)I ++ .registers 12 ++ ++ const/4 v6, -0x1 ++ ++ const/4 v5, -0x2 ++ ++ const/4 v7, -0x3 ++ ++ :try_start_3 ++ iget-object v8, p0, Landroid/media/MediaRecorder;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v8, :cond_5b ++ ++ const/4 v2, 0x0 ++ ++ invoke-direct {p0}, Landroid/media/MediaRecorder;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v4 ++ ++ if-eqz v3, :cond_51 ++ ++ packed-switch p1, :pswitch_data_72 ++ ++ move v5, v7 ++ ++ :cond_16 ++ :goto_16 ++ return v5 ++ ++ :pswitch_17 ++ const/4 v1, 0x0 ++ ++ :goto_18 ++ array-length v8, v3 ++ ++ if-ge v1, v8, :cond_2f ++ ++ iget-object v8, p0, Landroid/media/MediaRecorder;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v9, v3, v1 ++ ++ invoke-virtual {v8, v9, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v2 ++ ++ if-eqz v2, :cond_2b ++ ++ invoke-virtual {v2}, Landroid/privacy/PrivacySettings;->getRecordAudioSetting()B ++ ++ move-result v8 ++ ++ if-nez v8, :cond_16 ++ ++ :cond_2b ++ const/4 v2, 0x0 ++ ++ add-int/lit8 v1, v1, 0x1 ++ ++ goto :goto_18 ++ ++ :cond_2f ++ move v5, v6 ++ ++ goto :goto_16 ++ ++ :pswitch_31 ++ const/4 v1, 0x0 ++ ++ :goto_32 ++ array-length v8, v3 ++ ++ if-ge v1, v8, :cond_4f ++ ++ iget-object v8, p0, Landroid/media/MediaRecorder;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v9, v3, v1 ++ ++ invoke-virtual {v8, v9, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v2 ++ ++ if-eqz v2, :cond_4b ++ ++ invoke-virtual {v2}, Landroid/privacy/PrivacySettings;->getRecordAudioSetting()B ++ ++ move-result v8 ++ ++ if-nez v8, :cond_16 ++ ++ invoke-virtual {v2}, Landroid/privacy/PrivacySettings;->getCameraSetting()B ++ ++ move-result v8 ++ ++ if-nez v8, :cond_16 ++ ++ :cond_4b ++ const/4 v2, 0x0 ++ ++ add-int/lit8 v1, v1, 0x1 ++ ++ goto :goto_32 ++ ++ :cond_4f ++ move v5, v6 ++ ++ goto :goto_16 ++ ++ :cond_51 ++ const-string v5, "PM,MediaRecorder" ++ ++ const-string/jumbo v6, "return GOT_ERROR, because package_names are NULL" ++ ++ invoke-static {v5, v6}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ move v5, v7 ++ ++ goto :goto_16 ++ ++ :cond_5b ++ const-string v5, "PM,MediaRecorder" ++ ++ const-string/jumbo v6, "return GOT_ERROR, because pSetMan is NULL" ++ ++ invoke-static {v5, v6}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_63 ++ .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_63} :catch_65 ++ ++ move v5, v7 ++ ++ goto :goto_16 ++ ++ :catch_65 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v5, "PM,MediaRecorder" ++ ++ const-string v6, "Got exception in checkIfPackagesAllowed" ++ ++ invoke-static {v5, v6}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ move v5, v7 ++ ++ goto :goto_16 ++ ++ :pswitch_data_72 ++ .packed-switch 0x2 ++ :pswitch_17 ++ :pswitch_31 ++ .end packed-switch ++.end method ++ ++.method private dataAccess(ZI)V ++ .registers 8 ++ ++ invoke-direct {p0}, Landroid/media/MediaRecorder;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ if-eqz p1, :cond_5a ++ ++ if-eqz v1, :cond_5a ++ ++ packed-switch p2, :pswitch_data_ae ++ ++ :cond_b ++ :goto_b ++ return-void ++ ++ :pswitch_c ++ const/4 v0, 0x0 ++ ++ :goto_d ++ array-length v2, v1 ++ ++ if-ge v0, v2, :cond_b ++ ++ const-string v2, "PM,MediaRecorder" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Allowed Package: -" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ aget-object v4, v1, v0 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, "- accessing microphone." ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_d ++ ++ :pswitch_33 ++ const/4 v0, 0x0 ++ ++ :goto_34 ++ array-length v2, v1 ++ ++ if-ge v0, v2, :cond_b ++ ++ const-string v2, "PM,MediaRecorder" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Allowed Package: -" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ aget-object v4, v1, v0 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, "- accessing microphone and camera." ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_34 ++ ++ :cond_5a ++ if-eqz v1, :cond_b ++ ++ packed-switch p2, :pswitch_data_b6 ++ ++ goto :goto_b ++ ++ :pswitch_60 ++ const/4 v0, 0x0 ++ ++ :goto_61 ++ array-length v2, v1 ++ ++ if-ge v0, v2, :cond_b ++ ++ const-string v2, "PM,MediaRecorder" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Blocked Package: -" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ aget-object v4, v1, v0 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, "- accessing microphone." ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_61 ++ ++ :pswitch_87 ++ const/4 v0, 0x0 ++ ++ :goto_88 ++ array-length v2, v1 ++ ++ if-ge v0, v2, :cond_b ++ ++ const-string v2, "PM,MediaRecorder" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Blocked Package: -" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ aget-object v4, v1, v0 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, "- accessing microphone and camera." ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_88 ++ ++ :pswitch_data_ae ++ .packed-switch 0xa ++ :pswitch_c ++ :pswitch_33 ++ .end packed-switch ++ ++ :pswitch_data_b6 ++ .packed-switch 0xa ++ :pswitch_60 ++ :pswitch_87 ++ .end packed-switch ++.end method ++ ++.method public static final getAudioSourceMax()I ++ .registers 1 ++ ++ const/4 v0, 0x7 ++ ++ return v0 ++.end method ++ ++.method private getPackageName()[Ljava/lang/String; ++ .registers 6 ++ ++ :try_start_0 ++ iget-object v3, p0, Landroid/media/MediaRecorder;->mPm:Landroid/content/pm/IPackageManager; ++ ++ if-eqz v3, :cond_f ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v2 ++ ++ iget-object v3, p0, Landroid/media/MediaRecorder;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-interface {v3, v2}, Landroid/content/pm/IPackageManager;->getPackagesForUid(I)[Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ :goto_e ++ return-object v1 ++ ++ :cond_f ++ const-string/jumbo v3, "package" ++ ++ invoke-static {v3}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v3 ++ ++ invoke-static {v3}, Landroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager; ++ ++ move-result-object v3 ++ ++ iput-object v3, p0, Landroid/media/MediaRecorder;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v2 ++ ++ iget-object v3, p0, Landroid/media/MediaRecorder;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-interface {v3, v2}, Landroid/content/pm/IPackageManager;->getPackagesForUid(I)[Ljava/lang/String; ++ :try_end_25 ++ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_25} :catch_27 ++ ++ move-result-object v1 ++ ++ goto :goto_e ++ ++ :catch_27 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v3, "PM,MediaRecorder" ++ ++ const-string/jumbo v4, "something went wrong with getting package name" ++ ++ invoke-static {v3, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v1, 0x0 ++ ++ goto :goto_e ++.end method ++ ++.method private getPrivacyFileDescriptor()Ljava/io/FileDescriptor; ++ .registers 19 ++ ++ invoke-direct/range {p0 .. p0}, Landroid/media/MediaRecorder;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v12 ++ ++ new-instance v14, Ljava/util/Random; ++ ++ invoke-direct {v14}, Ljava/util/Random;->()V ++ ++ const/4 v1, 0x0 ++ ++ new-instance v15, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v15}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {v14}, Ljava/util/Random;->nextLong()J ++ ++ move-result-wide v16 ++ ++ invoke-virtual/range {v15 .. v17}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ const-string v16, ".tmp" ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ const/4 v7, 0x0 ++ ++ const/4 v3, 0x0 ++ ++ const/4 v11, 0x0 ++ ++ :goto_24 ++ array-length v15, v12 ++ ++ if-ge v11, v15, :cond_247 ++ ++ :try_start_27 ++ new-instance v9, Ljava/io/File; ++ ++ new-instance v15, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v15}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v16, "/data/data/" ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ aget-object v16, v12, v11 ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ const-string v16, "/cache/" ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v15 ++ ++ invoke-direct {v9, v15}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v9}, Ljava/io/File;->mkdirs()Z ++ ++ new-instance v8, Ljava/io/FileWriter; ++ ++ new-instance v15, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v15}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v16, "/data/data/" ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ aget-object v16, v12, v11 ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ const-string v16, "/cache/" ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v15 ++ ++ invoke-direct {v8, v15}, Ljava/io/FileWriter;->(Ljava/lang/String;)V ++ :try_end_6e ++ .catchall {:try_start_27 .. :try_end_6e} :catchall_15f ++ .catch Ljava/lang/Exception; {:try_start_27 .. :try_end_6e} :catch_155 ++ ++ :try_start_6e ++ const-string/jumbo v15, "test" ++ ++ invoke-virtual {v8, v15}, Ljava/io/FileWriter;->write(Ljava/lang/String;)V ++ ++ invoke-virtual {v8}, Ljava/io/FileWriter;->flush()V ++ ++ invoke-virtual {v8}, Ljava/io/FileWriter;->close()V ++ ++ new-instance v4, Ljava/io/File; ++ ++ new-instance v15, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v15}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v16, "/data/data/" ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ aget-object v16, v12, v11 ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ const-string v16, "/cache/" ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v15 ++ ++ invoke-direct {v4, v15}, Ljava/io/File;->(Ljava/lang/String;)V ++ :try_end_9e ++ .catchall {:try_start_6e .. :try_end_9e} :catchall_235 ++ .catch Ljava/lang/Exception; {:try_start_6e .. :try_end_9e} :catch_23e ++ ++ :try_start_9e ++ invoke-virtual {v4}, Ljava/io/File;->delete()Z ++ ++ const-string v15, "PM,MediaRecorder" ++ ++ new-instance v16, Ljava/lang/StringBuilder; ++ ++ invoke-direct/range {v16 .. v16}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v17, "found our package: " ++ ++ invoke-virtual/range {v16 .. v17}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v16 ++ ++ aget-object v17, v12, v11 ++ ++ invoke-virtual/range {v16 .. v17}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v16 ++ ++ const-string v17, " with internal path. File: " ++ ++ invoke-virtual/range {v16 .. v17}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v16 ++ ++ move-object/from16 v0, v16 ++ ++ invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v16 ++ ++ invoke-virtual/range {v16 .. v16}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v16 ++ ++ invoke-static/range {v15 .. v16}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ aget-object v1, v12, v11 ++ :try_end_c9 ++ .catchall {:try_start_9e .. :try_end_c9} :catchall_239 ++ .catch Ljava/lang/Exception; {:try_start_9e .. :try_end_c9} :catch_242 ++ ++ const/4 v7, 0x0 ++ ++ const/4 v3, 0x0 ++ ++ invoke-static {}, Ljava/lang/System;->gc()V ++ ++ move-object v4, v3 ++ ++ move-object v8, v7 ++ ++ :goto_d0 ++ if-eqz v1, :cond_172 ++ ++ :try_start_d2 ++ new-instance v10, Ljava/io/FileOutputStream; ++ ++ new-instance v15, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v15}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v16, "/data/data/" ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ const-string v16, "/cache/" ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v15 ++ ++ invoke-direct {v10, v15}, Ljava/io/FileOutputStream;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v10}, Ljava/io/FileOutputStream;->getFD()Ljava/io/FileDescriptor; ++ ++ move-result-object v6 ++ ++ new-instance v15, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v15}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v16, "/data/data/" ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ const-string v16, "/cache/" ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v15 ++ ++ move-object/from16 v0, p0 ++ ++ iput-object v15, v0, Landroid/media/MediaRecorder;->pFileDescriptorPath:Ljava/lang/String; ++ ++ const-string v15, "PM,MediaRecorder" ++ ++ new-instance v16, Ljava/lang/StringBuilder; ++ ++ invoke-direct/range {v16 .. v16}, Ljava/lang/StringBuilder;->()V ++ ++ const-string/jumbo v17, "returned fileDescriptor for package: " ++ ++ invoke-virtual/range {v16 .. v17}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v16 ++ ++ move-object/from16 v0, v16 ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v16 ++ ++ const-string v17, " with internal path. Path: " ++ ++ invoke-virtual/range {v16 .. v17}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v16 ++ ++ const-string v17, "/data/data/" ++ ++ invoke-virtual/range {v16 .. v17}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v16 ++ ++ move-object/from16 v0, v16 ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v16 ++ ++ const-string v17, "/cache/" ++ ++ invoke-virtual/range {v16 .. v17}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v16 ++ ++ move-object/from16 v0, v16 ++ ++ invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v16 ++ ++ invoke-virtual/range {v16 .. v16}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v16 ++ ++ invoke-static/range {v15 .. v16}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_152 ++ .catch Ljava/lang/Exception; {:try_start_d2 .. :try_end_152} :catch_166 ++ ++ move-object v3, v4 ++ ++ move-object v7, v8 ++ ++ :goto_154 ++ return-object v6 ++ ++ :catch_155 ++ move-exception v15 ++ ++ :goto_156 ++ const/4 v7, 0x0 ++ ++ const/4 v3, 0x0 ++ ++ invoke-static {}, Ljava/lang/System;->gc()V ++ ++ add-int/lit8 v11, v11, 0x1 ++ ++ goto/16 :goto_24 ++ ++ :catchall_15f ++ move-exception v15 ++ ++ :goto_160 ++ const/4 v7, 0x0 ++ ++ const/4 v3, 0x0 ++ ++ invoke-static {}, Ljava/lang/System;->gc()V ++ ++ throw v15 ++ ++ :catch_166 ++ move-exception v5 ++ ++ const-string v15, "PM,MediaRecorder" ++ ++ const-string v16, "Got exception while creating fileDescriptor -> return null" ++ ++ invoke-static/range {v15 .. v16}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v6, 0x0 ++ ++ move-object v3, v4 ++ ++ move-object v7, v8 ++ ++ goto :goto_154 ++ ++ :cond_172 ++ :try_start_172 ++ invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String; ++ ++ move-result-object v13 ++ ++ new-instance v7, Ljava/io/FileWriter; ++ ++ new-instance v15, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v15}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {v15, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ const-string v16, "/" ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v15 ++ ++ invoke-direct {v7, v15}, Ljava/io/FileWriter;->(Ljava/lang/String;)V ++ :try_end_196 ++ .catch Ljava/lang/Exception; {:try_start_172 .. :try_end_196} :catch_22e ++ ++ :try_start_196 ++ const-string/jumbo v15, "test" ++ ++ invoke-virtual {v7, v15}, Ljava/io/FileWriter;->write(Ljava/lang/String;)V ++ ++ invoke-virtual {v7}, Ljava/io/FileWriter;->flush()V ++ ++ invoke-virtual {v7}, Ljava/io/FileWriter;->close()V ++ ++ new-instance v3, Ljava/io/File; ++ ++ new-instance v15, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v15}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {v15, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ const-string v16, "/" ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v15 ++ ++ invoke-direct {v3, v15}, Ljava/io/File;->(Ljava/lang/String;)V ++ :try_end_1be ++ .catch Ljava/lang/Exception; {:try_start_196 .. :try_end_1be} :catch_232 ++ ++ :try_start_1be ++ invoke-virtual {v3}, Ljava/io/File;->delete()Z ++ ++ new-instance v10, Ljava/io/FileOutputStream; ++ ++ new-instance v15, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v15}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {v15, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ const-string v16, "/" ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v15 ++ ++ invoke-direct {v10, v15}, Ljava/io/FileOutputStream;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v10}, Ljava/io/FileOutputStream;->getFD()Ljava/io/FileDescriptor; ++ ++ move-result-object v6 ++ ++ new-instance v15, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v15}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {v15, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ const-string v16, "/" ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v15 ++ ++ move-object/from16 v0, p0 ++ ++ iput-object v15, v0, Landroid/media/MediaRecorder;->pFileDescriptorPath:Ljava/lang/String; ++ ++ const-string v15, "PM,MediaRecorder" ++ ++ new-instance v16, Ljava/lang/StringBuilder; ++ ++ invoke-direct/range {v16 .. v16}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v17, "Returned FileDescriptor. Path: " ++ ++ invoke-virtual/range {v16 .. v17}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v16 ++ ++ move-object/from16 v0, v16 ++ ++ invoke-virtual {v0, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v16 ++ ++ const-string v17, "/" ++ ++ invoke-virtual/range {v16 .. v17}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v16 ++ ++ move-object/from16 v0, v16 ++ ++ invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v16 ++ ++ const-string v17, " . It is on SDCard!" ++ ++ invoke-virtual/range {v16 .. v17}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v16 ++ ++ invoke-virtual/range {v16 .. v16}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v16 ++ ++ invoke-static/range {v15 .. v16}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_228 ++ .catch Ljava/lang/Exception; {:try_start_1be .. :try_end_228} :catch_22a ++ ++ goto/16 :goto_154 ++ ++ :catch_22a ++ move-exception v5 ++ ++ :goto_22b ++ const/4 v6, 0x0 ++ ++ goto/16 :goto_154 ++ ++ :catch_22e ++ move-exception v5 ++ ++ move-object v3, v4 ++ ++ move-object v7, v8 ++ ++ goto :goto_22b ++ ++ :catch_232 ++ move-exception v5 ++ ++ move-object v3, v4 ++ ++ goto :goto_22b ++ ++ :catchall_235 ++ move-exception v15 ++ ++ move-object v7, v8 ++ ++ goto/16 :goto_160 ++ ++ :catchall_239 ++ move-exception v15 ++ ++ move-object v3, v4 ++ ++ move-object v7, v8 ++ ++ goto/16 :goto_160 ++ ++ :catch_23e ++ move-exception v15 ++ ++ move-object v7, v8 ++ ++ goto/16 :goto_156 ++ ++ :catch_242 ++ move-exception v15 ++ ++ move-object v3, v4 ++ ++ move-object v7, v8 ++ ++ goto/16 :goto_156 ++ ++ :cond_247 ++ move-object v4, v3 ++ ++ move-object v8, v7 ++ ++ goto/16 :goto_d0 ++.end method ++ ++.method private getPrivacyPath()Ljava/lang/String; ++ .registers 16 ++ ++ invoke-direct {p0}, Landroid/media/MediaRecorder;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v9 ++ ++ new-instance v11, Ljava/util/Random; ++ ++ invoke-direct {v11}, Ljava/util/Random;->()V ++ ++ const/4 v0, 0x0 ++ ++ new-instance v12, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v12}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {v11}, Ljava/util/Random;->nextLong()J ++ ++ move-result-wide v13 ++ ++ invoke-virtual {v12, v13, v14}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ const-string v13, ".tmp" ++ ++ invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ const/4 v8, 0x0 ++ ++ :goto_24 ++ array-length v12, v9 ++ ++ if-ge v8, v12, :cond_1eb ++ ++ :try_start_27 ++ new-instance v7, Ljava/io/File; ++ ++ new-instance v12, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v12}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v13, "/data/data/" ++ ++ invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ aget-object v13, v9, v8 ++ ++ invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ const-string v13, "/cache/" ++ ++ invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v12 ++ ++ invoke-direct {v7, v12}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v7}, Ljava/io/File;->mkdirs()Z ++ ++ new-instance v6, Ljava/io/FileWriter; ++ ++ new-instance v12, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v12}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v13, "/data/data/" ++ ++ invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ aget-object v13, v9, v8 ++ ++ invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ const-string v13, "/cache/" ++ ++ invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v12, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v12 ++ ++ invoke-direct {v6, v12}, Ljava/io/FileWriter;->(Ljava/lang/String;)V ++ :try_end_6e ++ .catchall {:try_start_27 .. :try_end_6e} :catchall_137 ++ .catch Ljava/lang/Exception; {:try_start_27 .. :try_end_6e} :catch_12d ++ ++ :try_start_6e ++ const-string/jumbo v12, "test" ++ ++ invoke-virtual {v6, v12}, Ljava/io/FileWriter;->write(Ljava/lang/String;)V ++ ++ invoke-virtual {v6}, Ljava/io/FileWriter;->flush()V ++ ++ invoke-virtual {v6}, Ljava/io/FileWriter;->close()V ++ ++ new-instance v3, Ljava/io/File; ++ ++ new-instance v12, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v12}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v13, "/data/data/" ++ ++ invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ aget-object v13, v9, v8 ++ ++ invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ const-string v13, "/cache/" ++ ++ invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v12, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v12 ++ ++ invoke-direct {v3, v12}, Ljava/io/File;->(Ljava/lang/String;)V ++ :try_end_9e ++ .catchall {:try_start_6e .. :try_end_9e} :catchall_1d9 ++ .catch Ljava/lang/Exception; {:try_start_6e .. :try_end_9e} :catch_1e2 ++ ++ :try_start_9e ++ invoke-virtual {v3}, Ljava/io/File;->delete()Z ++ ++ const-string v12, "PM,MediaRecorder" ++ ++ new-instance v13, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v13}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v14, "found our package: " ++ ++ invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v13 ++ ++ aget-object v14, v9, v8 ++ ++ invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v13 ++ ++ const-string v14, " with internal path. File: " ++ ++ invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v13 ++ ++ invoke-virtual {v13, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v13 ++ ++ invoke-virtual {v13}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v13 ++ ++ invoke-static {v12, v13}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ aget-object v0, v9, v8 ++ :try_end_c7 ++ .catchall {:try_start_9e .. :try_end_c7} :catchall_1dd ++ .catch Ljava/lang/Exception; {:try_start_9e .. :try_end_c7} :catch_1e6 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ invoke-static {}, Ljava/lang/System;->gc()V ++ ++ move-object v3, v2 ++ ++ move-object v6, v5 ++ ++ :goto_ce ++ if-eqz v0, :cond_13e ++ ++ const-string v12, "PM,MediaRecorder" ++ ++ new-instance v13, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v13}, Ljava/lang/StringBuilder;->()V ++ ++ const-string/jumbo v14, "returned file: " ++ ++ invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v13 ++ ++ invoke-virtual {v13, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v13 ++ ++ const-string v14, " for package: " ++ ++ invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v13 ++ ++ invoke-virtual {v13, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v13 ++ ++ const-string v14, " with internal path. Path: " ++ ++ invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v13 ++ ++ const-string v14, "/data/data/" ++ ++ invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v13 ++ ++ invoke-virtual {v13, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v13 ++ ++ const-string v14, "/cache/" ++ ++ invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v13 ++ ++ invoke-virtual {v13, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v13 ++ ++ invoke-virtual {v13}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v13 ++ ++ invoke-static {v12, v13}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ new-instance v12, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v12}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v13, "/data/data/" ++ ++ invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v12, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ const-string v13, "/cache/" ++ ++ invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v12, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v12 ++ ++ move-object v2, v3 ++ ++ move-object v5, v6 ++ ++ :goto_12c ++ return-object v12 ++ ++ :catch_12d ++ move-exception v12 ++ ++ :goto_12e ++ const/4 v5, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ invoke-static {}, Ljava/lang/System;->gc()V ++ ++ add-int/lit8 v8, v8, 0x1 ++ ++ goto/16 :goto_24 ++ ++ :catchall_137 ++ move-exception v12 ++ ++ :goto_138 ++ const/4 v5, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ invoke-static {}, Ljava/lang/System;->gc()V ++ ++ throw v12 ++ ++ :cond_13e ++ :try_start_13e ++ invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v12}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String; ++ ++ move-result-object v10 ++ ++ new-instance v5, Ljava/io/FileWriter; ++ ++ new-instance v12, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v12}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {v12, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ const-string v13, "/" ++ ++ invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v12, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v12 ++ ++ invoke-direct {v5, v12}, Ljava/io/FileWriter;->(Ljava/lang/String;)V ++ :try_end_162 ++ .catch Ljava/lang/Exception; {:try_start_13e .. :try_end_162} :catch_1ce ++ ++ :try_start_162 ++ const-string/jumbo v12, "test" ++ ++ invoke-virtual {v5, v12}, Ljava/io/FileWriter;->write(Ljava/lang/String;)V ++ ++ invoke-virtual {v5}, Ljava/io/FileWriter;->flush()V ++ ++ invoke-virtual {v5}, Ljava/io/FileWriter;->close()V ++ ++ new-instance v2, Ljava/io/File; ++ ++ new-instance v12, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v12}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {v12, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ const-string v13, "/" ++ ++ invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v12, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v12 ++ ++ invoke-direct {v2, v12}, Ljava/io/File;->(Ljava/lang/String;)V ++ :try_end_18a ++ .catch Ljava/lang/Exception; {:try_start_162 .. :try_end_18a} :catch_1d4 ++ ++ :try_start_18a ++ invoke-virtual {v2}, Ljava/io/File;->delete()Z ++ ++ const-string v12, "PM,MediaRecorder" ++ ++ new-instance v13, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v13}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v14, "Return filePath: " ++ ++ invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v13 ++ ++ invoke-virtual {v13, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v13 ++ ++ const-string v14, "/" ++ ++ invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v13 ++ ++ invoke-virtual {v13, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v13 ++ ++ const-string v14, " . It is on SDCard!" ++ ++ invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v13 ++ ++ invoke-virtual {v13}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v13 ++ ++ invoke-static {v12, v13}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ new-instance v12, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v12}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {v12, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ const-string v13, "/" ++ ++ invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v12, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v12 ++ ++ invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ :try_end_1cb ++ .catch Ljava/lang/Exception; {:try_start_18a .. :try_end_1cb} :catch_1d7 ++ ++ move-result-object v12 ++ ++ goto/16 :goto_12c ++ ++ :catch_1ce ++ move-exception v4 ++ ++ move-object v2, v3 ++ ++ move-object v5, v6 ++ ++ :goto_1d1 ++ const/4 v12, 0x0 ++ ++ goto/16 :goto_12c ++ ++ :catch_1d4 ++ move-exception v4 ++ ++ move-object v2, v3 ++ ++ goto :goto_1d1 ++ ++ :catch_1d7 ++ move-exception v4 ++ ++ goto :goto_1d1 ++ ++ :catchall_1d9 ++ move-exception v12 ++ ++ move-object v5, v6 ++ ++ goto/16 :goto_138 ++ ++ :catchall_1dd ++ move-exception v12 ++ ++ move-object v2, v3 ++ ++ move-object v5, v6 ++ ++ goto/16 :goto_138 ++ ++ :catch_1e2 ++ move-exception v12 ++ ++ move-object v5, v6 ++ ++ goto/16 :goto_12e ++ ++ :catch_1e6 ++ move-exception v12 ++ ++ move-object v2, v3 ++ ++ move-object v5, v6 ++ ++ goto/16 :goto_12e ++ ++ :cond_1eb ++ move-object v3, v2 ++ ++ move-object v6, v5 ++ ++ goto/16 :goto_ce ++.end method ++ ++.method private initiate()V ++ .registers 5 ++ ++ const/4 v1, 0x0 ++ ++ :try_start_1 ++ iput-object v1, p0, Landroid/media/MediaRecorder;->context:Landroid/content/Context; ++ ++ new-instance v1, Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v2, p0, Landroid/media/MediaRecorder;->context:Landroid/content/Context; ++ ++ const-string/jumbo v3, "privacy" ++ ++ invoke-static {v3}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v3 ++ ++ invoke-static {v3}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v3 ++ ++ invoke-direct {v1, v2, v3}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v1, p0, Landroid/media/MediaRecorder;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string/jumbo v1, "package" ++ ++ invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Landroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager; ++ ++ move-result-object v1 ++ ++ iput-object v1, p0, Landroid/media/MediaRecorder;->mPm:Landroid/content/pm/IPackageManager; ++ ++ const/4 v1, 0x1 ++ ++ iput-boolean v1, p0, Landroid/media/MediaRecorder;->privacyMode:Z ++ :try_end_27 ++ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_27} :catch_28 ++ ++ :goto_27 ++ return-void ++ ++ :catch_28 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v1, "PM,MediaRecorder" ++ ++ const-string v2, "Something went wrong with initalize variables" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v1, 0x0 + +- return v0 ++ iput-boolean v1, p0, Landroid/media/MediaRecorder;->privacyMode:Z ++ ++ goto :goto_27 + .end method + + .method private final native native_finalize()V +@@ -240,17 +2017,104 @@ + goto :goto_a + .end method + ++.method private privacyStop()V ++ .registers 4 ++ ++ :try_start_0 ++ invoke-virtual {p0}, Landroid/media/MediaRecorder;->stop()V ++ :try_end_3 ++ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_3} :catch_4 ++ ++ :goto_3 ++ return-void ++ ++ :catch_4 ++ move-exception v0 ++ ++ const-string v1, "PM,MediaRecorder" ++ ++ const-string v2, "Got exception while trying to call privacyStop()" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto :goto_3 ++.end method ++ + .method private native setParameter(Ljava/lang/String;)V + .end method + + + # virtual methods + .method protected finalize()V +- .registers 1 ++ .registers 4 ++ ++ const/4 v2, 0x1 ++ ++ iget-boolean v1, p0, Landroid/media/MediaRecorder;->deletedFile:Z ++ ++ if-nez v1, :cond_18 ++ ++ iget-object v1, p0, Landroid/media/MediaRecorder;->mPath:Ljava/lang/String; ++ ++ if-eqz v1, :cond_1c + ++ new-instance v0, Ljava/io/File; ++ ++ iget-object v1, p0, Landroid/media/MediaRecorder;->mPath:Ljava/lang/String; ++ ++ invoke-direct {v0, v1}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v0}, Ljava/io/File;->delete()Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_18 ++ ++ iput-boolean v2, p0, Landroid/media/MediaRecorder;->deletedFile:Z ++ ++ :cond_18 ++ :goto_18 + invoke-direct {p0}, Landroid/media/MediaRecorder;->native_finalize()V + + return-void ++ ++ :cond_1c ++ iget-object v1, p0, Landroid/media/MediaRecorder;->mFd:Ljava/io/FileDescriptor; ++ ++ if-eqz v1, :cond_34 ++ ++ iget-object v1, p0, Landroid/media/MediaRecorder;->pFileDescriptorPath:Ljava/lang/String; ++ ++ if-eqz v1, :cond_34 ++ ++ new-instance v0, Ljava/io/File; ++ ++ iget-object v1, p0, Landroid/media/MediaRecorder;->pFileDescriptorPath:Ljava/lang/String; ++ ++ invoke-direct {v0, v1}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v0}, Ljava/io/File;->delete()Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_18 ++ ++ iput-boolean v2, p0, Landroid/media/MediaRecorder;->deletedFile:Z ++ ++ goto :goto_18 ++ ++ :cond_34 ++ const-string v1, "PM,MediaRecorder" ++ ++ const-string v2, "Can\'t delete temporary File, because all is null?! It could be that we only want to record audio?!" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v1, 0x0 ++ ++ iput-boolean v1, p0, Landroid/media/MediaRecorder;->deletedFile:Z ++ ++ goto :goto_18 + .end method + + .method public native getMaxAmplitude()I +@@ -262,7 +2126,7 @@ + .end method + + .method public prepare()V +- .registers 8 ++ .registers 12 + .annotation system Ldalvik/annotation/Throws; + value = { + Ljava/lang/IllegalStateException;, +@@ -270,20 +2134,80 @@ + } + .end annotation + +- const-wide/16 v2, 0x0 ++ iget-boolean v0, p0, Landroid/media/MediaRecorder;->privacyMode:Z ++ ++ if-nez v0, :cond_7 ++ ++ invoke-direct {p0}, Landroid/media/MediaRecorder;->initiate()V ++ ++ :cond_7 ++ const/4 v0, 0x0 ++ ++ iput-boolean v0, p0, Landroid/media/MediaRecorder;->deletedFile:Z ++ ++ const/4 v9, 0x0 ++ ++ iget v0, p0, Landroid/media/MediaRecorder;->ACTUAL_STATE:I ++ ++ packed-switch v0, :pswitch_data_102 ++ ++ :cond_10 ++ :goto_10 ++ invoke-direct {p0}, Landroid/media/MediaRecorder;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v8 + ++ if-nez v9, :cond_31 ++ ++ iget v0, p0, Landroid/media/MediaRecorder;->ACTUAL_STATE:I ++ ++ const/4 v1, 0x1 ++ ++ if-ne v0, v1, :cond_cf ++ ++ if-eqz v8, :cond_cf ++ ++ array-length v0, v8 ++ ++ if-lez v0, :cond_cf ++ ++ iget-object v0, p0, Landroid/media/MediaRecorder;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v1, 0x0 ++ ++ aget-object v1, v8, v1 ++ ++ const/4 v2, 0x0 ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "camera" ++ ++ const/4 v5, 0x0 ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_2e ++ :goto_2e ++ const/4 v0, 0x1 ++ ++ iput-boolean v0, p0, Landroid/media/MediaRecorder;->deletedFile:Z ++ ++ :cond_31 + iget-object v0, p0, Landroid/media/MediaRecorder;->mPath:Ljava/lang/String; + +- if-eqz v0, :cond_25 ++ if-eqz v0, :cond_ea + +- new-instance v6, Ljava/io/FileOutputStream; ++ new-instance v7, Ljava/io/FileOutputStream; + + iget-object v0, p0, Landroid/media/MediaRecorder;->mPath:Ljava/lang/String; + +- invoke-direct {v6, v0}, Ljava/io/FileOutputStream;->(Ljava/lang/String;)V ++ invoke-direct {v7, v0}, Ljava/io/FileOutputStream;->(Ljava/lang/String;)V + +- :try_start_d +- invoke-virtual {v6}, Ljava/io/FileOutputStream;->getFD()Ljava/io/FileDescriptor; ++ :try_start_3c ++ invoke-virtual {v7}, Ljava/io/FileOutputStream;->getFD()Ljava/io/FileDescriptor; + + move-result-object v1 + +@@ -294,39 +2218,215 @@ + move-object v0, p0 + + invoke-direct/range {v0 .. v5}, Landroid/media/MediaRecorder;->_setOutputFile(Ljava/io/FileDescriptor;JJ)V +- :try_end_19 +- .catchall {:try_start_d .. :try_end_19} :catchall_20 ++ :try_end_48 ++ .catchall {:try_start_3c .. :try_end_48} :catchall_e5 + +- invoke-virtual {v6}, Ljava/io/FileOutputStream;->close()V ++ invoke-virtual {v7}, Ljava/io/FileOutputStream;->close()V + +- :goto_1c ++ :goto_4b + invoke-direct {p0}, Landroid/media/MediaRecorder;->_prepare()V + + return-void + +- :catchall_20 ++ :pswitch_4f ++ const/4 v0, 0x2 ++ ++ invoke-direct {p0, v0}, Landroid/media/MediaRecorder;->checkIfPackagesAllowed(I)I ++ ++ move-result v0 ++ ++ const/4 v1, -0x2 ++ ++ if-ne v0, v1, :cond_10 ++ ++ invoke-direct {p0}, Landroid/media/MediaRecorder;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v10 ++ ++ if-eqz v10, :cond_6f ++ ++ array-length v0, v10 ++ ++ if-lez v0, :cond_6f ++ ++ iget-object v0, p0, Landroid/media/MediaRecorder;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v1, 0x0 ++ ++ aget-object v1, v10, v1 ++ ++ const/4 v2, 0x0 ++ ++ const/4 v3, 0x1 ++ ++ const-string/jumbo v4, "recordAudio" ++ ++ const/4 v5, 0x0 ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_6f ++ new-instance v0, Landroid/media/MediaRecorder$PrivacyRunner; ++ ++ invoke-direct {v0, p0}, Landroid/media/MediaRecorder$PrivacyRunner;->(Landroid/media/MediaRecorder;)V ++ ++ iput-object v0, p0, Landroid/media/MediaRecorder;->pRunner:Landroid/media/MediaRecorder$PrivacyRunner; ++ ++ iget-object v0, p0, Landroid/media/MediaRecorder;->pRunner:Landroid/media/MediaRecorder$PrivacyRunner; ++ ++ const-wide/16 v1, 0x32 ++ ++ invoke-virtual {v0, v1, v2}, Landroid/media/MediaRecorder$PrivacyRunner;->setDelay(J)V ++ ++ iget-object v0, p0, Landroid/media/MediaRecorder;->pRunner:Landroid/media/MediaRecorder$PrivacyRunner; ++ ++ invoke-virtual {v0}, Landroid/media/MediaRecorder$PrivacyRunner;->start()V ++ ++ const/4 v9, 0x1 ++ ++ goto :goto_10 ++ ++ :pswitch_84 ++ const/4 v0, 0x3 ++ ++ invoke-direct {p0, v0}, Landroid/media/MediaRecorder;->checkIfPackagesAllowed(I)I ++ ++ move-result v0 ++ ++ const/4 v1, -0x2 ++ ++ if-ne v0, v1, :cond_10 ++ ++ invoke-direct {p0}, Landroid/media/MediaRecorder;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v10 ++ ++ if-eqz v10, :cond_a3 ++ ++ array-length v0, v10 ++ ++ if-lez v0, :cond_a3 ++ ++ iget-object v0, p0, Landroid/media/MediaRecorder;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v1, 0x0 ++ ++ aget-object v1, v10, v1 ++ ++ const/4 v2, 0x0 ++ ++ const/4 v3, 0x1 ++ ++ const-string v4, "camera" ++ ++ const/4 v5, 0x0 ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_a3 ++ iget-object v0, p0, Landroid/media/MediaRecorder;->mPath:Ljava/lang/String; ++ ++ if-eqz v0, :cond_bc ++ ++ invoke-direct {p0}, Landroid/media/MediaRecorder;->getPrivacyPath()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ iput-object v0, p0, Landroid/media/MediaRecorder;->mPath:Ljava/lang/String; ++ ++ :goto_ad ++ new-instance v0, Landroid/media/MediaRecorder$PrivacyRunner; ++ ++ invoke-direct {v0, p0}, Landroid/media/MediaRecorder$PrivacyRunner;->(Landroid/media/MediaRecorder;)V ++ ++ iput-object v0, p0, Landroid/media/MediaRecorder;->pRunner:Landroid/media/MediaRecorder$PrivacyRunner; ++ ++ iget-object v0, p0, Landroid/media/MediaRecorder;->pRunner:Landroid/media/MediaRecorder$PrivacyRunner; ++ ++ invoke-virtual {v0}, Landroid/media/MediaRecorder$PrivacyRunner;->start()V ++ ++ const/4 v9, 0x1 ++ ++ goto/16 :goto_10 ++ ++ :cond_bc ++ iget-object v0, p0, Landroid/media/MediaRecorder;->mFd:Ljava/io/FileDescriptor; ++ ++ if-eqz v0, :cond_c7 ++ ++ invoke-direct {p0}, Landroid/media/MediaRecorder;->getPrivacyFileDescriptor()Ljava/io/FileDescriptor; ++ ++ move-result-object v0 ++ ++ iput-object v0, p0, Landroid/media/MediaRecorder;->mFd:Ljava/io/FileDescriptor; ++ ++ goto :goto_ad ++ ++ :cond_c7 ++ new-instance v0, Ljava/io/IOException; ++ ++ const-string v1, "No valid output file" ++ ++ invoke-direct {v0, v1}, Ljava/io/IOException;->(Ljava/lang/String;)V ++ ++ throw v0 ++ ++ :cond_cf ++ if-eqz v8, :cond_2e ++ ++ array-length v0, v8 ++ ++ if-lez v0, :cond_2e ++ ++ iget-object v0, p0, Landroid/media/MediaRecorder;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v1, 0x0 ++ ++ aget-object v1, v8, v1 ++ ++ const/4 v2, 0x0 ++ ++ const/4 v3, 0x0 ++ ++ const-string/jumbo v4, "recordAudio" ++ ++ const/4 v5, 0x0 ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_2e ++ ++ :catchall_e5 + move-exception v0 + +- invoke-virtual {v6}, Ljava/io/FileOutputStream;->close()V ++ invoke-virtual {v7}, Ljava/io/FileOutputStream;->close()V + + throw v0 + +- :cond_25 ++ :cond_ea + iget-object v0, p0, Landroid/media/MediaRecorder;->mFd:Ljava/io/FileDescriptor; + +- if-eqz v0, :cond_31 ++ if-eqz v0, :cond_fa + + iget-object v1, p0, Landroid/media/MediaRecorder;->mFd:Ljava/io/FileDescriptor; + +- move-object v0, p0 ++ const-wide/16 v2, 0x0 + +- move-wide v4, v2 ++ const-wide/16 v4, 0x0 ++ ++ move-object v0, p0 + + invoke-direct/range {v0 .. v5}, Landroid/media/MediaRecorder;->_setOutputFile(Ljava/io/FileDescriptor;JJ)V + +- goto :goto_1c ++ goto/16 :goto_4b + +- :cond_31 ++ :cond_fa + new-instance v0, Ljava/io/IOException; + + const-string v1, "No valid output file" +@@ -334,23 +2434,97 @@ + invoke-direct {v0, v1}, Ljava/io/IOException;->(Ljava/lang/String;)V + + throw v0 ++ ++ :pswitch_data_102 ++ .packed-switch 0x0 ++ :pswitch_4f ++ :pswitch_84 ++ .end packed-switch + .end method + + .method public native release()V + .end method + + .method public reset()V +- .registers 3 ++ .registers 5 ++ ++ const/4 v3, 0x0 ++ ++ const/4 v2, 0x1 + + invoke-direct {p0}, Landroid/media/MediaRecorder;->native_reset()V + +- iget-object v0, p0, Landroid/media/MediaRecorder;->mEventHandler:Landroid/media/MediaRecorder$EventHandler; ++ iget-boolean v1, p0, Landroid/media/MediaRecorder;->deletedFile:Z + +- const/4 v1, 0x0 ++ if-nez v1, :cond_1c ++ ++ iget-object v1, p0, Landroid/media/MediaRecorder;->mPath:Ljava/lang/String; ++ ++ if-eqz v1, :cond_27 ++ ++ new-instance v0, Ljava/io/File; ++ ++ iget-object v1, p0, Landroid/media/MediaRecorder;->mPath:Ljava/lang/String; ++ ++ invoke-direct {v0, v1}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v0}, Ljava/io/File;->delete()Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_1c ++ ++ iput-boolean v2, p0, Landroid/media/MediaRecorder;->deletedFile:Z + +- invoke-virtual {v0, v1}, Landroid/media/MediaRecorder$EventHandler;->removeCallbacksAndMessages(Ljava/lang/Object;)V ++ :cond_1c ++ :goto_1c ++ iput-object v3, p0, Landroid/media/MediaRecorder;->pRunner:Landroid/media/MediaRecorder$PrivacyRunner; ++ ++ invoke-static {}, Ljava/lang/System;->gc()V ++ ++ iget-object v1, p0, Landroid/media/MediaRecorder;->mEventHandler:Landroid/media/MediaRecorder$EventHandler; ++ ++ invoke-virtual {v1, v3}, Landroid/media/MediaRecorder$EventHandler;->removeCallbacksAndMessages(Ljava/lang/Object;)V + + return-void ++ ++ :cond_27 ++ iget-object v1, p0, Landroid/media/MediaRecorder;->mFd:Ljava/io/FileDescriptor; ++ ++ if-eqz v1, :cond_3f ++ ++ iget-object v1, p0, Landroid/media/MediaRecorder;->pFileDescriptorPath:Ljava/lang/String; ++ ++ if-eqz v1, :cond_3f ++ ++ new-instance v0, Ljava/io/File; ++ ++ iget-object v1, p0, Landroid/media/MediaRecorder;->pFileDescriptorPath:Ljava/lang/String; ++ ++ invoke-direct {v0, v1}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v0}, Ljava/io/File;->delete()Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_1c ++ ++ iput-boolean v2, p0, Landroid/media/MediaRecorder;->deletedFile:Z ++ ++ goto :goto_1c ++ ++ :cond_3f ++ const-string v1, "PM,MediaRecorder" ++ ++ const-string v2, "Can\'t delete temporary File, because all is null?! It could be that we only want to record audio?!" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v1, 0x0 ++ ++ iput-boolean v1, p0, Landroid/media/MediaRecorder;->deletedFile:Z ++ ++ goto :goto_1c + .end method + + .method public setAudioChannels(I)V +@@ -510,6 +2684,10 @@ + .method public setCaptureRate(D)V + .registers 8 + ++ const/4 v3, 0x1 ++ ++ iput v3, p0, Landroid/media/MediaRecorder;->ACTUAL_STATE:I ++ + const-string/jumbo v3, "time-lapse-enable=1" + + invoke-direct {p0, v3}, Landroid/media/MediaRecorder;->setParameter(Ljava/lang/String;)V +@@ -804,6 +2982,10 @@ + + iput-object p1, p0, Landroid/media/MediaRecorder;->mFd:Ljava/io/FileDescriptor; + ++ const/4 v0, 0x0 ++ ++ iput-boolean v0, p0, Landroid/media/MediaRecorder;->deletedFile:Z ++ + return-void + .end method + +@@ -821,6 +3003,10 @@ + + iput-object p1, p0, Landroid/media/MediaRecorder;->mPath:Ljava/lang/String; + ++ const/4 v0, 0x0 ++ ++ iput-boolean v0, p0, Landroid/media/MediaRecorder;->deletedFile:Z ++ + return-void + .end method + +@@ -833,7 +3019,11 @@ + .end method + + .method public setPreviewDisplay(Landroid/view/Surface;)V +- .registers 2 ++ .registers 3 ++ ++ const/4 v0, 0x1 ++ ++ iput v0, p0, Landroid/media/MediaRecorder;->ACTUAL_STATE:I + + iput-object p1, p0, Landroid/media/MediaRecorder;->mSurface:Landroid/view/Surface; + +@@ -843,6 +3033,10 @@ + .method public setProfile(Landroid/media/CamcorderProfile;)V + .registers 4 + ++ const/4 v0, 0x1 ++ ++ iput v0, p0, Landroid/media/MediaRecorder;->ACTUAL_STATE:I ++ + iget v0, p1, Landroid/media/CamcorderProfile;->fileFormat:I + + invoke-virtual {p0, v0}, Landroid/media/MediaRecorder;->setOutputFormat(I)V +@@ -869,18 +3063,18 @@ + + const/16 v1, 0x3e8 + +- if-lt v0, v1, :cond_28 ++ if-lt v0, v1, :cond_2b + + iget v0, p1, Landroid/media/CamcorderProfile;->quality:I + + const/16 v1, 0x3ef + +- if-gt v0, v1, :cond_28 ++ if-gt v0, v1, :cond_2b + +- :goto_27 ++ :goto_2a + return-void + +- :cond_28 ++ :cond_2b + iget v0, p1, Landroid/media/CamcorderProfile;->audioBitRate:I + + invoke-virtual {p0, v0}, Landroid/media/MediaRecorder;->setAudioEncodingBitRate(I)V +@@ -897,7 +3091,7 @@ + + invoke-virtual {p0, v0}, Landroid/media/MediaRecorder;->setAudioEncoder(I)V + +- goto :goto_27 ++ goto :goto_2a + .end method + + .method public native setVideoEncoder(I)V +@@ -911,7 +3105,11 @@ + .method public setVideoEncodingBitRate(I)V + .registers 4 + +- if-gtz p1, :cond_a ++ const/4 v0, 0x1 ++ ++ iput v0, p0, Landroid/media/MediaRecorder;->ACTUAL_STATE:I ++ ++ if-gtz p1, :cond_d + + new-instance v0, Ljava/lang/IllegalArgumentException; + +@@ -921,7 +3119,7 @@ + + throw v0 + +- :cond_a ++ :cond_d + new-instance v0, Ljava/lang/StringBuilder; + + invoke-direct {v0}, Ljava/lang/StringBuilder;->()V +diff -Npru stock-framework/smali/android/net/NetworkInfo.smali pdroid-framework/smali/android/net/NetworkInfo.smali +--- stock-framework/smali/android/net/NetworkInfo.smali 2013-08-10 20:37:47.667213655 -0700 ++++ pdroid-framework/smali/android/net/NetworkInfo.smali 2013-08-10 20:37:42.139213426 -0700 +@@ -848,6 +848,14 @@ + throw v0 + .end method + ++.method public setState(Landroid/net/NetworkInfo$State;)V ++ .registers 2 ++ ++ iput-object p1, p0, Landroid/net/NetworkInfo;->mState:Landroid/net/NetworkInfo$State; ++ ++ return-void ++.end method ++ + .method setSubtype(ILjava/lang/String;)V + .registers 4 + +diff -Npru stock-framework/smali/android/net/wifi/p2p/WifiP2pService$P2pStateMachine.smali pdroid-framework/smali/android/net/wifi/p2p/WifiP2pService$P2pStateMachine.smali +--- stock-framework/smali/android/net/wifi/p2p/WifiP2pService$P2pStateMachine.smali 2013-08-10 20:37:47.807213661 -0700 ++++ pdroid-framework/smali/android/net/wifi/p2p/WifiP2pService$P2pStateMachine.smali 2013-08-10 20:37:42.279213433 -0700 +@@ -4546,7 +4546,7 @@ + + invoke-direct {v0}, Ljava/lang/StringBuilder;->()V + +- const-string v1, "mSavedPeerConfig " ++ const-string/jumbo v1, "mSavedPeerConfig " + + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +@@ -4568,7 +4568,7 @@ + + invoke-direct {v0}, Ljava/lang/StringBuilder;->()V + +- const-string v1, "mSavedP2pGroup " ++ const-string/jumbo v1, "mSavedP2pGroup " + + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +diff -Npru stock-framework/smali/android/net/wifi/p2p/WifiP2pService.smali pdroid-framework/smali/android/net/wifi/p2p/WifiP2pService.smali +--- stock-framework/smali/android/net/wifi/p2p/WifiP2pService.smali 2013-08-10 20:37:47.811213662 -0700 ++++ pdroid-framework/smali/android/net/wifi/p2p/WifiP2pService.smali 2013-08-10 20:37:42.279213433 -0700 +@@ -780,7 +780,7 @@ + + invoke-direct {v0}, Ljava/lang/StringBuilder;->()V + +- const-string v1, "mServiceDiscReqId " ++ const-string/jumbo v1, "mServiceDiscReqId " + + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +diff -Npru stock-framework/smali/android/net/wifi/WifiInfo.smali pdroid-framework/smali/android/net/wifi/WifiInfo.smali +--- stock-framework/smali/android/net/wifi/WifiInfo.smali 2013-08-10 20:37:47.735213659 -0700 ++++ pdroid-framework/smali/android/net/wifi/WifiInfo.smali 2013-08-10 20:37:42.203213430 -0700 +@@ -265,6 +265,44 @@ + return-void + .end method + ++.method public constructor (Z)V ++ .registers 4 ++ ++ const/4 v1, -0x1 ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ const-string v0, "" ++ ++ invoke-static {v0}, Landroid/net/wifi/WifiSsid;->createFromAsciiEncoded(Ljava/lang/String;)Landroid/net/wifi/WifiSsid; ++ ++ move-result-object v0 ++ ++ iput-object v0, p0, Landroid/net/wifi/WifiInfo;->mWifiSsid:Landroid/net/wifi/WifiSsid; ++ ++ const-string v0, "" ++ ++ iput-object v0, p0, Landroid/net/wifi/WifiInfo;->mBSSID:Ljava/lang/String; ++ ++ iput v1, p0, Landroid/net/wifi/WifiInfo;->mNetworkId:I ++ ++ sget-object v0, Landroid/net/wifi/SupplicantState;->UNINITIALIZED:Landroid/net/wifi/SupplicantState; ++ ++ iput-object v0, p0, Landroid/net/wifi/WifiInfo;->mSupplicantState:Landroid/net/wifi/SupplicantState; ++ ++ const/16 v0, -0x270f ++ ++ iput v0, p0, Landroid/net/wifi/WifiInfo;->mRssi:I ++ ++ iput v1, p0, Landroid/net/wifi/WifiInfo;->mLinkSpeed:I ++ ++ const/4 v0, 0x0 ++ ++ iput-boolean v0, p0, Landroid/net/wifi/WifiInfo;->mHiddenSSID:Z ++ ++ return-void ++.end method ++ + .method static synthetic access$002(Landroid/net/wifi/WifiInfo;Landroid/net/wifi/WifiSsid;)Landroid/net/wifi/WifiSsid; + .registers 2 + +diff -Npru stock-framework/smali/android/os/Looper.smali pdroid-framework/smali/android/os/Looper.smali +--- stock-framework/smali/android/os/Looper.smali 2013-08-10 20:37:47.895213666 -0700 ++++ pdroid-framework/smali/android/os/Looper.smali 2013-08-10 20:37:42.391213438 -0700 +@@ -451,7 +451,7 @@ + + invoke-direct {v4}, Ljava/lang/StringBuilder;->()V + +- const-string v5, "mRun=" ++ const-string/jumbo v5, "mRun=" + + invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +@@ -503,11 +503,11 @@ + + iget-object v4, p0, Landroid/os/Looper;->mQueue:Landroid/os/MessageQueue; + +- if-eqz v4, :cond_93 ++ if-eqz v4, :cond_94 + + iget-object v4, p0, Landroid/os/Looper;->mQueue:Landroid/os/MessageQueue; + +- :goto_4d ++ :goto_4e + invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; + + move-result-object v4 +@@ -520,13 +520,13 @@ + + iget-object v4, p0, Landroid/os/Looper;->mQueue:Landroid/os/MessageQueue; + +- if-eqz v4, :cond_b3 ++ if-eqz v4, :cond_b4 + + iget-object v5, p0, Landroid/os/Looper;->mQueue:Landroid/os/MessageQueue; + + monitor-enter v5 + +- :try_start_5f ++ :try_start_60 + invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J + + move-result-wide v2 +@@ -537,8 +537,8 @@ + + const/4 v1, 0x0 + +- :goto_68 +- if-eqz v0, :cond_96 ++ :goto_69 ++ if-eqz v0, :cond_97 + + new-instance v4, Ljava/lang/StringBuilder; + +@@ -577,18 +577,18 @@ + add-int/lit8 v1, v1, 0x1 + + iget-object v0, v0, Landroid/os/Message;->next:Landroid/os/Message; +- :try_end_92 +- .catchall {:try_start_5f .. :try_end_92} :catchall_b4 ++ :try_end_93 ++ .catchall {:try_start_60 .. :try_end_93} :catchall_b5 + +- goto :goto_68 ++ goto :goto_69 + +- :cond_93 ++ :cond_94 + const-string v4, "(null" + +- goto :goto_4d ++ goto :goto_4e + +- :cond_96 +- :try_start_96 ++ :cond_97 ++ :try_start_97 + new-instance v4, Ljava/lang/StringBuilder; + + invoke-direct {v4}, Ljava/lang/StringBuilder;->()V +@@ -617,15 +617,15 @@ + + monitor-exit v5 + +- :cond_b3 ++ :cond_b4 + return-void + +- :catchall_b4 ++ :catchall_b5 + move-exception v4 + + monitor-exit v5 +- :try_end_b6 +- .catchall {:try_start_96 .. :try_end_b6} :catchall_b4 ++ :try_end_b7 ++ .catchall {:try_start_97 .. :try_end_b7} :catchall_b5 + + throw v4 + .end method +diff -Npru stock-framework/smali/android/os/SystemProperties.smali pdroid-framework/smali/android/os/SystemProperties.smali +--- stock-framework/smali/android/os/SystemProperties.smali 2013-08-10 20:37:47.931213667 -0700 ++++ pdroid-framework/smali/android/os/SystemProperties.smali 2013-08-10 20:37:42.435213438 -0700 +@@ -4,10 +4,26 @@ + + + # static fields ++.field private static final GOT_ERROR:I = -0x3 ++ ++.field private static final IS_ALLOWED:I = -0x1 ++ ++.field private static final IS_NOT_ALLOWED:I = -0x2 ++ ++.field private static final PRIVACY_TAG:Ljava/lang/String; = "SystemProperties" ++ + .field public static final PROP_NAME_MAX:I = 0x1f + + .field public static final PROP_VALUE_MAX:I = 0x5b + ++.field private static context:Landroid/content/Context; ++ ++.field private static mPm:Landroid/content/pm/IPackageManager; ++ ++.field private static pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++.field private static privacyMode:Z ++ + .field private static final sChangeCallbacks:Ljava/util/ArrayList; + .annotation system Ldalvik/annotation/Signature; + value = { +@@ -30,6 +46,10 @@ + + sput-object v0, Landroid/os/SystemProperties;->sChangeCallbacks:Ljava/util/ArrayList; + ++ const/4 v0, 0x0 ++ ++ sput-boolean v0, Landroid/os/SystemProperties;->privacyMode:Z ++ + return-void + .end method + +@@ -142,6 +162,205 @@ + throw v2 + .end method + ++.method private static checkIfPackagesAllowed()I ++ .registers 8 ++ ++ const/4 v5, -0x3 ++ ++ :try_start_1 ++ sget-object v6, Landroid/os/SystemProperties;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v6, :cond_41 ++ ++ const/4 v2, 0x0 ++ ++ invoke-static {}, Landroid/os/SystemProperties;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v4 ++ ++ if-eqz v3, :cond_2c ++ ++ const/4 v1, 0x0 ++ ++ :goto_11 ++ array-length v6, v3 ++ ++ if-ge v1, v6, :cond_2a ++ ++ sget-object v6, Landroid/os/SystemProperties;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v7, v3, v1 ++ ++ invoke-virtual {v6, v7, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v2 ++ ++ if-eqz v2, :cond_26 ++ ++ invoke-virtual {v2}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v6 ++ ++ if-eqz v6, :cond_26 ++ ++ const/4 v5, -0x2 ++ ++ :goto_25 ++ return v5 ++ ++ :cond_26 ++ const/4 v2, 0x0 ++ ++ add-int/lit8 v1, v1, 0x1 ++ ++ goto :goto_11 ++ ++ :cond_2a ++ const/4 v5, -0x1 ++ ++ goto :goto_25 ++ ++ :cond_2c ++ const-string v6, "SystemProperties" ++ ++ const-string/jumbo v7, "return GOT_ERROR, because package_names are NULL" ++ ++ invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_34 ++ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_34} :catch_35 ++ ++ goto :goto_25 ++ ++ :catch_35 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v6, "SystemProperties" ++ ++ const-string v7, "Got exception in checkIfPackagesAllowed" ++ ++ invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto :goto_25 ++ ++ :cond_41 ++ :try_start_41 ++ const-string v6, "SystemProperties" ++ ++ const-string/jumbo v7, "return GOT_ERROR, because pSetMan is NULL" ++ ++ invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_49 ++ .catch Ljava/lang/Exception; {:try_start_41 .. :try_end_49} :catch_35 ++ ++ goto :goto_25 ++.end method ++ ++.method private static dataAccess(Z)V ++ .registers 6 ++ ++ invoke-static {}, Landroid/os/SystemProperties;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ if-eqz p0, :cond_2f ++ ++ if-eqz v1, :cond_2f ++ ++ const/4 v0, 0x0 ++ ++ :goto_9 ++ array-length v2, v1 ++ ++ if-ge v0, v2, :cond_58 ++ ++ const-string v2, "SystemProperties" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Allowed Package: -" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ aget-object v4, v1, v0 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, "- accessing networkinfo." ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_9 ++ ++ :cond_2f ++ if-eqz v1, :cond_58 ++ ++ const/4 v0, 0x0 ++ ++ :goto_32 ++ array-length v2, v1 ++ ++ if-ge v0, v2, :cond_58 ++ ++ const-string v2, "SystemProperties" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Blocked Package: -" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ aget-object v4, v1, v0 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, "- accessing networkinfo." ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_32 ++ ++ :cond_58 ++ return-void ++.end method ++ + .method public static get(Ljava/lang/String;)Ljava/lang/String; + .registers 3 + +@@ -162,11 +381,53 @@ + throw v0 + + :cond_10 ++ const-string v0, "gsm.operator.alpha" ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_20 ++ ++ const-string v0, "gsm.operator.numeric" ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_35 ++ ++ :cond_20 ++ invoke-static {}, Landroid/os/SystemProperties;->initiate()V ++ ++ invoke-static {}, Landroid/os/SystemProperties;->checkIfPackagesAllowed()I ++ ++ move-result v0 ++ ++ const/4 v1, -0x2 ++ ++ if-ne v0, v1, :cond_31 ++ ++ const/4 v0, 0x0 ++ ++ invoke-static {v0}, Landroid/os/SystemProperties;->dataAccess(Z)V ++ ++ const-string v0, "" ++ ++ :goto_30 ++ return-object v0 ++ ++ :cond_31 ++ const/4 v0, 0x1 ++ ++ invoke-static {v0}, Landroid/os/SystemProperties;->dataAccess(Z)V ++ ++ :cond_35 + invoke-static {p0}, Landroid/os/SystemProperties;->native_get(Ljava/lang/String;)Ljava/lang/String; + + move-result-object v0 + +- return-object v0 ++ goto :goto_30 + .end method + + .method public static get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +@@ -189,11 +450,53 @@ + throw v0 + + :cond_10 ++ const-string v0, "gsm.operator.alpha" ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_20 ++ ++ const-string v0, "gsm.operator.numeric" ++ ++ invoke-virtual {p0, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_35 ++ ++ :cond_20 ++ invoke-static {}, Landroid/os/SystemProperties;->initiate()V ++ ++ invoke-static {}, Landroid/os/SystemProperties;->checkIfPackagesAllowed()I ++ ++ move-result v0 ++ ++ const/4 v1, -0x2 ++ ++ if-ne v0, v1, :cond_31 ++ ++ const/4 v0, 0x0 ++ ++ invoke-static {v0}, Landroid/os/SystemProperties;->dataAccess(Z)V ++ ++ const-string v0, "" ++ ++ :goto_30 ++ return-object v0 ++ ++ :cond_31 ++ const/4 v0, 0x1 ++ ++ invoke-static {v0}, Landroid/os/SystemProperties;->dataAccess(Z)V ++ ++ :cond_35 + invoke-static {p0, p1}, Landroid/os/SystemProperties;->native_get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + + move-result-object v0 + +- return-object v0 ++ goto :goto_30 + .end method + + .method public static getBoolean(Ljava/lang/String;Z)Z +@@ -376,6 +679,135 @@ + goto :goto_2c + .end method + ++.method private static getPackageName()[Ljava/lang/String; ++ .registers 5 ++ ++ :try_start_0 ++ sget-object v3, Landroid/os/SystemProperties;->mPm:Landroid/content/pm/IPackageManager; ++ ++ if-eqz v3, :cond_f ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v2 ++ ++ sget-object v3, Landroid/os/SystemProperties;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-interface {v3, v2}, Landroid/content/pm/IPackageManager;->getPackagesForUid(I)[Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ :goto_e ++ return-object v1 ++ ++ :cond_f ++ const-string/jumbo v3, "package" ++ ++ invoke-static {v3}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v3 ++ ++ invoke-static {v3}, Landroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager; ++ ++ move-result-object v3 ++ ++ sput-object v3, Landroid/os/SystemProperties;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v2 ++ ++ sget-object v3, Landroid/os/SystemProperties;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-interface {v3, v2}, Landroid/content/pm/IPackageManager;->getPackagesForUid(I)[Ljava/lang/String; ++ :try_end_25 ++ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_25} :catch_27 ++ ++ move-result-object v1 ++ ++ goto :goto_e ++ ++ :catch_27 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v3, "SystemProperties" ++ ++ const-string/jumbo v4, "something went wrong with getting package name" ++ ++ invoke-static {v3, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v1, 0x0 ++ ++ goto :goto_e ++.end method ++ ++.method private static initiate()V ++ .registers 4 ++ ++ const/4 v1, 0x0 ++ ++ :try_start_1 ++ sput-object v1, Landroid/os/SystemProperties;->context:Landroid/content/Context; ++ ++ new-instance v1, Landroid/privacy/PrivacySettingsManager; ++ ++ sget-object v2, Landroid/os/SystemProperties;->context:Landroid/content/Context; ++ ++ const-string/jumbo v3, "privacy" ++ ++ invoke-static {v3}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v3 ++ ++ invoke-static {v3}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v3 ++ ++ invoke-direct {v1, v2, v3}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ sput-object v1, Landroid/os/SystemProperties;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string/jumbo v1, "package" ++ ++ invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Landroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager; ++ ++ move-result-object v1 ++ ++ sput-object v1, Landroid/os/SystemProperties;->mPm:Landroid/content/pm/IPackageManager; ++ ++ const/4 v1, 0x1 ++ ++ sput-boolean v1, Landroid/os/SystemProperties;->privacyMode:Z ++ :try_end_27 ++ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_27} :catch_28 ++ ++ :goto_27 ++ return-void ++ ++ :catch_28 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v1, "SystemProperties" ++ ++ const-string v2, "Something went wrong with initalize variables" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v1, 0x0 ++ ++ sput-boolean v1, Landroid/os/SystemProperties;->privacyMode:Z ++ ++ goto :goto_27 ++.end method ++ + .method private static native native_add_change_callback()V + .end method + +diff -Npru stock-framework/smali/android/privacy/IPrivacySettingsManager.smali pdroid-framework/smali/android/privacy/IPrivacySettingsManager.smali +--- stock-framework/smali/android/privacy/IPrivacySettingsManager.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/IPrivacySettingsManager.smali 2013-08-10 20:37:42.487213441 -0700 +@@ -0,0 +1,96 @@ ++.class public interface abstract Landroid/privacy/IPrivacySettingsManager; ++.super Ljava/lang/Object; ++.source "IPrivacySettingsManager.java" ++ ++# interfaces ++.implements Landroid/os/IInterface; ++ ++ ++# annotations ++.annotation system Ldalvik/annotation/MemberClasses; ++ value = { ++ Landroid/privacy/IPrivacySettingsManager$Stub; ++ } ++.end annotation ++ ++ ++# virtual methods ++.method public abstract addObserver(Ljava/lang/String;)V ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++.end method ++ ++.method public abstract deleteSettings(Ljava/lang/String;)Z ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++.end method ++ ++.method public abstract getSettings(Ljava/lang/String;)Landroid/privacy/PrivacySettings; ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++.end method ++ ++.method public abstract notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++.end method ++ ++.method public abstract purgeSettings()Z ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++.end method ++ ++.method public abstract registerObservers()V ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++.end method ++ ++.method public abstract saveSettings(Landroid/privacy/PrivacySettings;)Z ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++.end method ++ ++.method public abstract setBootCompleted()V ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++.end method ++ ++.method public abstract setEnabled(Z)Z ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++.end method ++ ++.method public abstract setNotificationsEnabled(Z)Z ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++.end method +diff -Npru stock-framework/smali/android/privacy/IPrivacySettingsManager$Stub$Proxy.smali pdroid-framework/smali/android/privacy/IPrivacySettingsManager$Stub$Proxy.smali +--- stock-framework/smali/android/privacy/IPrivacySettingsManager$Stub$Proxy.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/IPrivacySettingsManager$Stub$Proxy.smali 2013-08-10 20:37:42.487213441 -0700 +@@ -0,0 +1,690 @@ ++.class Landroid/privacy/IPrivacySettingsManager$Stub$Proxy; ++.super Ljava/lang/Object; ++.source "IPrivacySettingsManager.java" ++ ++# interfaces ++.implements Landroid/privacy/IPrivacySettingsManager; ++ ++ ++# annotations ++.annotation system Ldalvik/annotation/EnclosingClass; ++ value = Landroid/privacy/IPrivacySettingsManager$Stub; ++.end annotation ++ ++.annotation system Ldalvik/annotation/InnerClass; ++ accessFlags = 0xa ++ name = "Proxy" ++.end annotation ++ ++ ++# instance fields ++.field private mRemote:Landroid/os/IBinder; ++ ++ ++# direct methods ++.method constructor (Landroid/os/IBinder;)V ++ .registers 2 ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ iput-object p1, p0, Landroid/privacy/IPrivacySettingsManager$Stub$Proxy;->mRemote:Landroid/os/IBinder; ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public addObserver(Ljava/lang/String;)V ++ .registers 7 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v0 ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v1 ++ ++ :try_start_8 ++ const-string v2, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {v0, v2}, Landroid/os/Parcel;->writeInterfaceToken(Ljava/lang/String;)V ++ ++ invoke-virtual {v0, p1}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V ++ ++ iget-object v2, p0, Landroid/privacy/IPrivacySettingsManager$Stub$Proxy;->mRemote:Landroid/os/IBinder; ++ ++ const/4 v3, 0x6 ++ ++ const/4 v4, 0x0 ++ ++ invoke-interface {v2, v3, v0, v1, v4}, Landroid/os/IBinder;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->readException()V ++ :try_end_1a ++ .catchall {:try_start_8 .. :try_end_1a} :catchall_21 ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ return-void ++ ++ :catchall_21 ++ move-exception v2 ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ throw v2 ++.end method ++ ++.method public asBinder()Landroid/os/IBinder; ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/privacy/IPrivacySettingsManager$Stub$Proxy;->mRemote:Landroid/os/IBinder; ++ ++ return-object v0 ++.end method ++ ++.method public deleteSettings(Ljava/lang/String;)Z ++ .registers 8 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ const/4 v2, 0x0 ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v0 ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v1 ++ ++ :try_start_9 ++ const-string v3, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {v0, v3}, Landroid/os/Parcel;->writeInterfaceToken(Ljava/lang/String;)V ++ ++ invoke-virtual {v0, p1}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V ++ ++ iget-object v3, p0, Landroid/privacy/IPrivacySettingsManager$Stub$Proxy;->mRemote:Landroid/os/IBinder; ++ ++ const/4 v4, 0x3 ++ ++ const/4 v5, 0x0 ++ ++ invoke-interface {v3, v4, v0, v1, v5}, Landroid/os/IBinder;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->readException()V ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->readInt()I ++ :try_end_1e ++ .catchall {:try_start_9 .. :try_end_1e} :catchall_29 ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_22 ++ ++ const/4 v2, 0x1 ++ ++ :cond_22 ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ return v2 ++ ++ :catchall_29 ++ move-exception v3 ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ throw v3 ++.end method ++ ++.method public getInterfaceDescriptor()Ljava/lang/String; ++ .registers 2 ++ ++ const-string v0, "android.privacy.IPrivacySettingsManager" ++ ++ return-object v0 ++.end method ++ ++.method public getSettings(Ljava/lang/String;)Landroid/privacy/PrivacySettings; ++ .registers 8 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v0 ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v1 ++ ++ :try_start_8 ++ const-string v3, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {v0, v3}, Landroid/os/Parcel;->writeInterfaceToken(Ljava/lang/String;)V ++ ++ invoke-virtual {v0, p1}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V ++ ++ iget-object v3, p0, Landroid/privacy/IPrivacySettingsManager$Stub$Proxy;->mRemote:Landroid/os/IBinder; ++ ++ const/4 v4, 0x1 ++ ++ const/4 v5, 0x0 ++ ++ invoke-interface {v3, v4, v0, v1, v5}, Landroid/os/IBinder;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->readException()V ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->readInt()I ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_2f ++ ++ sget-object v3, Landroid/privacy/PrivacySettings;->CREATOR:Landroid/os/Parcelable$Creator; ++ ++ invoke-interface {v3, v1}, Landroid/os/Parcelable$Creator;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; ++ ++ move-result-object v2 ++ ++ check-cast v2, Landroid/privacy/PrivacySettings; ++ :try_end_28 ++ .catchall {:try_start_8 .. :try_end_28} :catchall_31 ++ ++ :goto_28 ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ return-object v2 ++ ++ :cond_2f ++ const/4 v2, 0x0 ++ ++ goto :goto_28 ++ ++ :catchall_31 ++ move-exception v3 ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ throw v3 ++.end method ++ ++.method public notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ .registers 10 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v0 ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v1 ++ ++ :try_start_8 ++ const-string v2, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {v0, v2}, Landroid/os/Parcel;->writeInterfaceToken(Ljava/lang/String;)V ++ ++ invoke-virtual {v0, p1}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V ++ ++ invoke-virtual {v0, p2}, Landroid/os/Parcel;->writeByte(B)V ++ ++ invoke-virtual {v0, p3}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V ++ ++ invoke-virtual {v0, p4}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V ++ ++ iget-object v2, p0, Landroid/privacy/IPrivacySettingsManager$Stub$Proxy;->mRemote:Landroid/os/IBinder; ++ ++ const/4 v3, 0x4 ++ ++ const/4 v4, 0x0 ++ ++ invoke-interface {v2, v3, v0, v1, v4}, Landroid/os/IBinder;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->readException()V ++ :try_end_23 ++ .catchall {:try_start_8 .. :try_end_23} :catchall_2a ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ return-void ++ ++ :catchall_2a ++ move-exception v2 ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ throw v2 ++.end method ++ ++.method public purgeSettings()Z ++ .registers 7 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ const/4 v2, 0x0 ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v0 ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v1 ++ ++ :try_start_9 ++ const-string v3, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {v0, v3}, Landroid/os/Parcel;->writeInterfaceToken(Ljava/lang/String;)V ++ ++ iget-object v3, p0, Landroid/privacy/IPrivacySettingsManager$Stub$Proxy;->mRemote:Landroid/os/IBinder; ++ ++ const/4 v4, 0x7 ++ ++ const/4 v5, 0x0 ++ ++ invoke-interface {v3, v4, v0, v1, v5}, Landroid/os/IBinder;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->readException()V ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->readInt()I ++ :try_end_1b ++ .catchall {:try_start_9 .. :try_end_1b} :catchall_26 ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_1f ++ ++ const/4 v2, 0x1 ++ ++ :cond_1f ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ return v2 ++ ++ :catchall_26 ++ move-exception v3 ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ throw v3 ++.end method ++ ++.method public registerObservers()V ++ .registers 6 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v0 ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v1 ++ ++ :try_start_8 ++ const-string v2, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {v0, v2}, Landroid/os/Parcel;->writeInterfaceToken(Ljava/lang/String;)V ++ ++ iget-object v2, p0, Landroid/privacy/IPrivacySettingsManager$Stub$Proxy;->mRemote:Landroid/os/IBinder; ++ ++ const/4 v3, 0x5 ++ ++ const/4 v4, 0x0 ++ ++ invoke-interface {v2, v3, v0, v1, v4}, Landroid/os/IBinder;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->readException()V ++ :try_end_17 ++ .catchall {:try_start_8 .. :try_end_17} :catchall_1e ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ return-void ++ ++ :catchall_1e ++ move-exception v2 ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ throw v2 ++.end method ++ ++.method public saveSettings(Landroid/privacy/PrivacySettings;)Z ++ .registers 9 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ const/4 v2, 0x1 ++ ++ const/4 v3, 0x0 ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v0 ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v1 ++ ++ :try_start_a ++ const-string v4, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {v0, v4}, Landroid/os/Parcel;->writeInterfaceToken(Ljava/lang/String;)V ++ ++ if-eqz p1, :cond_30 ++ ++ const/4 v4, 0x1 ++ ++ invoke-virtual {v0, v4}, Landroid/os/Parcel;->writeInt(I)V ++ ++ const/4 v4, 0x0 ++ ++ invoke-virtual {p1, v0, v4}, Landroid/privacy/PrivacySettings;->writeToParcel(Landroid/os/Parcel;I)V ++ ++ :goto_19 ++ iget-object v4, p0, Landroid/privacy/IPrivacySettingsManager$Stub$Proxy;->mRemote:Landroid/os/IBinder; ++ ++ const/4 v5, 0x2 ++ ++ const/4 v6, 0x0 ++ ++ invoke-interface {v4, v5, v0, v1, v6}, Landroid/os/IBinder;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->readException()V ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->readInt()I ++ :try_end_26 ++ .catchall {:try_start_a .. :try_end_26} :catchall_35 ++ ++ move-result v4 ++ ++ if-eqz v4, :cond_3d ++ ++ :goto_29 ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ return v2 ++ ++ :cond_30 ++ const/4 v4, 0x0 ++ ++ :try_start_31 ++ invoke-virtual {v0, v4}, Landroid/os/Parcel;->writeInt(I)V ++ :try_end_34 ++ .catchall {:try_start_31 .. :try_end_34} :catchall_35 ++ ++ goto :goto_19 ++ ++ :catchall_35 ++ move-exception v3 ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ throw v3 ++ ++ :cond_3d ++ move v2, v3 ++ ++ goto :goto_29 ++.end method ++ ++.method public setBootCompleted()V ++ .registers 6 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v0 ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v1 ++ ++ :try_start_8 ++ const-string v2, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {v0, v2}, Landroid/os/Parcel;->writeInterfaceToken(Ljava/lang/String;)V ++ ++ iget-object v2, p0, Landroid/privacy/IPrivacySettingsManager$Stub$Proxy;->mRemote:Landroid/os/IBinder; ++ ++ const/16 v3, 0xa ++ ++ const/4 v4, 0x0 ++ ++ invoke-interface {v2, v3, v0, v1, v4}, Landroid/os/IBinder;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->readException()V ++ :try_end_18 ++ .catchall {:try_start_8 .. :try_end_18} :catchall_1f ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ return-void ++ ++ :catchall_1f ++ move-exception v2 ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ throw v2 ++.end method ++ ++.method public setEnabled(Z)Z ++ .registers 9 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ const/4 v2, 0x1 ++ ++ const/4 v3, 0x0 ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v0 ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v1 ++ ++ :try_start_a ++ const-string v4, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {v0, v4}, Landroid/os/Parcel;->writeInterfaceToken(Ljava/lang/String;)V ++ ++ if-eqz p1, :cond_2d ++ ++ move v4, v2 ++ ++ :goto_12 ++ invoke-virtual {v0, v4}, Landroid/os/Parcel;->writeInt(I)V ++ ++ iget-object v4, p0, Landroid/privacy/IPrivacySettingsManager$Stub$Proxy;->mRemote:Landroid/os/IBinder; ++ ++ const/16 v5, 0x8 ++ ++ const/4 v6, 0x0 ++ ++ invoke-interface {v4, v5, v0, v1, v6}, Landroid/os/IBinder;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->readException()V ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->readInt()I ++ :try_end_23 ++ .catchall {:try_start_a .. :try_end_23} :catchall_31 ++ ++ move-result v4 ++ ++ if-eqz v4, :cond_2f ++ ++ :goto_26 ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ return v2 ++ ++ :cond_2d ++ move v4, v3 ++ ++ goto :goto_12 ++ ++ :cond_2f ++ move v2, v3 ++ ++ goto :goto_26 ++ ++ :catchall_31 ++ move-exception v3 ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ throw v3 ++.end method ++ ++.method public setNotificationsEnabled(Z)Z ++ .registers 9 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ const/4 v2, 0x1 ++ ++ const/4 v3, 0x0 ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v0 ++ ++ invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel; ++ ++ move-result-object v1 ++ ++ :try_start_a ++ const-string v4, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {v0, v4}, Landroid/os/Parcel;->writeInterfaceToken(Ljava/lang/String;)V ++ ++ if-eqz p1, :cond_2d ++ ++ move v4, v2 ++ ++ :goto_12 ++ invoke-virtual {v0, v4}, Landroid/os/Parcel;->writeInt(I)V ++ ++ iget-object v4, p0, Landroid/privacy/IPrivacySettingsManager$Stub$Proxy;->mRemote:Landroid/os/IBinder; ++ ++ const/16 v5, 0x9 ++ ++ const/4 v6, 0x0 ++ ++ invoke-interface {v4, v5, v0, v1, v6}, Landroid/os/IBinder;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->readException()V ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->readInt()I ++ :try_end_23 ++ .catchall {:try_start_a .. :try_end_23} :catchall_31 ++ ++ move-result v4 ++ ++ if-eqz v4, :cond_2f ++ ++ :goto_26 ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ return v2 ++ ++ :cond_2d ++ move v4, v3 ++ ++ goto :goto_12 ++ ++ :cond_2f ++ move v2, v3 ++ ++ goto :goto_26 ++ ++ :catchall_31 ++ move-exception v3 ++ ++ invoke-virtual {v1}, Landroid/os/Parcel;->recycle()V ++ ++ invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V ++ ++ throw v3 ++.end method +diff -Npru stock-framework/smali/android/privacy/IPrivacySettingsManager$Stub.smali pdroid-framework/smali/android/privacy/IPrivacySettingsManager$Stub.smali +--- stock-framework/smali/android/privacy/IPrivacySettingsManager$Stub.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/IPrivacySettingsManager$Stub.smali 2013-08-10 20:37:42.491213441 -0700 +@@ -0,0 +1,392 @@ ++.class public abstract Landroid/privacy/IPrivacySettingsManager$Stub; ++.super Landroid/os/Binder; ++.source "IPrivacySettingsManager.java" ++ ++# interfaces ++.implements Landroid/privacy/IPrivacySettingsManager; ++ ++ ++# annotations ++.annotation system Ldalvik/annotation/EnclosingClass; ++ value = Landroid/privacy/IPrivacySettingsManager; ++.end annotation ++ ++.annotation system Ldalvik/annotation/InnerClass; ++ accessFlags = 0x409 ++ name = "Stub" ++.end annotation ++ ++.annotation system Ldalvik/annotation/MemberClasses; ++ value = { ++ Landroid/privacy/IPrivacySettingsManager$Stub$Proxy; ++ } ++.end annotation ++ ++ ++# static fields ++.field private static final DESCRIPTOR:Ljava/lang/String; = "android.privacy.IPrivacySettingsManager" ++ ++.field static final TRANSACTION_addObserver:I = 0x6 ++ ++.field static final TRANSACTION_deleteSettings:I = 0x3 ++ ++.field static final TRANSACTION_getSettings:I = 0x1 ++ ++.field static final TRANSACTION_notification:I = 0x4 ++ ++.field static final TRANSACTION_purgeSettings:I = 0x7 ++ ++.field static final TRANSACTION_registerObservers:I = 0x5 ++ ++.field static final TRANSACTION_saveSettings:I = 0x2 ++ ++.field static final TRANSACTION_setBootCompleted:I = 0xa ++ ++.field static final TRANSACTION_setEnabled:I = 0x8 ++ ++.field static final TRANSACTION_setNotificationsEnabled:I = 0x9 ++ ++ ++# direct methods ++.method public constructor ()V ++ .registers 2 ++ ++ invoke-direct {p0}, Landroid/os/Binder;->()V ++ ++ const-string v0, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {p0, p0, v0}, Landroid/privacy/IPrivacySettingsManager$Stub;->attachInterface(Landroid/os/IInterface;Ljava/lang/String;)V ++ ++ return-void ++.end method ++ ++.method public static asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ .registers 3 ++ ++ if-nez p0, :cond_4 ++ ++ const/4 v0, 0x0 ++ ++ :goto_3 ++ return-object v0 ++ ++ :cond_4 ++ const-string v1, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-interface {p0, v1}, Landroid/os/IBinder;->queryLocalInterface(Ljava/lang/String;)Landroid/os/IInterface; ++ ++ move-result-object v0 ++ ++ if-eqz v0, :cond_13 ++ ++ instance-of v1, v0, Landroid/privacy/IPrivacySettingsManager; ++ ++ if-eqz v1, :cond_13 ++ ++ check-cast v0, Landroid/privacy/IPrivacySettingsManager; ++ ++ goto :goto_3 ++ ++ :cond_13 ++ new-instance v0, Landroid/privacy/IPrivacySettingsManager$Stub$Proxy; ++ ++ invoke-direct {v0, p0}, Landroid/privacy/IPrivacySettingsManager$Stub$Proxy;->(Landroid/os/IBinder;)V ++ ++ goto :goto_3 ++.end method ++ ++ ++# virtual methods ++.method public asBinder()Landroid/os/IBinder; ++ .registers 1 ++ ++ return-object p0 ++.end method ++ ++.method public onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z ++ .registers 13 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ const/4 v5, 0x0 ++ ++ const/4 v6, 0x1 ++ ++ sparse-switch p1, :sswitch_data_fc ++ ++ invoke-super {p0, p1, p2, p3, p4}, Landroid/os/Binder;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z ++ ++ move-result v6 ++ ++ :goto_9 ++ return v6 ++ ++ :sswitch_a ++ const-string v5, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {p3, v5}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V ++ ++ goto :goto_9 ++ ++ :sswitch_10 ++ const-string v7, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {p2, v7}, Landroid/os/Parcel;->enforceInterface(Ljava/lang/String;)V ++ ++ invoke-virtual {p2}, Landroid/os/Parcel;->readString()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ invoke-virtual {p0, v0}, Landroid/privacy/IPrivacySettingsManager$Stub;->getSettings(Ljava/lang/String;)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v4 ++ ++ invoke-virtual {p3}, Landroid/os/Parcel;->writeNoException()V ++ ++ if-eqz v4, :cond_29 ++ ++ invoke-virtual {p3, v6}, Landroid/os/Parcel;->writeInt(I)V ++ ++ invoke-virtual {v4, p3, v6}, Landroid/privacy/PrivacySettings;->writeToParcel(Landroid/os/Parcel;I)V ++ ++ goto :goto_9 ++ ++ :cond_29 ++ invoke-virtual {p3, v5}, Landroid/os/Parcel;->writeInt(I)V ++ ++ goto :goto_9 ++ ++ :sswitch_2d ++ const-string v7, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {p2, v7}, Landroid/os/Parcel;->enforceInterface(Ljava/lang/String;)V ++ ++ invoke-virtual {p2}, Landroid/os/Parcel;->readInt()I ++ ++ move-result v7 ++ ++ if-eqz v7, :cond_4e ++ ++ sget-object v7, Landroid/privacy/PrivacySettings;->CREATOR:Landroid/os/Parcelable$Creator; ++ ++ invoke-interface {v7, p2}, Landroid/os/Parcelable$Creator;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; ++ ++ move-result-object v0 ++ ++ check-cast v0, Landroid/privacy/PrivacySettings; ++ ++ :goto_40 ++ invoke-virtual {p0, v0}, Landroid/privacy/IPrivacySettingsManager$Stub;->saveSettings(Landroid/privacy/PrivacySettings;)Z ++ ++ move-result v4 ++ ++ invoke-virtual {p3}, Landroid/os/Parcel;->writeNoException()V ++ ++ if-eqz v4, :cond_4a ++ ++ move v5, v6 ++ ++ :cond_4a ++ invoke-virtual {p3, v5}, Landroid/os/Parcel;->writeInt(I)V ++ ++ goto :goto_9 ++ ++ :cond_4e ++ const/4 v0, 0x0 ++ ++ goto :goto_40 ++ ++ :sswitch_50 ++ const-string v7, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {p2, v7}, Landroid/os/Parcel;->enforceInterface(Ljava/lang/String;)V ++ ++ invoke-virtual {p2}, Landroid/os/Parcel;->readString()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ invoke-virtual {p0, v0}, Landroid/privacy/IPrivacySettingsManager$Stub;->deleteSettings(Ljava/lang/String;)Z ++ ++ move-result v4 ++ ++ invoke-virtual {p3}, Landroid/os/Parcel;->writeNoException()V ++ ++ if-eqz v4, :cond_63 ++ ++ move v5, v6 ++ ++ :cond_63 ++ invoke-virtual {p3, v5}, Landroid/os/Parcel;->writeInt(I)V ++ ++ goto :goto_9 ++ ++ :sswitch_67 ++ const-string v5, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {p2, v5}, Landroid/os/Parcel;->enforceInterface(Ljava/lang/String;)V ++ ++ invoke-virtual {p2}, Landroid/os/Parcel;->readString()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ invoke-virtual {p2}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ invoke-virtual {p2}, Landroid/os/Parcel;->readString()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {p2}, Landroid/os/Parcel;->readString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {p0, v0, v1, v2, v3}, Landroid/privacy/IPrivacySettingsManager$Stub;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ ++ invoke-virtual {p3}, Landroid/os/Parcel;->writeNoException()V ++ ++ goto :goto_9 ++ ++ :sswitch_83 ++ const-string v5, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {p2, v5}, Landroid/os/Parcel;->enforceInterface(Ljava/lang/String;)V ++ ++ invoke-virtual {p0}, Landroid/privacy/IPrivacySettingsManager$Stub;->registerObservers()V ++ ++ invoke-virtual {p3}, Landroid/os/Parcel;->writeNoException()V ++ ++ goto/16 :goto_9 ++ ++ :sswitch_90 ++ const-string v5, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {p2, v5}, Landroid/os/Parcel;->enforceInterface(Ljava/lang/String;)V ++ ++ invoke-virtual {p2}, Landroid/os/Parcel;->readString()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ invoke-virtual {p0, v0}, Landroid/privacy/IPrivacySettingsManager$Stub;->addObserver(Ljava/lang/String;)V ++ ++ invoke-virtual {p3}, Landroid/os/Parcel;->writeNoException()V ++ ++ goto/16 :goto_9 ++ ++ :sswitch_a1 ++ const-string v7, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {p2, v7}, Landroid/os/Parcel;->enforceInterface(Ljava/lang/String;)V ++ ++ invoke-virtual {p0}, Landroid/privacy/IPrivacySettingsManager$Stub;->purgeSettings()Z ++ ++ move-result v4 ++ ++ invoke-virtual {p3}, Landroid/os/Parcel;->writeNoException()V ++ ++ if-eqz v4, :cond_b0 ++ ++ move v5, v6 ++ ++ :cond_b0 ++ invoke-virtual {p3, v5}, Landroid/os/Parcel;->writeInt(I)V ++ ++ goto/16 :goto_9 ++ ++ :sswitch_b5 ++ const-string v7, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {p2, v7}, Landroid/os/Parcel;->enforceInterface(Ljava/lang/String;)V ++ ++ invoke-virtual {p2}, Landroid/os/Parcel;->readInt()I ++ ++ move-result v7 ++ ++ if-eqz v7, :cond_d0 ++ ++ move v0, v6 ++ ++ :goto_c1 ++ invoke-virtual {p0, v0}, Landroid/privacy/IPrivacySettingsManager$Stub;->setEnabled(Z)Z ++ ++ move-result v4 ++ ++ invoke-virtual {p3}, Landroid/os/Parcel;->writeNoException()V ++ ++ if-eqz v4, :cond_cb ++ ++ move v5, v6 ++ ++ :cond_cb ++ invoke-virtual {p3, v5}, Landroid/os/Parcel;->writeInt(I)V ++ ++ goto/16 :goto_9 ++ ++ :cond_d0 ++ move v0, v5 ++ ++ goto :goto_c1 ++ ++ :sswitch_d2 ++ const-string v7, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {p2, v7}, Landroid/os/Parcel;->enforceInterface(Ljava/lang/String;)V ++ ++ invoke-virtual {p2}, Landroid/os/Parcel;->readInt()I ++ ++ move-result v7 ++ ++ if-eqz v7, :cond_ed ++ ++ move v0, v6 ++ ++ :goto_de ++ invoke-virtual {p0, v0}, Landroid/privacy/IPrivacySettingsManager$Stub;->setNotificationsEnabled(Z)Z ++ ++ move-result v4 ++ ++ invoke-virtual {p3}, Landroid/os/Parcel;->writeNoException()V ++ ++ if-eqz v4, :cond_e8 ++ ++ move v5, v6 ++ ++ :cond_e8 ++ invoke-virtual {p3, v5}, Landroid/os/Parcel;->writeInt(I)V ++ ++ goto/16 :goto_9 ++ ++ :cond_ed ++ move v0, v5 ++ ++ goto :goto_de ++ ++ :sswitch_ef ++ const-string v5, "android.privacy.IPrivacySettingsManager" ++ ++ invoke-virtual {p2, v5}, Landroid/os/Parcel;->enforceInterface(Ljava/lang/String;)V ++ ++ invoke-virtual {p0}, Landroid/privacy/IPrivacySettingsManager$Stub;->setBootCompleted()V ++ ++ invoke-virtual {p3}, Landroid/os/Parcel;->writeNoException()V ++ ++ goto/16 :goto_9 ++ ++ :sswitch_data_fc ++ .sparse-switch ++ 0x1 -> :sswitch_10 ++ 0x2 -> :sswitch_2d ++ 0x3 -> :sswitch_50 ++ 0x4 -> :sswitch_67 ++ 0x5 -> :sswitch_83 ++ 0x6 -> :sswitch_90 ++ 0x7 -> :sswitch_a1 ++ 0x8 -> :sswitch_b5 ++ 0x9 -> :sswitch_d2 ++ 0xa -> :sswitch_ef ++ 0x5f4e5446 -> :sswitch_a ++ .end sparse-switch ++.end method +diff -Npru stock-framework/smali/android/privacy/PrivacyFileObserver.smali pdroid-framework/smali/android/privacy/PrivacyFileObserver.smali +--- stock-framework/smali/android/privacy/PrivacyFileObserver.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/PrivacyFileObserver.smali 2013-08-10 20:37:42.491213441 -0700 +@@ -0,0 +1,272 @@ ++.class public final Landroid/privacy/PrivacyFileObserver; ++.super Landroid/os/FileObserver; ++.source "PrivacyFileObserver.java" ++ ++ ++# static fields ++.field public static final PACKAGE_PATH_INDEX:I = 0x3 ++ ++.field public static final SETTINGS_TYPE_INDEX:I = 0x4 ++ ++.field public static final TAG:Ljava/lang/String; = "PrivacyFileObserver" ++ ++ ++# instance fields ++.field public absolutePath:Ljava/lang/String; ++ ++.field public children:Ljava/util/HashMap; ++ .annotation system Ldalvik/annotation/Signature; ++ value = { ++ "Ljava/util/HashMap", ++ "<", ++ "Ljava/lang/String;", ++ "Landroid/privacy/PrivacyFileObserver;", ++ ">;" ++ } ++ .end annotation ++.end field ++ ++.field private pSetManServ:Landroid/privacy/PrivacySettingsManagerService; ++ ++ ++# direct methods ++.method public constructor (Ljava/lang/String;Landroid/privacy/PrivacySettingsManagerService;)V ++ .registers 12 ++ ++ const/16 v8, 0xfff ++ ++ invoke-direct {p0, p1, v8}, Landroid/os/FileObserver;->(Ljava/lang/String;I)V ++ ++ iput-object p1, p0, Landroid/privacy/PrivacyFileObserver;->absolutePath:Ljava/lang/String; ++ ++ iput-object p2, p0, Landroid/privacy/PrivacyFileObserver;->pSetManServ:Landroid/privacy/PrivacySettingsManagerService; ++ ++ new-instance v8, Ljava/util/HashMap; ++ ++ invoke-direct {v8}, Ljava/util/HashMap;->()V ++ ++ iput-object v8, p0, Landroid/privacy/PrivacyFileObserver;->children:Ljava/util/HashMap; ++ ++ new-instance v7, Ljava/io/File; ++ ++ iget-object v8, p0, Landroid/privacy/PrivacyFileObserver;->absolutePath:Ljava/lang/String; ++ ++ invoke-direct {v7, v8}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v7}, Ljava/io/File;->isDirectory()Z ++ ++ move-result v8 ++ ++ if-eqz v8, :cond_42 ++ ++ invoke-virtual {v7}, Ljava/io/File;->listFiles()[Ljava/io/File; ++ ++ move-result-object v6 ++ ++ move-object v0, v6 ++ ++ array-length v4, v0 ++ ++ const/4 v3, 0x0 ++ ++ :goto_24 ++ if-ge v3, v4, :cond_42 ++ ++ aget-object v2, v0, v3 ++ ++ invoke-virtual {v2}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ new-instance v1, Landroid/privacy/PrivacyFileObserver; ++ ++ invoke-direct {v1, v5, p2}, Landroid/privacy/PrivacyFileObserver;->(Ljava/lang/String;Landroid/privacy/PrivacySettingsManagerService;)V ++ ++ iget-object v8, p0, Landroid/privacy/PrivacyFileObserver;->children:Ljava/util/HashMap; ++ ++ invoke-virtual {v8, v5, v1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; ++ ++ invoke-virtual {v2}, Ljava/io/File;->isFile()Z ++ ++ move-result v8 ++ ++ if-eqz v8, :cond_3f ++ ++ invoke-virtual {v1}, Landroid/privacy/PrivacyFileObserver;->startWatching()V ++ ++ :cond_3f ++ add-int/lit8 v3, v3, 0x1 ++ ++ goto :goto_24 ++ ++ :cond_42 ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public addObserver(Ljava/lang/String;)V ++ .registers 6 ++ ++ new-instance v2, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v2}, Ljava/lang/StringBuilder;->()V ++ ++ iget-object v3, p0, Landroid/privacy/PrivacyFileObserver;->absolutePath:Ljava/lang/String; ++ ++ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ const-string v3, "/" ++ ++ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/privacy/PrivacyFileObserver;->children:Ljava/util/HashMap; ++ ++ invoke-virtual {v2, v1}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; ++ ++ new-instance v0, Landroid/privacy/PrivacyFileObserver; ++ ++ iget-object v2, p0, Landroid/privacy/PrivacyFileObserver;->pSetManServ:Landroid/privacy/PrivacySettingsManagerService; ++ ++ invoke-direct {v0, v1, v2}, Landroid/privacy/PrivacyFileObserver;->(Ljava/lang/String;Landroid/privacy/PrivacySettingsManagerService;)V ++ ++ iget-object v2, p0, Landroid/privacy/PrivacyFileObserver;->children:Ljava/util/HashMap; ++ ++ invoke-virtual {v2, v1, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; ++ ++ return-void ++.end method ++ ++.method public onEvent(ILjava/lang/String;)V ++ .registers 12 ++ ++ and-int/lit8 v5, p1, 0x1 ++ ++ if-eqz v5, :cond_48 ++ ++ new-instance v4, Ljava/util/StringTokenizer; ++ ++ iget-object v5, p0, Landroid/privacy/PrivacyFileObserver;->absolutePath:Ljava/lang/String; ++ ++ const-string v6, "/" ++ ++ invoke-direct {v4, v5, v6}, Ljava/util/StringTokenizer;->(Ljava/lang/String;Ljava/lang/String;)V ++ ++ const/4 v0, 0x0 ++ ++ :goto_e ++ const/4 v5, 0x3 ++ ++ if-ge v0, v5, :cond_1d ++ ++ invoke-virtual {v4}, Ljava/util/StringTokenizer;->hasMoreElements()Z ++ ++ move-result v5 ++ ++ if-eqz v5, :cond_1d ++ ++ invoke-virtual {v4}, Ljava/util/StringTokenizer;->nextToken()Ljava/lang/String; ++ ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_e ++ ++ :cond_1d ++ invoke-virtual {v4}, Ljava/util/StringTokenizer;->nextToken()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ const/4 v3, 0x0 ++ ++ invoke-virtual {v4}, Ljava/util/StringTokenizer;->hasMoreElements()Z ++ ++ move-result v5 ++ ++ if-eqz v5, :cond_2c ++ ++ invoke-virtual {v4}, Ljava/util/StringTokenizer;->nextToken()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ :cond_2c ++ if-eqz v3, :cond_49 ++ ++ :try_start_2e ++ const-string v5, "ipTableProtectSetting" ++ ++ invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v5 ++ ++ if-eqz v5, :cond_49 ++ ++ iget-object v5, p0, Landroid/privacy/PrivacyFileObserver;->pSetManServ:Landroid/privacy/PrivacySettingsManagerService; ++ ++ invoke-virtual {v5, v2}, Landroid/privacy/PrivacySettingsManagerService;->getSettings(Ljava/lang/String;)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v1 ++ ++ iget-object v5, p0, Landroid/privacy/PrivacyFileObserver;->pSetManServ:Landroid/privacy/PrivacySettingsManagerService; ++ ++ invoke-virtual {v1}, Landroid/privacy/PrivacySettings;->getIpTableProtectSetting()B ++ ++ move-result v6 ++ ++ const-string v7, "iptables" ++ ++ const/4 v8, 0x0 ++ ++ invoke-virtual {v5, v2, v6, v7, v8}, Landroid/privacy/PrivacySettingsManagerService;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ ++ :cond_48 ++ :goto_48 ++ return-void ++ ++ :cond_49 ++ iget-object v5, p0, Landroid/privacy/PrivacyFileObserver;->pSetManServ:Landroid/privacy/PrivacySettingsManagerService; ++ ++ invoke-virtual {v5, v2}, Landroid/privacy/PrivacySettingsManagerService;->getSettings(Ljava/lang/String;)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v1 ++ ++ iget-object v5, p0, Landroid/privacy/PrivacyFileObserver;->pSetManServ:Landroid/privacy/PrivacySettingsManagerService; ++ ++ invoke-virtual {v1}, Landroid/privacy/PrivacySettings;->getSystemLogsSetting()B ++ ++ move-result v6 ++ ++ const-string/jumbo v7, "systemLogs" ++ ++ const/4 v8, 0x0 ++ ++ invoke-virtual {v5, v2, v6, v7, v8}, Landroid/privacy/PrivacySettingsManagerService;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ :try_end_5c ++ .catch Ljava/lang/Exception; {:try_start_2e .. :try_end_5c} :catch_5d ++ ++ goto :goto_48 ++ ++ :catch_5d ++ move-exception v5 ++ ++ goto :goto_48 ++.end method ++ ++.method public startWatching()V ++ .registers 1 ++ ++ invoke-super {p0}, Landroid/os/FileObserver;->startWatching()V ++ ++ return-void ++.end method +diff -Npru stock-framework/smali/android/privacy/PrivacyPersistenceAdapter.smali pdroid-framework/smali/android/privacy/PrivacyPersistenceAdapter.smali +--- stock-framework/smali/android/privacy/PrivacyPersistenceAdapter.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/PrivacyPersistenceAdapter.smali 2013-08-10 20:37:42.495213442 -0700 +@@ -0,0 +1,5140 @@ ++.class public final Landroid/privacy/PrivacyPersistenceAdapter; ++.super Ljava/lang/Object; ++.source "PrivacyPersistenceAdapter.java" ++ ++ ++# static fields ++.field private static final CREATE_TABLE_ALLOWED_CONTACTS:Ljava/lang/String; = "CREATE TABLE IF NOT EXISTS allowed_contacts ( settings_id, contact_id, PRIMARY KEY(settings_id, contact_id) );" ++ ++.field private static final CREATE_TABLE_MAP:Ljava/lang/String; = "CREATE TABLE IF NOT EXISTS map ( name TEXT PRIMARY KEY, value TEXT );" ++ ++.field private static final CREATE_TABLE_SETTINGS:Ljava/lang/String; = "CREATE TABLE IF NOT EXISTS settings ( _id INTEGER PRIMARY KEY AUTOINCREMENT, packageName TEXT, uid INTEGER, deviceIdSetting INTEGER, deviceId TEXT, line1NumberSetting INTEGER, line1Number TEXT, locationGpsSetting INTEGER, locationGpsLat TEXT, locationGpsLon TEXT, locationNetworkSetting INTEGER, locationNetworkLat TEXT, locationNetworkLon TEXT, networkInfoSetting INTEGER, simInfoSetting INTEGER, simSerialNumberSetting INTEGER, simSerialNumber TEXT, subscriberIdSetting INTEGER, subscriberId TEXT, accountsSetting INTEGER, accountsAuthTokensSetting INTEGER, outgoingCallsSetting INTEGER, incomingCallsSetting INTEGER, contactsSetting INTEGER, calendarSetting INTEGER, mmsSetting INTEGER, smsSetting INTEGER, callLogSetting INTEGER, bookmarksSetting INTEGER, systemLogsSetting INTEGER, externalStorageSetting INTEGER, cameraSetting INTEGER, recordAudioSetting INTEGER, notificationSetting INTEGER, intentBootCompletedSetting INTEGER, smsSendSetting INTEGER, phoneCallSetting INTEGER, ipTableProtectSetting INTEGER, iccAccessSetting INTEGER, addOnManagementSetting INTEGER, androidIdSetting INTEGER, androidId TEXT, wifiInfoSetting INTEGER, switchConnectivitySetting INTEGER, sendMmsSetting INTEGER, forceOnlineState INTEGER, switchWifiStateSetting INTEGER);" ++ ++.field private static final DATABASE_FIELDS:[Ljava/lang/String; = null ++ ++.field private static final DATABASE_FILE:Ljava/lang/String; = "/data/system/privacy.db" ++ ++.field private static final DATABASE_VERSION:I = 0x4 ++ ++.field private static final DEFAULT_CACHE_ENTRIES:I = 0x14 ++ ++.field public static final DUMMY_UID:I = -0x1 ++ ++.field private static final INSERT_ENABLED:Ljava/lang/String; = "INSERT OR REPLACE INTO map (name, value) VALUES (\"enabled\", \"1\");" ++ ++.field private static final INSERT_NOTIFICATIONS_ENABLED:Ljava/lang/String; = "INSERT OR REPLACE INTO map (name, value) VALUES (\"notifications_enabled\", \"1\");" ++ ++.field private static final INSERT_VERSION:Ljava/lang/String; = "INSERT OR REPLACE INTO map (name, value) VALUES (\"db_version\", 4);" ++ ++.field private static final LOG_CACHE:Z = false ++ ++.field private static final LOG_LOCKING:Z = false ++ ++.field private static final LOG_OPEN_AND_CLOSE:Z = false ++ ++.field private static final MINIMUM_CACHE_ENTRIES:I = 0x0 ++ ++.field private static final RETRY_QUERY_COUNT:I = 0x5 ++ ++.field public static final SETTINGS_DIRECTORY:Ljava/lang/String; = "/data/system/privacy" ++ ++.field public static final SETTING_DB_VERSION:Ljava/lang/String; = "db_version" ++ ++.field public static final SETTING_ENABLED:Ljava/lang/String; = "enabled" ++ ++.field public static final SETTING_NOTIFICATIONS_ENABLED:Ljava/lang/String; = "notifications_enabled" ++ ++.field private static final TABLE_ALLOWED_CONTACTS:Ljava/lang/String; = "allowed_contacts" ++ ++.field private static final TABLE_MAP:Ljava/lang/String; = "map" ++ ++.field private static final TABLE_SETTINGS:Ljava/lang/String; = "settings" ++ ++.field private static final TABLE_VERSION:Ljava/lang/String; = "version" ++ ++.field private static final TAG:Ljava/lang/String; = "PrivacyPersistenceAdapter" ++ ++.field public static final VALUE_FALSE:Ljava/lang/String; = "0" ++ ++.field public static final VALUE_TRUE:Ljava/lang/String; = "1" ++ ++.field private static final autoCloseDb:Z = false ++ ++.field public static volatile sDbAccessThreads:Ljava/lang/Integer; = null ++ ++.field private static sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; = null ++ ++.field public static volatile sDbVersion:I = 0x0 ++ ++.field private static settingsCache:Landroid/util/LruCache; = null ++ .annotation system Ldalvik/annotation/Signature; ++ value = { ++ "Landroid/util/LruCache", ++ "<", ++ "Ljava/lang/String;", ++ "Landroid/privacy/PrivacySettingsStub;", ++ ">;" ++ } ++ .end annotation ++.end field ++ ++.field private static final useCache:Z = true ++ ++ ++# instance fields ++.field private mContext:Landroid/content/Context; ++ ++.field private mDb:Landroid/database/sqlite/SQLiteDatabase; ++ ++ ++# direct methods ++.method static constructor ()V ++ .registers 4 ++ ++ const/16 v3, 0x14 ++ ++ const/4 v2, 0x0 ++ ++ invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ ++ move-result-object v0 ++ ++ sput-object v0, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ new-instance v0, Ljava/util/concurrent/locks/ReentrantReadWriteLock; ++ ++ invoke-direct {v0}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;->()V ++ ++ sput-object v0, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ new-instance v0, Landroid/util/LruCache; ++ ++ invoke-direct {v0, v3}, Landroid/util/LruCache;->(I)V ++ ++ sput-object v0, Landroid/privacy/PrivacyPersistenceAdapter;->settingsCache:Landroid/util/LruCache; ++ ++ const/16 v0, 0x2f ++ ++ new-array v0, v0, [Ljava/lang/String; ++ ++ const-string v1, "_id" ++ ++ aput-object v1, v0, v2 ++ ++ const/4 v1, 0x1 ++ ++ const-string/jumbo v2, "packageName" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x2 ++ ++ const-string/jumbo v2, "uid" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x3 ++ ++ const-string v2, "deviceIdSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x4 ++ ++ const-string v2, "deviceId" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x5 ++ ++ const-string v2, "line1NumberSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x6 ++ ++ const-string v2, "line1Number" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x7 ++ ++ const-string v2, "locationGpsSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x8 ++ ++ const-string v2, "locationGpsLat" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x9 ++ ++ const-string v2, "locationGpsLon" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0xa ++ ++ const-string v2, "locationNetworkSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0xb ++ ++ const-string v2, "locationNetworkLat" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0xc ++ ++ const-string v2, "locationNetworkLon" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0xd ++ ++ const-string/jumbo v2, "networkInfoSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0xe ++ ++ const-string/jumbo v2, "simInfoSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0xf ++ ++ const-string/jumbo v2, "simSerialNumberSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x10 ++ ++ const-string/jumbo v2, "simSerialNumber" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x11 ++ ++ const-string/jumbo v2, "subscriberIdSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x12 ++ ++ const-string/jumbo v2, "subscriberId" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x13 ++ ++ const-string v2, "accountsSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const-string v1, "accountsAuthTokensSetting" ++ ++ aput-object v1, v0, v3 ++ ++ const/16 v1, 0x15 ++ ++ const-string/jumbo v2, "outgoingCallsSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x16 ++ ++ const-string v2, "incomingCallsSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x17 ++ ++ const-string v2, "contactsSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x18 ++ ++ const-string v2, "calendarSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x19 ++ ++ const-string/jumbo v2, "mmsSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x1a ++ ++ const-string/jumbo v2, "smsSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x1b ++ ++ const-string v2, "callLogSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x1c ++ ++ const-string v2, "bookmarksSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x1d ++ ++ const-string/jumbo v2, "systemLogsSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x1e ++ ++ const-string v2, "externalStorageSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x1f ++ ++ const-string v2, "cameraSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x20 ++ ++ const-string/jumbo v2, "recordAudioSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x21 ++ ++ const-string/jumbo v2, "notificationSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x22 ++ ++ const-string v2, "intentBootCompletedSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x23 ++ ++ const-string/jumbo v2, "smsSendSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x24 ++ ++ const-string/jumbo v2, "phoneCallSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x25 ++ ++ const-string v2, "ipTableProtectSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x26 ++ ++ const-string v2, "iccAccessSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x27 ++ ++ const-string v2, "addOnManagementSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x28 ++ ++ const-string v2, "androidIdSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x29 ++ ++ const-string v2, "androidId" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x2a ++ ++ const-string/jumbo v2, "wifiInfoSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x2b ++ ++ const-string/jumbo v2, "switchConnectivitySetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x2c ++ ++ const-string/jumbo v2, "sendMmsSetting" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x2d ++ ++ const-string v2, "forceOnlineState" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x2e ++ ++ const-string/jumbo v2, "switchWifiStateSetting" ++ ++ aput-object v2, v0, v1 ++ ++ sput-object v0, Landroid/privacy/PrivacyPersistenceAdapter;->DATABASE_FIELDS:[Ljava/lang/String; ++ ++ return-void ++.end method ++ ++.method public constructor (Landroid/content/Context;)V ++ .registers 4 ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ iput-object p1, p0, Landroid/privacy/PrivacyPersistenceAdapter;->mContext:Landroid/content/Context; ++ ++ new-instance v0, Ljava/io/File; ++ ++ const-string v1, "/data/system/" ++ ++ invoke-direct {v0, v1}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v0}, Ljava/io/File;->canWrite()Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_6c ++ ++ new-instance v0, Ljava/io/File; ++ ++ const-string v1, "/data/system/privacy.db" ++ ++ invoke-direct {v0, v1}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v0}, Ljava/io/File;->exists()Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_2c ++ ++ new-instance v0, Ljava/io/File; ++ ++ const-string v1, "/data/system/privacy" ++ ++ invoke-direct {v0, v1}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v0}, Ljava/io/File;->exists()Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_5e ++ ++ :cond_2c ++ sget-object v0, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v0}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v0 ++ ++ invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->lock()V ++ ++ :try_start_35 ++ new-instance v0, Ljava/io/File; ++ ++ const-string v1, "/data/system/privacy.db" ++ ++ invoke-direct {v0, v1}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v0}, Ljava/io/File;->exists()Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_45 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->createDatabase()V ++ ++ :cond_45 ++ new-instance v0, Ljava/io/File; ++ ++ const-string v1, "/data/system/privacy" ++ ++ invoke-direct {v0, v1}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v0}, Ljava/io/File;->exists()Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_55 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->createSettingsDir()V ++ :try_end_55 ++ .catchall {:try_start_35 .. :try_end_55} :catchall_6d ++ ++ :cond_55 ++ sget-object v0, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v0}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v0 ++ ++ invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ ++ :cond_5e ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->getDbVersion()I ++ ++ move-result v0 ++ ++ sput v0, Landroid/privacy/PrivacyPersistenceAdapter;->sDbVersion:I ++ ++ sget v0, Landroid/privacy/PrivacyPersistenceAdapter;->sDbVersion:I ++ ++ const/4 v1, 0x4 ++ ++ if-ge v0, v1, :cond_6c ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->upgradeDatabase()V ++ ++ :cond_6c ++ return-void ++ ++ :catchall_6d ++ move-exception v0 ++ ++ sget-object v1, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v1}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v1 ++ ++ invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ ++ throw v0 ++.end method ++ ++.method private closeIdleDatabase()V ++ .registers 3 ++ ++ sget-object v1, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ monitor-enter v1 ++ ++ :try_start_3 ++ sget-object v0, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ sget-object v0, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I ++ ++ move-result v0 ++ ++ add-int/lit8 v0, v0, -0x1 ++ ++ invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ ++ move-result-object v0 ++ ++ sput-object v0, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ sget-object v0, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I ++ ++ move-result v0 ++ ++ if-nez v0, :cond_27 ++ ++ iget-object v0, p0, Landroid/privacy/PrivacyPersistenceAdapter;->mDb:Landroid/database/sqlite/SQLiteDatabase; ++ ++ if-eqz v0, :cond_27 ++ ++ iget-object v0, p0, Landroid/privacy/PrivacyPersistenceAdapter;->mDb:Landroid/database/sqlite/SQLiteDatabase; ++ ++ invoke-virtual {v0}, Landroid/database/sqlite/SQLiteDatabase;->isOpen()Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_27 ++ ++ :cond_27 ++ monitor-exit v1 ++ ++ return-void ++ ++ :catchall_29 ++ move-exception v0 ++ ++ monitor-exit v1 ++ :try_end_2b ++ .catchall {:try_start_3 .. :try_end_2b} :catchall_29 ++ ++ throw v0 ++.end method ++ ++.method private createDatabase()V ++ .registers 6 ++ ++ const-string v2, "PrivacyPersistenceAdapter" ++ ++ const-string v3, "createDatabase - creating privacy database file" ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :try_start_7 ++ const-string v2, "/data/system/privacy.db" ++ ++ const/4 v3, 0x0 ++ ++ const/high16 v4, 0x1000 ++ ++ invoke-static {v2, v3, v4}, Landroid/database/sqlite/SQLiteDatabase;->openDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;I)Landroid/database/sqlite/SQLiteDatabase; ++ ++ move-result-object v0 ++ ++ const-string v2, "PrivacyPersistenceAdapter" ++ ++ const-string v3, "createDatabase - creating privacy database" ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const-string v2, "CREATE TABLE IF NOT EXISTS settings ( _id INTEGER PRIMARY KEY AUTOINCREMENT, packageName TEXT, uid INTEGER, deviceIdSetting INTEGER, deviceId TEXT, line1NumberSetting INTEGER, line1Number TEXT, locationGpsSetting INTEGER, locationGpsLat TEXT, locationGpsLon TEXT, locationNetworkSetting INTEGER, locationNetworkLat TEXT, locationNetworkLon TEXT, networkInfoSetting INTEGER, simInfoSetting INTEGER, simSerialNumberSetting INTEGER, simSerialNumber TEXT, subscriberIdSetting INTEGER, subscriberId TEXT, accountsSetting INTEGER, accountsAuthTokensSetting INTEGER, outgoingCallsSetting INTEGER, incomingCallsSetting INTEGER, contactsSetting INTEGER, calendarSetting INTEGER, mmsSetting INTEGER, smsSetting INTEGER, callLogSetting INTEGER, bookmarksSetting INTEGER, systemLogsSetting INTEGER, externalStorageSetting INTEGER, cameraSetting INTEGER, recordAudioSetting INTEGER, notificationSetting INTEGER, intentBootCompletedSetting INTEGER, smsSendSetting INTEGER, phoneCallSetting INTEGER, ipTableProtectSetting INTEGER, iccAccessSetting INTEGER, addOnManagementSetting INTEGER, androidIdSetting INTEGER, androidId TEXT, wifiInfoSetting INTEGER, switchConnectivitySetting INTEGER, sendMmsSetting INTEGER, forceOnlineState INTEGER, switchWifiStateSetting INTEGER);" ++ ++ invoke-virtual {v0, v2}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V ++ ++ const-string v2, "CREATE TABLE IF NOT EXISTS allowed_contacts ( settings_id, contact_id, PRIMARY KEY(settings_id, contact_id) );" ++ ++ invoke-virtual {v0, v2}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V ++ ++ const-string v2, "CREATE TABLE IF NOT EXISTS map ( name TEXT PRIMARY KEY, value TEXT );" ++ ++ invoke-virtual {v0, v2}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V ++ ++ const-string v2, "INSERT OR REPLACE INTO map (name, value) VALUES (\"db_version\", 4);" ++ ++ invoke-virtual {v0, v2}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V ++ ++ const-string v2, "INSERT OR REPLACE INTO map (name, value) VALUES (\"enabled\", \"1\");" ++ ++ invoke-virtual {v0, v2}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V ++ ++ const-string v2, "INSERT OR REPLACE INTO map (name, value) VALUES (\"notifications_enabled\", \"1\");" ++ ++ invoke-virtual {v0, v2}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V ++ ++ if-eqz v0, :cond_40 ++ ++ invoke-virtual {v0}, Landroid/database/sqlite/SQLiteDatabase;->isOpen()Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_40 ++ ++ invoke-virtual {v0}, Landroid/database/sqlite/SQLiteDatabase;->close()V ++ :try_end_40 ++ .catch Landroid/database/SQLException; {:try_start_7 .. :try_end_40} :catch_41 ++ ++ :cond_40 ++ :goto_40 ++ return-void ++ ++ :catch_41 ++ move-exception v1 ++ ++ const-string v2, "PrivacyPersistenceAdapter" ++ ++ const-string v3, "createDatabase - failed to create privacy database" ++ ++ invoke-static {v2, v3, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto :goto_40 ++.end method ++ ++.method private createSettingsDir()V ++ .registers 5 ++ ++ const/4 v3, 0x1 ++ ++ const/4 v2, 0x0 ++ ++ new-instance v0, Ljava/io/File; ++ ++ const-string v1, "/data/system/privacy/" ++ ++ invoke-direct {v0, v1}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v0}, Ljava/io/File;->mkdirs()Z ++ ++ invoke-virtual {v0, v3, v2}, Ljava/io/File;->setReadable(ZZ)Z ++ ++ invoke-virtual {v0, v3, v2}, Ljava/io/File;->setExecutable(ZZ)Z ++ ++ return-void ++.end method ++ ++.method private deleteRecursive(Ljava/io/File;)V ++ .registers 7 ++ ++ invoke-virtual {p1}, Ljava/io/File;->isDirectory()Z ++ ++ move-result v4 ++ ++ if-eqz v4, :cond_16 ++ ++ invoke-virtual {p1}, Ljava/io/File;->listFiles()[Ljava/io/File; ++ ++ move-result-object v0 ++ ++ array-length v3, v0 ++ ++ const/4 v2, 0x0 ++ ++ :goto_c ++ if-ge v2, v3, :cond_16 ++ ++ aget-object v1, v0, v2 ++ ++ invoke-direct {p0, v1}, Landroid/privacy/PrivacyPersistenceAdapter;->deleteRecursive(Ljava/io/File;)V ++ ++ add-int/lit8 v2, v2, 0x1 ++ ++ goto :goto_c ++ ++ :cond_16 ++ invoke-virtual {p1}, Ljava/io/File;->delete()Z ++ ++ return-void ++.end method ++ ++.method private declared-synchronized getDatabase()Landroid/database/sqlite/SQLiteDatabase; ++ .registers 4 ++ ++ monitor-enter p0 ++ ++ :try_start_1 ++ iget-object v0, p0, Landroid/privacy/PrivacyPersistenceAdapter;->mDb:Landroid/database/sqlite/SQLiteDatabase; ++ ++ if-eqz v0, :cond_15 ++ ++ iget-object v0, p0, Landroid/privacy/PrivacyPersistenceAdapter;->mDb:Landroid/database/sqlite/SQLiteDatabase; ++ ++ invoke-virtual {v0}, Landroid/database/sqlite/SQLiteDatabase;->isOpen()Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_15 ++ ++ iget-object v0, p0, Landroid/privacy/PrivacyPersistenceAdapter;->mDb:Landroid/database/sqlite/SQLiteDatabase; ++ ++ invoke-virtual {v0}, Landroid/database/sqlite/SQLiteDatabase;->isReadOnly()Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_1f ++ ++ :cond_15 ++ const-string v0, "/data/system/privacy.db" ++ ++ const/4 v1, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ invoke-static {v0, v1, v2}, Landroid/database/sqlite/SQLiteDatabase;->openDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;I)Landroid/database/sqlite/SQLiteDatabase; ++ ++ move-result-object v0 ++ ++ iput-object v0, p0, Landroid/privacy/PrivacyPersistenceAdapter;->mDb:Landroid/database/sqlite/SQLiteDatabase; ++ ++ :cond_1f ++ iget-object v0, p0, Landroid/privacy/PrivacyPersistenceAdapter;->mDb:Landroid/database/sqlite/SQLiteDatabase; ++ :try_end_21 ++ .catchall {:try_start_1 .. :try_end_21} :catchall_23 ++ ++ monitor-exit p0 ++ ++ return-object v0 ++ ++ :catchall_23 ++ move-exception v0 ++ ++ monitor-exit p0 ++ ++ throw v0 ++.end method ++ ++.method private getDbVersion()I ++ .registers 6 ++ ++ const/4 v2, 0x1 ++ ++ const-string v3, "db_version" ++ ++ invoke-virtual {p0, v3}, Landroid/privacy/PrivacyPersistenceAdapter;->getValue(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ if-nez v1, :cond_11 ++ ++ const-string v3, "PrivacyPersistenceAdapter" ++ ++ const-string v4, "PrivacyPersistenceAdapter:getDbVersion: getValue returned null; assuming version = 1" ++ ++ invoke-static {v3, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :goto_10 ++ return v2 ++ ++ :cond_11 ++ :try_start_11 ++ invoke-static {v1}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I ++ :try_end_14 ++ .catch Ljava/lang/Exception; {:try_start_11 .. :try_end_14} :catch_16 ++ ++ move-result v2 ++ ++ goto :goto_10 ++ ++ :catch_16 ++ move-exception v0 ++ ++ const-string v3, "PrivacyPersistenceAdapter" ++ ++ const-string v4, "PrivacyPersistenceAdapter:getDbVersion: failed to parse database version; returning 1" ++ ++ invoke-static {v3, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto :goto_10 ++.end method ++ ++.method private query(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; ++ .registers 16 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Ljava/lang/Exception; ++ } ++ .end annotation ++ ++ const/4 v0, 0x0 ++ ++ const/4 v3, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ :goto_3 ++ if-nez v3, :cond_27 ++ ++ const/4 v4, 0x5 ++ ++ if-ge v2, v4, :cond_27 ++ ++ if-eqz v0, :cond_d ++ ++ :try_start_a ++ invoke-interface {v0}, Landroid/database/Cursor;->close()V ++ ++ :cond_d ++ invoke-virtual/range {p1 .. p9}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; ++ :try_end_10 ++ .catch Ljava/lang/IllegalStateException; {:try_start_a .. :try_end_10} :catch_15 ++ ++ move-result-object v0 ++ ++ const/4 v3, 0x1 ++ ++ :goto_12 ++ add-int/lit8 v2, v2, 0x1 ++ ++ goto :goto_3 ++ ++ :catch_15 ++ move-exception v1 ++ ++ const/4 v3, 0x0 ++ ++ if-eqz p1, :cond_22 ++ ++ invoke-virtual {p1}, Landroid/database/sqlite/SQLiteDatabase;->isOpen()Z ++ ++ move-result v4 ++ ++ if-eqz v4, :cond_22 ++ ++ invoke-virtual {p1}, Landroid/database/sqlite/SQLiteDatabase;->close()V ++ ++ :cond_22 ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->getDatabase()Landroid/database/sqlite/SQLiteDatabase; ++ ++ move-result-object p1 ++ ++ goto :goto_12 ++ ++ :cond_27 ++ if-nez v3, :cond_32 ++ ++ new-instance v4, Ljava/lang/Exception; ++ ++ const-string/jumbo v5, "query - failed to execute query on the DB" ++ ++ invoke-direct {v4, v5}, Ljava/lang/Exception;->(Ljava/lang/String;)V ++ ++ throw v4 ++ ++ :cond_32 ++ return-object v0 ++.end method ++ ++.method private rawQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)Landroid/database/Cursor; ++ .registers 9 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Ljava/lang/Exception; ++ } ++ .end annotation ++ ++ const/4 v0, 0x0 ++ ++ const/4 v3, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ :goto_3 ++ if-nez v3, :cond_28 ++ ++ const/4 v4, 0x5 ++ ++ if-ge v2, v4, :cond_28 ++ ++ if-eqz v0, :cond_d ++ ++ :try_start_a ++ invoke-interface {v0}, Landroid/database/Cursor;->close()V ++ ++ :cond_d ++ const/4 v4, 0x0 ++ ++ invoke-virtual {p1, p2, v4}, Landroid/database/sqlite/SQLiteDatabase;->rawQuery(Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor; ++ :try_end_11 ++ .catch Ljava/lang/IllegalStateException; {:try_start_a .. :try_end_11} :catch_16 ++ ++ move-result-object v0 ++ ++ const/4 v3, 0x1 ++ ++ :goto_13 ++ add-int/lit8 v2, v2, 0x1 ++ ++ goto :goto_3 ++ ++ :catch_16 ++ move-exception v1 ++ ++ const/4 v3, 0x0 ++ ++ if-eqz p1, :cond_23 ++ ++ invoke-virtual {p1}, Landroid/database/sqlite/SQLiteDatabase;->isOpen()Z ++ ++ move-result v4 ++ ++ if-eqz v4, :cond_23 ++ ++ invoke-virtual {p1}, Landroid/database/sqlite/SQLiteDatabase;->close()V ++ ++ :cond_23 ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->getDatabase()Landroid/database/sqlite/SQLiteDatabase; ++ ++ move-result-object p1 ++ ++ goto :goto_13 ++ ++ :cond_28 ++ if-nez v3, :cond_33 ++ ++ new-instance v4, Ljava/lang/Exception; ++ ++ const-string/jumbo v5, "query - failed to execute query on the DB" ++ ++ invoke-direct {v4, v5}, Ljava/lang/Exception;->(Ljava/lang/String;)V ++ ++ throw v4 ++ ++ :cond_33 ++ return-object v0 ++.end method ++ ++.method private upgradeDatabase()V ++ .registers 18 ++ ++ sget v14, Landroid/privacy/PrivacyPersistenceAdapter;->sDbVersion:I ++ ++ const/4 v15, 0x4 ++ ++ if-ge v14, v15, :cond_31 ++ ++ const-string v14, "PrivacyPersistenceAdapter" ++ ++ new-instance v15, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v15}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v16, "PrivacyPersistenceAdapter:upgradeDatabase - upgrading DB from version " ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ sget v16, Landroid/privacy/PrivacyPersistenceAdapter;->sDbVersion:I ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ const-string v16, " to " ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ const/16 v16, 0x4 ++ ++ invoke-virtual/range {v15 .. v16}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v15}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v15 ++ ++ invoke-static {v14, v15}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v3, 0x0 ++ ++ sget v14, Landroid/privacy/PrivacyPersistenceAdapter;->sDbVersion:I ++ ++ packed-switch v14, :pswitch_data_12c ++ ++ :cond_31 ++ :goto_31 ++ return-void ++ ++ :pswitch_32 ++ :try_start_32 ++ sget-object v15, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ monitor-enter v15 ++ :try_end_35 ++ .catchall {:try_start_32 .. :try_end_35} :catchall_11e ++ .catch Landroid/database/SQLException; {:try_start_32 .. :try_end_35} :catch_e6 ++ ++ :try_start_35 ++ sget-object v14, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ sget-object v14, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ invoke-virtual {v14}, Ljava/lang/Integer;->intValue()I ++ ++ move-result v14 ++ ++ add-int/lit8 v14, v14, 0x1 ++ ++ invoke-static {v14}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ ++ move-result-object v14 ++ ++ sput-object v14, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ monitor-exit v15 ++ :try_end_46 ++ .catchall {:try_start_35 .. :try_end_46} :catchall_e3 ++ ++ :try_start_46 ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->getDatabase()Landroid/database/sqlite/SQLiteDatabase; ++ ++ move-result-object v3 ++ ++ if-eqz v3, :cond_109 ++ ++ invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->isOpen()Z ++ ++ move-result v14 ++ ++ if-eqz v14, :cond_109 ++ ++ sget-object v14, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v14}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v14 ++ ++ invoke-interface {v14}, Ljava/util/concurrent/locks/Lock;->lock()V ++ :try_end_5b ++ .catchall {:try_start_46 .. :try_end_5b} :catchall_11e ++ .catch Landroid/database/SQLException; {:try_start_46 .. :try_end_5b} :catch_e6 ++ ++ :try_start_5b ++ sget v14, Landroid/privacy/PrivacyPersistenceAdapter;->sDbVersion:I ++ ++ const/4 v15, 0x4 ++ ++ if-ge v14, v15, :cond_100 ++ ++ invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->beginTransaction()V ++ :try_end_63 ++ .catchall {:try_start_5b .. :try_end_63} :catchall_113 ++ ++ :try_start_63 ++ const-string v14, "DROP TABLE IF EXISTS version;" ++ ++ invoke-virtual {v3, v14}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V ++ ++ const-string v14, "CREATE TABLE IF NOT EXISTS allowed_contacts ( settings_id, contact_id, PRIMARY KEY(settings_id, contact_id) );" ++ ++ invoke-virtual {v3, v14}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V ++ ++ const-string v14, "CREATE TABLE IF NOT EXISTS map ( name TEXT PRIMARY KEY, value TEXT );" ++ ++ invoke-virtual {v3, v14}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V ++ ++ const-string v14, "INSERT OR REPLACE INTO map (name, value) VALUES (\"db_version\", 4);" ++ ++ invoke-virtual {v3, v14}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V ++ ++ const-string v14, "INSERT OR REPLACE INTO map (name, value) VALUES (\"enabled\", \"1\");" ++ ++ invoke-virtual {v3, v14}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V ++ ++ const-string v14, "INSERT OR REPLACE INTO map (name, value) VALUES (\"notifications_enabled\", \"1\");" ++ ++ invoke-virtual {v3, v14}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V ++ ++ invoke-virtual/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->purgeSettings()Z ++ ++ new-instance v11, Ljava/io/File; ++ ++ const-string v14, "/data/system/privacy" ++ ++ invoke-direct {v11, v14}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v11}, Ljava/io/File;->listFiles()[Ljava/io/File; ++ ++ move-result-object v1 ++ ++ array-length v7, v1 ++ ++ const/4 v5, 0x0 ++ ++ move v6, v5 ++ ++ :goto_92 ++ if-ge v6, v7, :cond_f7 ++ ++ aget-object v10, v1, v6 ++ ++ invoke-virtual {v10}, Ljava/io/File;->listFiles()[Ljava/io/File; ++ ++ move-result-object v2 ++ ++ array-length v8, v2 ++ ++ const/4 v5, 0x0 ++ ++ :goto_9c ++ if-ge v5, v8, :cond_f3 ++ ++ aget-object v13, v2, v5 ++ ++ invoke-virtual {v13}, Ljava/io/File;->isDirectory()Z ++ ++ move-result v14 ++ ++ if-eqz v14, :cond_e0 ++ ++ invoke-virtual {v13}, Ljava/io/File;->listFiles()[Ljava/io/File; ++ ++ move-result-object v12 ++ ++ const/4 v14, 0x0 ++ ++ aget-object v14, v12, v14 ++ ++ if-eqz v14, :cond_e0 ++ ++ new-instance v9, Ljava/io/File; ++ ++ new-instance v14, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v14}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {v14, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ move-result-object v14 ++ ++ const-string v15, "/" ++ ++ invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v14 ++ ++ const/4 v15, 0x0 ++ ++ aget-object v15, v12, v15 ++ ++ invoke-virtual {v15}, Ljava/io/File;->getName()Ljava/lang/String; ++ ++ move-result-object v15 ++ ++ invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v14 ++ ++ invoke-virtual {v14}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v14 ++ ++ invoke-direct {v9, v14}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v9}, Ljava/io/File;->delete()Z ++ ++ const/4 v14, 0x0 ++ ++ aget-object v14, v12, v14 ++ ++ invoke-virtual {v14, v9}, Ljava/io/File;->renameTo(Ljava/io/File;)Z ++ ++ move-object/from16 v0, p0 ++ ++ invoke-direct {v0, v13}, Landroid/privacy/PrivacyPersistenceAdapter;->deleteRecursive(Ljava/io/File;)V ++ :try_end_e0 ++ .catchall {:try_start_63 .. :try_end_e0} :catchall_10e ++ ++ :cond_e0 ++ add-int/lit8 v5, v5, 0x1 ++ ++ goto :goto_9c ++ ++ :catchall_e3 ++ move-exception v14 ++ ++ :try_start_e4 ++ monitor-exit v15 ++ :try_end_e5 ++ .catchall {:try_start_e4 .. :try_end_e5} :catchall_e3 ++ ++ :try_start_e5 ++ throw v14 ++ :try_end_e6 ++ .catchall {:try_start_e5 .. :try_end_e6} :catchall_11e ++ .catch Landroid/database/SQLException; {:try_start_e5 .. :try_end_e6} :catch_e6 ++ ++ :catch_e6 ++ move-exception v4 ++ ++ :try_start_e7 ++ const-string v14, "PrivacyPersistenceAdapter" ++ ++ const-string v15, "PrivacyPersistenceAdapter:upgradeDatabase: SQLException occurred performing database upgrade" ++ ++ invoke-static {v14, v15, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ :try_end_ee ++ .catchall {:try_start_e7 .. :try_end_ee} :catchall_11e ++ ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ goto/16 :goto_31 ++ ++ :cond_f3 ++ add-int/lit8 v5, v6, 0x1 ++ ++ move v6, v5 ++ ++ goto :goto_92 ++ ++ :cond_f7 ++ :try_start_f7 ++ invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V ++ ++ const/4 v14, 0x4 ++ ++ sput v14, Landroid/privacy/PrivacyPersistenceAdapter;->sDbVersion:I ++ :try_end_fd ++ .catchall {:try_start_f7 .. :try_end_fd} :catchall_10e ++ ++ :try_start_fd ++ invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V ++ :try_end_100 ++ .catchall {:try_start_fd .. :try_end_100} :catchall_113 ++ ++ :cond_100 ++ :try_start_100 ++ sget-object v14, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v14}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v14 ++ ++ invoke-interface {v14}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ :try_end_109 ++ .catchall {:try_start_100 .. :try_end_109} :catchall_11e ++ .catch Landroid/database/SQLException; {:try_start_100 .. :try_end_109} :catch_e6 ++ ++ :cond_109 ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ goto/16 :goto_31 ++ ++ :catchall_10e ++ move-exception v14 ++ ++ :try_start_10f ++ invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V ++ ++ throw v14 ++ :try_end_113 ++ .catchall {:try_start_10f .. :try_end_113} :catchall_113 ++ ++ :catchall_113 ++ move-exception v14 ++ ++ :try_start_114 ++ sget-object v15, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v15}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v15 ++ ++ invoke-interface {v15}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ ++ throw v14 ++ :try_end_11e ++ .catchall {:try_start_114 .. :try_end_11e} :catchall_11e ++ .catch Landroid/database/SQLException; {:try_start_114 .. :try_end_11e} :catch_e6 ++ ++ :catchall_11e ++ move-exception v14 ++ ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ throw v14 ++ ++ :pswitch_123 ++ const-string v14, "PrivacyPersistenceAdapter" ++ ++ const-string v15, "PrivacyPersistenceAdapter:upgradeDatabase: Database is already at the most recent version" ++ ++ invoke-static {v14, v15}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto/16 :goto_31 ++ ++ :pswitch_data_12c ++ .packed-switch 0x1 ++ :pswitch_32 ++ :pswitch_32 ++ :pswitch_32 ++ :pswitch_123 ++ .end packed-switch ++.end method ++ ++.method private writeExternalSettings(Ljava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)Z ++ .registers 12 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Ljava/lang/Exception; ++ } ++ .end annotation ++ ++ const/4 v7, 0x1 ++ ++ new-instance v2, Ljava/io/File; ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "/data/system/privacy/" ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ const-string v6, "/" ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-direct {v2, v5}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ new-instance v3, Ljava/io/File; ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "/data/system/privacy/" ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ const-string v6, "/" ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ const-string v6, "/" ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-direct {v3, v5}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ const/4 v1, 0x0 ++ ++ sget-object v5, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v5}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v5 ++ ++ invoke-interface {v5}, Ljava/util/concurrent/locks/Lock;->lock()V ++ ++ :try_start_51 ++ invoke-virtual {v2}, Ljava/io/File;->mkdirs()Z ++ ++ const/4 v5, 0x1 ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual {v2, v5, v6}, Ljava/io/File;->setReadable(ZZ)Z ++ ++ const/4 v5, 0x1 ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual {v2, v5, v6}, Ljava/io/File;->setExecutable(ZZ)Z ++ ++ invoke-virtual {v3}, Ljava/io/File;->createNewFile()Z ++ ++ const/4 v5, 0x1 ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual {v3, v5, v6}, Ljava/io/File;->setReadable(ZZ)Z ++ ++ new-instance v4, Ljava/io/OutputStreamWriter; ++ ++ new-instance v5, Ljava/io/FileOutputStream; ++ ++ invoke-direct {v5, v3}, Ljava/io/FileOutputStream;->(Ljava/io/File;)V ++ ++ invoke-direct {v4, v5}, Ljava/io/OutputStreamWriter;->(Ljava/io/OutputStream;)V ++ ++ const-string/jumbo v5, "systemLogsSetting" ++ ++ invoke-virtual {p1, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v5 ++ ++ if-eqz v5, :cond_a4 ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {p3}, Landroid/privacy/PrivacySettings;->getSystemLogsSetting()B ++ ++ move-result v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ const-string v6, "" ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v4, v5}, Ljava/io/OutputStreamWriter;->append(Ljava/lang/CharSequence;)Ljava/io/Writer; ++ ++ :cond_93 ++ :goto_93 ++ invoke-virtual {v4}, Ljava/io/OutputStreamWriter;->flush()V ++ ++ invoke-virtual {v4}, Ljava/io/OutputStreamWriter;->close()V ++ :try_end_99 ++ .catchall {:try_start_51 .. :try_end_99} :catchall_d1 ++ .catch Ljava/io/IOException; {:try_start_51 .. :try_end_99} :catch_c7 ++ ++ const/4 v1, 0x1 ++ ++ sget-object v5, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v5}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v5 ++ ++ invoke-interface {v5}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ ++ return v7 ++ ++ :cond_a4 ++ :try_start_a4 ++ const-string v5, "ipTableProtectSetting" ++ ++ invoke-virtual {p1, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v5 ++ ++ if-eqz v5, :cond_93 ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {p3}, Landroid/privacy/PrivacySettings;->getIpTableProtectSetting()B ++ ++ move-result v6 ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ const-string v6, "" ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v4, v5}, Ljava/io/OutputStreamWriter;->append(Ljava/lang/CharSequence;)Ljava/io/Writer; ++ :try_end_c6 ++ .catchall {:try_start_a4 .. :try_end_c6} :catchall_d1 ++ .catch Ljava/io/IOException; {:try_start_a4 .. :try_end_c6} :catch_c7 ++ ++ goto :goto_93 ++ ++ :catch_c7 ++ move-exception v0 ++ ++ :try_start_c8 ++ new-instance v5, Ljava/lang/Exception; ++ ++ const-string/jumbo v6, "saveSettings - could not write settings to file" ++ ++ invoke-direct {v5, v6, v0}, Ljava/lang/Exception;->(Ljava/lang/String;Ljava/lang/Throwable;)V ++ ++ throw v5 ++ :try_end_d1 ++ .catchall {:try_start_c8 .. :try_end_d1} :catchall_d1 ++ ++ :catchall_d1 ++ move-exception v5 ++ ++ sget-object v6, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v6}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v6 ++ ++ invoke-interface {v6}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ ++ throw v5 ++.end method ++ ++ ++# virtual methods ++.method public deleteSettings(Ljava/lang/String;)Z ++ .registers 16 ++ ++ const/4 v11, 0x1 ++ ++ const/4 v0, 0x0 ++ ++ :try_start_2 ++ sget-object v2, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ monitor-enter v2 ++ :try_end_5 ++ .catchall {:try_start_2 .. :try_end_5} :catchall_14d ++ .catch Landroid/database/sqlite/SQLiteException; {:try_start_2 .. :try_end_5} :catch_103 ++ .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_5} :catch_140 ++ ++ :try_start_5 ++ sget-object v1, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ sget-object v1, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I ++ ++ move-result v1 ++ ++ add-int/lit8 v1, v1, 0x1 ++ ++ invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ ++ move-result-object v1 ++ ++ sput-object v1, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ monitor-exit v2 ++ :try_end_16 ++ .catchall {:try_start_5 .. :try_end_16} :catchall_100 ++ ++ :try_start_16 ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->getDatabase()Landroid/database/sqlite/SQLiteDatabase; ++ ++ move-result-object v0 ++ ++ sget-object v1, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v1}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v1 ++ ++ invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->lock()V ++ :try_end_23 ++ .catchall {:try_start_16 .. :try_end_23} :catchall_14d ++ .catch Landroid/database/sqlite/SQLiteException; {:try_start_16 .. :try_end_23} :catch_103 ++ .catch Ljava/lang/Exception; {:try_start_16 .. :try_end_23} :catch_140 ++ ++ :try_start_23 ++ invoke-virtual {v0}, Landroid/database/sqlite/SQLiteDatabase;->beginTransaction()V ++ :try_end_26 ++ .catchall {:try_start_23 .. :try_end_26} :catchall_135 ++ ++ :try_start_26 ++ const-string/jumbo v1, "settings" ++ ++ const/4 v2, 0x1 ++ ++ new-array v2, v2, [Ljava/lang/String; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "_id" ++ ++ aput-object v4, v2, v3 ++ ++ const-string/jumbo v3, "packageName=?" ++ ++ const/4 v4, 0x1 ++ ++ new-array v4, v4, [Ljava/lang/String; ++ ++ const/4 v5, 0x0 ++ ++ aput-object p1, v4, v5 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v6, 0x0 ++ ++ const/4 v7, 0x0 ++ ++ invoke-virtual/range {v0 .. v7}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; ++ ++ move-result-object v8 ++ ++ if-eqz v8, :cond_110 ++ ++ invoke-interface {v8}, Landroid/database/Cursor;->getCount()I ++ ++ move-result v1 ++ ++ if-lez v1, :cond_110 ++ ++ invoke-interface {v8}, Landroid/database/Cursor;->moveToFirst()Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_110 ++ ++ const/4 v1, 0x0 ++ ++ invoke-interface {v8, v1}, Landroid/database/Cursor;->getInt(I)I ++ ++ move-result v10 ++ ++ const-string v1, "allowed_contacts" ++ ++ const-string/jumbo v2, "settings_id=?" ++ ++ const/4 v3, 0x1 ++ ++ new-array v3, v3, [Ljava/lang/String; ++ ++ const/4 v4, 0x0 ++ ++ invoke-static {v10}, Ljava/lang/Integer;->toString(I)Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ aput-object v5, v3, v4 ++ ++ invoke-virtual {v0, v1, v2, v3}, Landroid/database/sqlite/SQLiteDatabase;->delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I ++ ++ invoke-interface {v8}, Landroid/database/Cursor;->close()V ++ ++ :goto_69 ++ const-string/jumbo v1, "settings" ++ ++ const-string/jumbo v2, "packageName=?" ++ ++ const/4 v3, 0x1 ++ ++ new-array v3, v3, [Ljava/lang/String; ++ ++ const/4 v4, 0x0 ++ ++ aput-object p1, v3, v4 ++ ++ invoke-virtual {v0, v1, v2, v3}, Landroid/database/sqlite/SQLiteDatabase;->delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I ++ ++ move-result v1 ++ ++ if-nez v1, :cond_99 ++ ++ const-string v1, "PrivacyPersistenceAdapter" ++ ++ new-instance v2, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v2}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "deleteSettings - database entry for " ++ ++ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ const-string v3, " not found" ++ ++ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :cond_99 ++ new-instance v12, Ljava/io/File; ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "/data/system/privacy/" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, "/" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-direct {v12, v1}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ new-instance v13, Ljava/io/File; ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "/data/system/privacy/" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, "/systemLogsSetting" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-direct {v13, v1}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v13}, Ljava/io/File;->delete()Z ++ ++ invoke-virtual {v12}, Ljava/io/File;->list()[Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ if-eqz v1, :cond_e5 ++ ++ invoke-virtual {v12}, Ljava/io/File;->list()[Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ array-length v1, v1 ++ ++ if-nez v1, :cond_e8 ++ ++ :cond_e5 ++ invoke-virtual {v12}, Ljava/io/File;->delete()Z ++ ++ :cond_e8 ++ invoke-virtual {v0}, Landroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V ++ ++ sget-object v1, Landroid/privacy/PrivacyPersistenceAdapter;->settingsCache:Landroid/util/LruCache; ++ ++ invoke-virtual {v1, p1}, Landroid/util/LruCache;->remove(Ljava/lang/Object;)Ljava/lang/Object; ++ :try_end_f0 ++ .catchall {:try_start_26 .. :try_end_f0} :catchall_130 ++ ++ :try_start_f0 ++ invoke-virtual {v0}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V ++ :try_end_f3 ++ .catchall {:try_start_f0 .. :try_end_f3} :catchall_135 ++ ++ :try_start_f3 ++ sget-object v1, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v1}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v1 ++ ++ invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ :try_end_fc ++ .catchall {:try_start_f3 .. :try_end_fc} :catchall_14d ++ .catch Landroid/database/sqlite/SQLiteException; {:try_start_f3 .. :try_end_fc} :catch_103 ++ .catch Ljava/lang/Exception; {:try_start_f3 .. :try_end_fc} :catch_140 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ :goto_ff ++ return v11 ++ ++ :catchall_100 ++ move-exception v1 ++ ++ :try_start_101 ++ monitor-exit v2 ++ :try_end_102 ++ .catchall {:try_start_101 .. :try_end_102} :catchall_100 ++ ++ :try_start_102 ++ throw v1 ++ :try_end_103 ++ .catchall {:try_start_102 .. :try_end_103} :catchall_14d ++ .catch Landroid/database/sqlite/SQLiteException; {:try_start_102 .. :try_end_103} :catch_103 ++ .catch Ljava/lang/Exception; {:try_start_102 .. :try_end_103} :catch_140 ++ ++ :catch_103 ++ move-exception v9 ++ ++ const/4 v11, 0x0 ++ ++ :try_start_105 ++ const-string v1, "PrivacyPersistenceAdapter" ++ ++ const-string v2, "PrivacyPersistenceAdapter:deleteSettings: failed to open the database, or open a transaction" ++ ++ invoke-static {v1, v2, v9}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ :try_end_10c ++ .catchall {:try_start_105 .. :try_end_10c} :catchall_14d ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ goto :goto_ff ++ ++ :cond_110 ++ :try_start_110 ++ const-string v1, "PrivacyPersistenceAdapter" ++ ++ new-instance v2, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v2}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "deleteSettings - database entry for " ++ ++ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ const-string v3, " not found" ++ ++ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_12e ++ .catchall {:try_start_110 .. :try_end_12e} :catchall_130 ++ ++ goto/16 :goto_69 ++ ++ :catchall_130 ++ move-exception v1 ++ ++ :try_start_131 ++ invoke-virtual {v0}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V ++ ++ throw v1 ++ :try_end_135 ++ .catchall {:try_start_131 .. :try_end_135} :catchall_135 ++ ++ :catchall_135 ++ move-exception v1 ++ ++ :try_start_136 ++ sget-object v2, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v2}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v2 ++ ++ invoke-interface {v2}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ ++ throw v1 ++ :try_end_140 ++ .catchall {:try_start_136 .. :try_end_140} :catchall_14d ++ .catch Landroid/database/sqlite/SQLiteException; {:try_start_136 .. :try_end_140} :catch_103 ++ .catch Ljava/lang/Exception; {:try_start_136 .. :try_end_140} :catch_140 ++ ++ :catch_140 ++ move-exception v9 ++ ++ const/4 v11, 0x0 ++ ++ :try_start_142 ++ const-string v1, "PrivacyPersistenceAdapter" ++ ++ const-string v2, "PrivacyPersistenceAdapter:deleteSettings - could not delete settings" ++ ++ invoke-static {v1, v2, v9}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ :try_end_149 ++ .catchall {:try_start_142 .. :try_end_149} :catchall_14d ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ goto :goto_ff ++ ++ :catchall_14d ++ move-exception v1 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ throw v1 ++.end method ++ ++.method public getSettings(Ljava/lang/String;)Landroid/privacy/PrivacySettings; ++ .registers 59 ++ ++ const/16 v56, 0x0 ++ ++ if-nez p1, :cond_c ++ ++ new-instance v1, Ljava/security/InvalidParameterException; ++ ++ const-string v4, "PrivacyPersistenceAdapter:getSettings:insufficient application identifier - package name is required" ++ ++ invoke-direct {v1, v4}, Ljava/security/InvalidParameterException;->(Ljava/lang/String;)V ++ ++ throw v1 ++ ++ :cond_c ++ sget-object v1, Landroid/privacy/PrivacyPersistenceAdapter;->settingsCache:Landroid/util/LruCache; ++ ++ move-object/from16 v0, p1 ++ ++ invoke-virtual {v1, v0}, Landroid/util/LruCache;->get(Ljava/lang/Object;)Ljava/lang/Object; ++ ++ move-result-object v53 ++ ++ check-cast v53, Landroid/privacy/PrivacySettingsStub; ++ ++ if-eqz v53, :cond_28 ++ ++ move-object/from16 v0, v53 ++ ++ instance-of v1, v0, Landroid/privacy/PrivacySettings; ++ ++ if-eqz v1, :cond_23 ++ ++ check-cast v53, Landroid/privacy/PrivacySettings; ++ ++ move-object/from16 v3, v56 ++ ++ :goto_22 ++ return-object v53 ++ ++ :cond_23 ++ const/16 v53, 0x0 ++ ++ move-object/from16 v3, v56 ++ ++ goto :goto_22 ++ ++ :cond_28 ++ :try_start_28 ++ sget-object v4, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ monitor-enter v4 ++ :try_end_2b ++ .catch Landroid/database/sqlite/SQLiteException; {:try_start_28 .. :try_end_2b} :catch_a8 ++ ++ :try_start_2b ++ sget-object v1, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ sget-object v1, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I ++ ++ move-result v1 ++ ++ add-int/lit8 v1, v1, 0x1 ++ ++ invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ ++ move-result-object v1 ++ ++ sput-object v1, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ monitor-exit v4 ++ :try_end_3c ++ .catchall {:try_start_2b .. :try_end_3c} :catchall_a5 ++ ++ :try_start_3c ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->getDatabase()Landroid/database/sqlite/SQLiteDatabase; ++ :try_end_3f ++ .catch Landroid/database/sqlite/SQLiteException; {:try_start_3c .. :try_end_3f} :catch_a8 ++ ++ move-result-object v2 ++ ++ const/16 v54, 0x0 ++ ++ sget-object v1, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v1}, Ljava/util/concurrent/locks/ReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v1 ++ ++ invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->lock()V ++ ++ :try_start_4b ++ const-string/jumbo v3, "settings" ++ ++ sget-object v4, Landroid/privacy/PrivacyPersistenceAdapter;->DATABASE_FIELDS:[Ljava/lang/String; ++ ++ const-string/jumbo v5, "packageName=?" ++ ++ const/4 v1, 0x1 ++ ++ new-array v6, v1, [Ljava/lang/String; ++ ++ const/4 v1, 0x0 ++ ++ aput-object p1, v6, v1 ++ ++ const/4 v7, 0x0 ++ ++ const/4 v8, 0x0 ++ ++ const/4 v9, 0x0 ++ ++ const/4 v10, 0x0 ++ ++ move-object/from16 v1, p0 ++ ++ invoke-direct/range {v1 .. v10}, Landroid/privacy/PrivacyPersistenceAdapter;->query(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; ++ ++ move-result-object v54 ++ ++ if-eqz v54, :cond_367 ++ ++ invoke-interface/range {v54 .. v54}, Landroid/database/Cursor;->getCount()I ++ ++ move-result v1 ++ ++ if-nez v1, :cond_b6 ++ ++ const-string v1, "PrivacyPersistenceAdapter" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "PrivacyPersistenceAdapter:getSettingsfound for package " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ move-object/from16 v0, p1 ++ ++ invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_85 ++ .catchall {:try_start_4b .. :try_end_85} :catchall_35f ++ .catch Ljava/lang/Exception; {:try_start_4b .. :try_end_85} :catch_363 ++ ++ move-object/from16 v3, v56 ++ ++ :cond_87 ++ :goto_87 ++ if-eqz v3, :cond_351 ++ ++ :try_start_89 ++ sget-object v1, Landroid/privacy/PrivacyPersistenceAdapter;->settingsCache:Landroid/util/LruCache; ++ ++ move-object/from16 v0, p1 ++ ++ invoke-virtual {v1, v0, v3}, Landroid/util/LruCache;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; ++ :try_end_90 ++ .catchall {:try_start_89 .. :try_end_90} :catchall_33e ++ .catch Ljava/lang/Exception; {:try_start_89 .. :try_end_90} :catch_307 ++ ++ :goto_90 ++ if-eqz v54, :cond_95 ++ ++ invoke-interface/range {v54 .. v54}, Landroid/database/Cursor;->close()V ++ ++ :cond_95 ++ sget-object v1, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v1}, Ljava/util/concurrent/locks/ReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v1 ++ ++ invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ :goto_a1 ++ move-object/from16 v53, v3 ++ ++ goto/16 :goto_22 ++ ++ :catchall_a5 ++ move-exception v1 ++ ++ :try_start_a6 ++ monitor-exit v4 ++ :try_end_a7 ++ .catchall {:try_start_a6 .. :try_end_a7} :catchall_a5 ++ ++ :try_start_a7 ++ throw v1 ++ :try_end_a8 ++ .catch Landroid/database/sqlite/SQLiteException; {:try_start_a7 .. :try_end_a8} :catch_a8 ++ ++ :catch_a8 ++ move-exception v55 ++ ++ const-string v1, "PrivacyPersistenceAdapter" ++ ++ const-string v4, "getSettings - database could not be opened" ++ ++ move-object/from16 v0, v55 ++ ++ invoke-static {v1, v4, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ throw v55 ++ ++ :cond_b6 ++ :try_start_b6 ++ invoke-interface/range {v54 .. v54}, Landroid/database/Cursor;->getCount()I ++ ++ move-result v1 ++ ++ const/4 v4, 0x1 ++ ++ if-le v1, v4, :cond_d7 ++ ++ const-string v1, "PrivacyPersistenceAdapter" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "Multiple privacy settings found for package " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ move-object/from16 v0, p1 ++ ++ invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :cond_d7 ++ invoke-interface/range {v54 .. v54}, Landroid/database/Cursor;->moveToFirst()Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_367 ++ ++ new-instance v3, Landroid/privacy/PrivacySettings; ++ ++ const/4 v1, 0x0 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getInt(I)I ++ ++ move-result v1 ++ ++ invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ ++ move-result-object v4 ++ ++ const/4 v1, 0x1 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ const/4 v1, 0x2 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getInt(I)I ++ ++ move-result v6 ++ ++ const/4 v1, 0x3 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v7, v1 ++ ++ const/4 v1, 0x4 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; ++ ++ move-result-object v8 ++ ++ const/4 v1, 0x5 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v9, v1 ++ ++ const/4 v1, 0x6 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; ++ ++ move-result-object v10 ++ ++ const/4 v1, 0x7 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v11, v1 ++ ++ const/16 v1, 0x8 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; ++ ++ move-result-object v12 ++ ++ const/16 v1, 0x9 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; ++ ++ move-result-object v13 ++ ++ const/16 v1, 0xa ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v14, v1 ++ ++ const/16 v1, 0xb ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; ++ ++ move-result-object v15 ++ ++ const/16 v1, 0xc ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; ++ ++ move-result-object v16 ++ ++ const/16 v1, 0xd ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v17, v0 ++ ++ const/16 v1, 0xe ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v18, v0 ++ ++ const/16 v1, 0xf ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v19, v0 ++ ++ const/16 v1, 0x10 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; ++ ++ move-result-object v20 ++ ++ const/16 v1, 0x11 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v21, v0 ++ ++ const/16 v1, 0x12 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; ++ ++ move-result-object v22 ++ ++ const/16 v1, 0x13 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v23, v0 ++ ++ const/16 v1, 0x14 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v24, v0 ++ ++ const/16 v1, 0x15 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v25, v0 ++ ++ const/16 v1, 0x16 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v26, v0 ++ ++ const/16 v1, 0x17 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v27, v0 ++ ++ const/16 v1, 0x18 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v28, v0 ++ ++ const/16 v1, 0x19 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v29, v0 ++ ++ const/16 v1, 0x1a ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v30, v0 ++ ++ const/16 v1, 0x1b ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v31, v0 ++ ++ const/16 v1, 0x1c ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v32, v0 ++ ++ const/16 v1, 0x1d ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v33, v0 ++ ++ const/16 v1, 0x1e ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v34, v0 ++ ++ const/16 v1, 0x1f ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v35, v0 ++ ++ const/16 v1, 0x20 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v36, v0 ++ ++ const/16 v1, 0x21 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v37, v0 ++ ++ const/16 v1, 0x22 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v38, v0 ++ ++ const/16 v39, 0x0 ++ ++ const/16 v1, 0x23 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v40, v0 ++ ++ const/16 v1, 0x24 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v41, v0 ++ ++ const/16 v1, 0x25 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v42, v0 ++ ++ const/16 v1, 0x26 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v43, v0 ++ ++ const/16 v1, 0x27 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v44, v0 ++ ++ const/16 v1, 0x28 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v45, v0 ++ ++ const/16 v1, 0x29 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; ++ ++ move-result-object v46 ++ ++ const/16 v1, 0x2a ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v47, v0 ++ ++ const/16 v1, 0x2b ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v48, v0 ++ ++ const/16 v1, 0x2c ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v49, v0 ++ ++ const/16 v1, 0x2d ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v50, v0 ++ ++ const/16 v1, 0x2e ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v1 ++ ++ int-to-byte v0, v1 ++ ++ move/from16 v51, v0 ++ ++ invoke-direct/range {v3 .. v51}, Landroid/privacy/PrivacySettings;->(Ljava/lang/Integer;Ljava/lang/String;IBLjava/lang/String;BLjava/lang/String;BLjava/lang/String;Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;BBBLjava/lang/String;BLjava/lang/String;BBBBBBBBBBBBBBBB[IBBBBBBLjava/lang/String;BBBBB)V ++ :try_end_2b9 ++ .catchall {:try_start_b6 .. :try_end_2b9} :catchall_35f ++ .catch Ljava/lang/Exception; {:try_start_b6 .. :try_end_2b9} :catch_363 ++ ++ :try_start_2b9 ++ const-string v6, "allowed_contacts" ++ ++ const/4 v1, 0x1 ++ ++ new-array v7, v1, [Ljava/lang/String; ++ ++ const/4 v1, 0x0 ++ ++ const-string v4, "contact_id" ++ ++ aput-object v4, v7, v1 ++ ++ const-string/jumbo v8, "settings_id=?" ++ ++ const/4 v1, 0x1 ++ ++ new-array v9, v1, [Ljava/lang/String; ++ ++ const/4 v1, 0x0 ++ ++ invoke-virtual {v3}, Landroid/privacy/PrivacySettings;->get_id()Ljava/lang/Integer; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/Integer;->intValue()I ++ ++ move-result v4 ++ ++ invoke-static {v4}, Ljava/lang/Integer;->toString(I)Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ aput-object v4, v9, v1 ++ ++ const/4 v10, 0x0 ++ ++ const/4 v11, 0x0 ++ ++ const/4 v12, 0x0 ++ ++ const/4 v13, 0x0 ++ ++ move-object/from16 v4, p0 ++ ++ move-object v5, v2 ++ ++ invoke-direct/range {v4 .. v13}, Landroid/privacy/PrivacyPersistenceAdapter;->query(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; ++ ++ move-result-object v54 ++ ++ if-eqz v54, :cond_87 ++ ++ invoke-interface/range {v54 .. v54}, Landroid/database/Cursor;->getCount()I ++ ++ move-result v1 ++ ++ if-lez v1, :cond_87 ++ ++ invoke-interface/range {v54 .. v54}, Landroid/database/Cursor;->getCount()I ++ ++ move-result v1 ++ ++ new-array v0, v1, [I ++ ++ move-object/from16 v52, v0 ++ ++ :goto_2f3 ++ invoke-interface/range {v54 .. v54}, Landroid/database/Cursor;->moveToNext()Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_337 ++ ++ invoke-interface/range {v54 .. v54}, Landroid/database/Cursor;->getPosition()I ++ ++ move-result v1 ++ ++ const/4 v4, 0x0 ++ ++ move-object/from16 v0, v54 ++ ++ invoke-interface {v0, v4}, Landroid/database/Cursor;->getInt(I)I ++ ++ move-result v4 ++ ++ aput v4, v52, v1 ++ :try_end_306 ++ .catchall {:try_start_2b9 .. :try_end_306} :catchall_33e ++ .catch Ljava/lang/Exception; {:try_start_2b9 .. :try_end_306} :catch_307 ++ ++ goto :goto_2f3 ++ ++ :catch_307 ++ move-exception v55 ++ ++ :goto_308 ++ :try_start_308 ++ const-string v1, "PrivacyPersistenceAdapter" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "getSettings - failed to get settings for package: " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ move-object/from16 v0, p1 ++ ++ invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ move-object/from16 v0, v55 ++ ++ invoke-static {v1, v4, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ :try_end_324 ++ .catchall {:try_start_308 .. :try_end_324} :catchall_33e ++ ++ if-eqz v54, :cond_329 ++ ++ invoke-interface/range {v54 .. v54}, Landroid/database/Cursor;->close()V ++ ++ :cond_329 ++ sget-object v1, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v1}, Ljava/util/concurrent/locks/ReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v1 ++ ++ invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ goto/16 :goto_a1 ++ ++ :cond_337 ++ :try_start_337 ++ move-object/from16 v0, v52 ++ ++ invoke-virtual {v3, v0}, Landroid/privacy/PrivacySettings;->setAllowedContacts([I)V ++ :try_end_33c ++ .catchall {:try_start_337 .. :try_end_33c} :catchall_33e ++ .catch Ljava/lang/Exception; {:try_start_337 .. :try_end_33c} :catch_307 ++ ++ goto/16 :goto_87 ++ ++ :catchall_33e ++ move-exception v1 ++ ++ :goto_33f ++ if-eqz v54, :cond_344 ++ ++ invoke-interface/range {v54 .. v54}, Landroid/database/Cursor;->close()V ++ ++ :cond_344 ++ sget-object v4, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v4}, Ljava/util/concurrent/locks/ReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v4 ++ ++ invoke-interface {v4}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ throw v1 ++ ++ :cond_351 ++ :try_start_351 ++ sget-object v1, Landroid/privacy/PrivacyPersistenceAdapter;->settingsCache:Landroid/util/LruCache; ++ ++ new-instance v4, Landroid/privacy/PrivacySettingsStub; ++ ++ invoke-direct {v4}, Landroid/privacy/PrivacySettingsStub;->()V ++ ++ move-object/from16 v0, p1 ++ ++ invoke-virtual {v1, v0, v4}, Landroid/util/LruCache;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; ++ :try_end_35d ++ .catchall {:try_start_351 .. :try_end_35d} :catchall_33e ++ .catch Ljava/lang/Exception; {:try_start_351 .. :try_end_35d} :catch_307 ++ ++ goto/16 :goto_90 ++ ++ :catchall_35f ++ move-exception v1 ++ ++ move-object/from16 v3, v56 ++ ++ goto :goto_33f ++ ++ :catch_363 ++ move-exception v55 ++ ++ move-object/from16 v3, v56 ++ ++ goto :goto_308 ++ ++ :cond_367 ++ move-object/from16 v3, v56 ++ ++ goto/16 :goto_87 ++.end method ++ ++.method public getValue(Ljava/lang/String;)Ljava/lang/String; ++ .registers 15 ++ ++ const/4 v0, 0x0 ++ ++ const/4 v12, 0x0 ++ ++ :try_start_2 ++ sget-object v2, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ monitor-enter v2 ++ :try_end_5 ++ .catchall {:try_start_2 .. :try_end_5} :catchall_41 ++ ++ :try_start_5 ++ sget-object v3, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ sget-object v3, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ invoke-virtual {v3}, Ljava/lang/Integer;->intValue()I ++ ++ move-result v3 ++ ++ add-int/lit8 v3, v3, 0x1 ++ ++ invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ ++ move-result-object v3 ++ ++ sput-object v3, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ monitor-exit v2 ++ :try_end_16 ++ .catchall {:try_start_5 .. :try_end_16} :catchall_3e ++ ++ :try_start_16 ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->getDatabase()Landroid/database/sqlite/SQLiteDatabase; ++ ++ move-result-object v1 ++ ++ if-eqz v1, :cond_22 ++ ++ invoke-virtual {v1}, Landroid/database/sqlite/SQLiteDatabase;->isOpen()Z ++ ++ move-result v2 ++ ++ if-nez v2, :cond_46 ++ ++ :cond_22 ++ const-string v2, "PrivacyPersistenceAdapter" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "PrivacyPersistenceAdapter:getValue: Database not obtained while getting value for name: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_3a ++ .catchall {:try_start_16 .. :try_end_3a} :catchall_41 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ :goto_3d ++ return-object v0 ++ ++ :catchall_3e ++ move-exception v0 ++ ++ :try_start_3f ++ monitor-exit v2 ++ :try_end_40 ++ .catchall {:try_start_3f .. :try_end_40} :catchall_3e ++ ++ :try_start_40 ++ throw v0 ++ :try_end_41 ++ .catchall {:try_start_40 .. :try_end_41} :catchall_41 ++ ++ :catchall_41 ++ move-exception v0 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ throw v0 ++ ++ :cond_46 ++ :try_start_46 ++ sget-object v0, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v0}, Ljava/util/concurrent/locks/ReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v0 ++ ++ invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->lock()V ++ :try_end_4f ++ .catchall {:try_start_46 .. :try_end_4f} :catchall_41 ++ ++ :try_start_4f ++ const-string/jumbo v2, "map" ++ ++ const/4 v0, 0x1 ++ ++ new-array v3, v0, [Ljava/lang/String; ++ ++ const/4 v0, 0x0 ++ ++ const-string/jumbo v4, "value" ++ ++ aput-object v4, v3, v0 ++ ++ const-string/jumbo v4, "name=?" ++ ++ const/4 v0, 0x1 ++ ++ new-array v5, v0, [Ljava/lang/String; ++ ++ const/4 v0, 0x0 ++ ++ aput-object p1, v5, v0 ++ ++ const/4 v6, 0x0 ++ ++ const/4 v7, 0x0 ++ ++ const/4 v8, 0x0 ++ ++ const/4 v9, 0x0 ++ ++ move-object v0, p0 ++ ++ invoke-direct/range {v0 .. v9}, Landroid/privacy/PrivacyPersistenceAdapter;->query(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; ++ ++ move-result-object v10 ++ ++ if-eqz v10, :cond_97 ++ ++ invoke-interface {v10}, Landroid/database/Cursor;->getCount()I ++ ++ move-result v0 ++ ++ if-lez v0, :cond_97 ++ ++ invoke-interface {v10}, Landroid/database/Cursor;->moveToFirst()Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_97 ++ ++ const-string/jumbo v0, "value" ++ ++ invoke-interface {v10, v0}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I ++ ++ move-result v0 ++ ++ invoke-interface {v10, v0}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; ++ ++ move-result-object v12 ++ ++ invoke-interface {v10}, Landroid/database/Cursor;->close()V ++ :try_end_89 ++ .catchall {:try_start_4f .. :try_end_89} :catchall_d3 ++ .catch Ljava/lang/Exception; {:try_start_4f .. :try_end_89} :catch_b0 ++ ++ :goto_89 ++ :try_start_89 ++ sget-object v0, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v0}, Ljava/util/concurrent/locks/ReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v0 ++ ++ invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ :try_end_92 ++ .catchall {:try_start_89 .. :try_end_92} :catchall_41 ++ ++ :goto_92 ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ move-object v0, v12 ++ ++ goto :goto_3d ++ ++ :cond_97 ++ :try_start_97 ++ const-string v0, "PrivacyPersistenceAdapter" ++ ++ new-instance v2, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v2}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "PrivacyPersistenceAdapter:getValue: Could not get value for name: " ++ ++ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-static {v0, v2}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_af ++ .catchall {:try_start_97 .. :try_end_af} :catchall_d3 ++ .catch Ljava/lang/Exception; {:try_start_97 .. :try_end_af} :catch_b0 ++ ++ goto :goto_89 ++ ++ :catch_b0 ++ move-exception v11 ++ ++ :try_start_b1 ++ const-string v0, "PrivacyPersistenceAdapter" ++ ++ new-instance v2, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v2}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "PrivacyPersistenceAdapter:getValue: Exception occurred while getting value for name: " ++ ++ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-static {v0, v2, v11}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ :try_end_c9 ++ .catchall {:try_start_b1 .. :try_end_c9} :catchall_d3 ++ ++ :try_start_c9 ++ sget-object v0, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v0}, Ljava/util/concurrent/locks/ReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v0 ++ ++ invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ ++ goto :goto_92 ++ ++ :catchall_d3 ++ move-exception v0 ++ ++ sget-object v2, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v2}, Ljava/util/concurrent/locks/ReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v2 ++ ++ invoke-interface {v2}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ ++ throw v0 ++ :try_end_de ++ .catchall {:try_start_c9 .. :try_end_de} :catchall_41 ++.end method ++ ++.method public purgeSettings()Z ++ .registers 26 ++ ++ const/16 v23, 0x1 ++ ++ new-instance v13, Ljava/util/HashSet; ++ ++ invoke-direct {v13}, Ljava/util/HashSet;->()V ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v2, v0, Landroid/privacy/PrivacyPersistenceAdapter;->mContext:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager; ++ ++ move-result-object v20 ++ ++ const/4 v2, 0x0 ++ ++ move-object/from16 v0, v20 ++ ++ invoke-virtual {v0, v2}, Landroid/content/pm/PackageManager;->getInstalledApplications(I)Ljava/util/List; ++ ++ move-result-object v18 ++ ++ invoke-interface/range {v18 .. v18}, Ljava/util/List;->iterator()Ljava/util/Iterator; ++ ++ move-result-object v17 ++ ++ :goto_1a ++ invoke-interface/range {v17 .. v17}, Ljava/util/Iterator;->hasNext()Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_2c ++ ++ invoke-interface/range {v17 .. v17}, Ljava/util/Iterator;->next()Ljava/lang/Object; ++ ++ move-result-object v12 ++ ++ check-cast v12, Landroid/content/pm/ApplicationInfo; ++ ++ iget-object v2, v12, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String; ++ ++ invoke-interface {v13, v2}, Ljava/util/Set;->add(Ljava/lang/Object;)Z ++ ++ goto :goto_1a ++ ++ :cond_2c ++ const/4 v3, 0x0 ++ ++ :try_start_2d ++ sget-object v4, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ monitor-enter v4 ++ :try_end_30 ++ .catchall {:try_start_2d .. :try_end_30} :catchall_11b ++ .catch Ljava/lang/Exception; {:try_start_2d .. :try_end_30} :catch_56 ++ ++ :try_start_30 ++ sget-object v2, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ sget-object v2, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ invoke-virtual {v2}, Ljava/lang/Integer;->intValue()I ++ ++ move-result v2 ++ ++ add-int/lit8 v2, v2, 0x1 ++ ++ invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ ++ move-result-object v2 ++ ++ sput-object v2, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ monitor-exit v4 ++ :try_end_41 ++ .catchall {:try_start_30 .. :try_end_41} :catchall_53 ++ ++ :try_start_41 ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->getDatabase()Landroid/database/sqlite/SQLiteDatabase; ++ ++ move-result-object v3 ++ ++ if-nez v3, :cond_68 ++ ++ const-string v2, "PrivacyPersistenceAdapter" ++ ++ const-string v4, "PrivacyPersistenceAdapter:purgeSettings: db could not be obtained" ++ ++ invoke-static {v2, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_4e ++ .catchall {:try_start_41 .. :try_end_4e} :catchall_11b ++ .catch Ljava/lang/Exception; {:try_start_41 .. :try_end_4e} :catch_56 ++ ++ const/4 v2, 0x0 ++ ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ :goto_52 ++ return v2 ++ ++ :catchall_53 ++ move-exception v2 ++ ++ :try_start_54 ++ monitor-exit v4 ++ :try_end_55 ++ .catchall {:try_start_54 .. :try_end_55} :catchall_53 ++ ++ :try_start_55 ++ throw v2 ++ :try_end_56 ++ .catchall {:try_start_55 .. :try_end_56} :catchall_11b ++ .catch Ljava/lang/Exception; {:try_start_55 .. :try_end_56} :catch_56 ++ ++ :catch_56 ++ move-exception v16 ++ ++ :try_start_57 ++ const-string v2, "PrivacyPersistenceAdapter" ++ ++ const-string v4, "PrivacyPersistenceAdapter:purgeSettings - purging DB failed" ++ ++ move-object/from16 v0, v16 ++ ++ invoke-static {v2, v4, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ :try_end_60 ++ .catchall {:try_start_57 .. :try_end_60} :catchall_11b ++ ++ const/16 v23, 0x0 ++ ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ :goto_65 ++ move/from16 v2, v23 ++ ++ goto :goto_52 ++ ++ :cond_68 ++ :try_start_68 ++ sget-object v2, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v2}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v2 ++ ++ invoke-interface {v2}, Ljava/util/concurrent/locks/Lock;->lock()V ++ :try_end_71 ++ .catchall {:try_start_68 .. :try_end_71} :catchall_11b ++ .catch Ljava/lang/Exception; {:try_start_68 .. :try_end_71} :catch_56 ++ ++ const/4 v15, 0x0 ++ ++ :try_start_72 ++ invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->beginTransaction()V ++ :try_end_75 ++ .catchall {:try_start_72 .. :try_end_75} :catchall_110 ++ ++ :try_start_75 ++ const-string/jumbo v4, "settings" ++ ++ const/4 v2, 0x1 ++ ++ new-array v5, v2, [Ljava/lang/String; ++ ++ const/4 v2, 0x0 ++ ++ const-string/jumbo v6, "packageName" ++ ++ aput-object v6, v5, v2 ++ ++ const/4 v6, 0x0 ++ ++ const/4 v7, 0x0 ++ ++ const/4 v8, 0x0 ++ ++ const/4 v9, 0x0 ++ ++ const/4 v10, 0x0 ++ ++ const/4 v11, 0x0 ++ ++ move-object/from16 v2, p0 ++ ++ invoke-direct/range {v2 .. v11}, Landroid/privacy/PrivacyPersistenceAdapter;->query(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; ++ ++ move-result-object v15 ++ ++ if-eqz v15, :cond_bd ++ ++ invoke-interface {v15}, Landroid/database/Cursor;->getCount()I ++ ++ move-result v2 ++ ++ if-lez v2, :cond_bd ++ ++ invoke-interface {v15}, Landroid/database/Cursor;->moveToFirst()Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_bd ++ ++ :cond_9b ++ const/4 v2, 0x0 ++ ++ invoke-interface {v15, v2}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; ++ ++ move-result-object v22 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-interface {v13, v0}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z ++ ++ move-result v2 ++ ++ if-nez v2, :cond_b7 ++ ++ const-string/jumbo v2, "settings" ++ ++ const-string/jumbo v4, "packageName = ?" ++ ++ const/4 v5, 0x1 ++ ++ new-array v5, v5, [Ljava/lang/String; ++ ++ const/4 v6, 0x0 ++ ++ aput-object v22, v5, v6 ++ ++ invoke-virtual {v3, v2, v4, v5}, Landroid/database/sqlite/SQLiteDatabase;->delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I ++ ++ :cond_b7 ++ invoke-interface {v15}, Landroid/database/Cursor;->moveToNext()Z ++ ++ move-result v2 ++ ++ if-nez v2, :cond_9b ++ ++ :cond_bd ++ new-instance v24, Ljava/io/File; ++ ++ const-string v2, "/data/system/privacy" ++ ++ move-object/from16 v0, v24 ++ ++ invoke-direct {v0, v2}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual/range {v24 .. v24}, Ljava/io/File;->listFiles()[Ljava/io/File; ++ ++ move-result-object v14 ++ ++ array-length v0, v14 ++ ++ move/from16 v19, v0 ++ ++ const/16 v17, 0x0 ++ ++ :goto_cf ++ move/from16 v0, v17 ++ ++ move/from16 v1, v19 ++ ++ if-ge v0, v1, :cond_ed ++ ++ aget-object v21, v14, v17 ++ ++ invoke-virtual/range {v21 .. v21}, Ljava/io/File;->getName()Ljava/lang/String; ++ ++ move-result-object v22 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-interface {v13, v0}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z ++ ++ move-result v2 ++ ++ if-nez v2, :cond_ea ++ ++ move-object/from16 v0, p0 ++ ++ move-object/from16 v1, v21 ++ ++ invoke-direct {v0, v1}, Landroid/privacy/PrivacyPersistenceAdapter;->deleteRecursive(Ljava/io/File;)V ++ ++ :cond_ea ++ add-int/lit8 v17, v17, 0x1 ++ ++ goto :goto_cf ++ ++ :cond_ed ++ invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V ++ :try_end_f0 ++ .catchall {:try_start_75 .. :try_end_f0} :catchall_106 ++ ++ if-eqz v15, :cond_f5 ++ ++ :try_start_f2 ++ invoke-interface {v15}, Landroid/database/Cursor;->close()V ++ ++ :cond_f5 ++ invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V ++ :try_end_f8 ++ .catchall {:try_start_f2 .. :try_end_f8} :catchall_110 ++ ++ :try_start_f8 ++ sget-object v2, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v2}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v2 ++ ++ invoke-interface {v2}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ :try_end_101 ++ .catchall {:try_start_f8 .. :try_end_101} :catchall_11b ++ .catch Ljava/lang/Exception; {:try_start_f8 .. :try_end_101} :catch_56 ++ ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ goto/16 :goto_65 ++ ++ :catchall_106 ++ move-exception v2 ++ ++ if-eqz v15, :cond_10c ++ ++ :try_start_109 ++ invoke-interface {v15}, Landroid/database/Cursor;->close()V ++ ++ :cond_10c ++ invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V ++ ++ throw v2 ++ :try_end_110 ++ .catchall {:try_start_109 .. :try_end_110} :catchall_110 ++ ++ :catchall_110 ++ move-exception v2 ++ ++ :try_start_111 ++ sget-object v4, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v4}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v4 ++ ++ invoke-interface {v4}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ ++ throw v2 ++ :try_end_11b ++ .catchall {:try_start_111 .. :try_end_11b} :catchall_11b ++ .catch Ljava/lang/Exception; {:try_start_111 .. :try_end_11b} :catch_56 ++ ++ :catchall_11b ++ move-exception v2 ++ ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ throw v2 ++.end method ++ ++.method public saveSettings(Landroid/privacy/PrivacySettings;)Z ++ .registers 25 ++ ++ const/16 v19, 0x0 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v18 ++ ++ if-eqz v18, :cond_e ++ ++ invoke-virtual/range {v18 .. v18}, Ljava/lang/String;->isEmpty()Z ++ ++ move-result v4 ++ ++ if-eqz v4, :cond_18 ++ ++ :cond_e ++ const-string v4, "PrivacyPersistenceAdapter" ++ ++ const-string/jumbo v5, "saveSettings - either package name is missing" ++ ++ invoke-static {v4, v5}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v4, 0x0 ++ ++ :goto_17 ++ return v4 ++ ++ :cond_18 ++ new-instance v22, Landroid/content/ContentValues; ++ ++ invoke-direct/range {v22 .. v22}, Landroid/content/ContentValues;->()V ++ ++ const-string/jumbo v4, "packageName" ++ ++ move-object/from16 v0, v22 ++ ++ move-object/from16 v1, v18 ++ ++ invoke-virtual {v0, v4, v1}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V ++ ++ const-string/jumbo v4, "uid" ++ ++ const/4 v5, -0x1 ++ ++ invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V ++ ++ const-string v4, "deviceIdSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string v4, "deviceId" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V ++ ++ const-string v4, "line1NumberSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V ++ ++ const-string v4, "locationGpsSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getLocationGpsSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string v4, "locationGpsLat" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getLocationGpsLat()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V ++ ++ const-string v4, "locationGpsLon" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getLocationGpsLon()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V ++ ++ const-string v4, "locationNetworkSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string v4, "locationNetworkLat" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getLocationNetworkLat()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V ++ ++ const-string v4, "locationNetworkLon" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getLocationNetworkLon()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V ++ ++ const-string/jumbo v4, "networkInfoSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string/jumbo v4, "simInfoSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getSimInfoSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string/jumbo v4, "simSerialNumberSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getSimSerialNumberSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string/jumbo v4, "simSerialNumber" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getSimSerialNumber()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V ++ ++ const-string/jumbo v4, "subscriberIdSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getSubscriberIdSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string/jumbo v4, "subscriberId" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V ++ ++ const-string v4, "accountsSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getAccountsSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string v4, "accountsAuthTokensSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getAccountsAuthTokensSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string/jumbo v4, "outgoingCallsSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getOutgoingCallsSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string v4, "incomingCallsSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getIncomingCallsSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string v4, "contactsSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getContactsSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string v4, "calendarSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getCalendarSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string/jumbo v4, "mmsSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getMmsSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string/jumbo v4, "smsSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getSmsSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string v4, "callLogSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getCallLogSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string v4, "bookmarksSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getBookmarksSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string/jumbo v4, "systemLogsSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getSystemLogsSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string/jumbo v4, "notificationSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getNotificationSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string v4, "intentBootCompletedSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getIntentBootCompletedSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string v4, "cameraSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getCameraSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string/jumbo v4, "recordAudioSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getRecordAudioSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string/jumbo v4, "smsSendSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getSmsSendSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string/jumbo v4, "phoneCallSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string v4, "ipTableProtectSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getIpTableProtectSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string v4, "iccAccessSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getIccAccessSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string v4, "addOnManagementSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getAddOnManagementSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string v4, "androidIdSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getAndroidIdSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string v4, "androidId" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getAndroidID()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V ++ ++ const-string/jumbo v4, "wifiInfoSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getWifiInfoSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string/jumbo v4, "switchConnectivitySetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getSwitchConnectivitySetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string/jumbo v4, "sendMmsSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getSendMmsSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string v4, "forceOnlineState" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getForceOnlineState()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const-string/jumbo v4, "switchWifiStateSetting" ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getSwitchWifiStateSetting()B ++ ++ move-result v5 ++ ++ invoke-static {v5}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Byte;)V ++ ++ const/4 v3, 0x0 ++ ++ const/4 v13, 0x0 ++ ++ :try_start_2a9 ++ sget-object v5, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ monitor-enter v5 ++ :try_end_2ac ++ .catchall {:try_start_2a9 .. :try_end_2ac} :catchall_33c ++ .catch Ljava/lang/Exception; {:try_start_2a9 .. :try_end_2ac} :catch_311 ++ ++ :try_start_2ac ++ sget-object v4, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ sget-object v4, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ invoke-virtual {v4}, Ljava/lang/Integer;->intValue()I ++ ++ move-result v4 ++ ++ add-int/lit8 v4, v4, 0x1 ++ ++ invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ ++ move-result-object v4 ++ ++ sput-object v4, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ monitor-exit v5 ++ :try_end_2bd ++ .catchall {:try_start_2ac .. :try_end_2bd} :catchall_339 ++ ++ :try_start_2bd ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->getDatabase()Landroid/database/sqlite/SQLiteDatabase; ++ ++ move-result-object v3 ++ ++ if-eqz v3, :cond_4f9 ++ ++ invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->isOpen()Z ++ ++ move-result v4 ++ ++ if-eqz v4, :cond_4f9 ++ ++ sget-object v4, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v4}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v4 ++ ++ invoke-interface {v4}, Ljava/util/concurrent/locks/Lock;->lock()V ++ :try_end_2d2 ++ .catchall {:try_start_2bd .. :try_end_2d2} :catchall_33c ++ .catch Ljava/lang/Exception; {:try_start_2bd .. :try_end_2d2} :catch_311 ++ ++ :try_start_2d2 ++ invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->beginTransaction()V ++ :try_end_2d5 ++ .catchall {:try_start_2d2 .. :try_end_2d5} :catchall_306 ++ ++ :try_start_2d5 ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->get_id()Ljava/lang/Integer; ++ ++ move-result-object v16 ++ ++ if-eqz v16, :cond_38d ++ ++ const-string/jumbo v4, "settings" ++ ++ const-string v5, "_id=?" ++ ++ const/4 v6, 0x1 ++ ++ new-array v6, v6, [Ljava/lang/String; ++ ++ const/4 v7, 0x0 ++ ++ invoke-virtual/range {v16 .. v16}, Ljava/lang/Integer;->toString()Ljava/lang/String; ++ ++ move-result-object v8 ++ ++ aput-object v8, v6, v7 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v3, v4, v0, v5, v6}, Landroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I ++ ++ move-result v4 ++ ++ const/4 v5, 0x1 ++ ++ if-ge v4, v5, :cond_341 ++ ++ new-instance v4, Ljava/lang/Exception; ++ ++ const-string/jumbo v5, "saveSettings - failed to update database entry" ++ ++ invoke-direct {v4, v5}, Ljava/lang/Exception;->(Ljava/lang/String;)V ++ ++ throw v4 ++ :try_end_2fc ++ .catchall {:try_start_2d5 .. :try_end_2fc} :catchall_2fc ++ ++ :catchall_2fc ++ move-exception v4 ++ ++ :try_start_2fd ++ invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V ++ ++ if-eqz v13, :cond_305 ++ ++ invoke-interface {v13}, Landroid/database/Cursor;->close()V ++ ++ :cond_305 ++ throw v4 ++ :try_end_306 ++ .catchall {:try_start_2fd .. :try_end_306} :catchall_306 ++ ++ :catchall_306 ++ move-exception v4 ++ ++ :try_start_307 ++ sget-object v5, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v5}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v5 ++ ++ invoke-interface {v5}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ ++ throw v4 ++ :try_end_311 ++ .catchall {:try_start_307 .. :try_end_311} :catchall_33c ++ .catch Ljava/lang/Exception; {:try_start_307 .. :try_end_311} :catch_311 ++ ++ :catch_311 ++ move-exception v14 ++ ++ :try_start_312 ++ const-string v4, "PrivacyPersistenceAdapter" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PrivacyPersistenceAdapter:saveSettings: saving for " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ move-object/from16 v0, v18 ++ ++ invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ const-string v6, " failed" ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v4, v5, v14}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ :try_end_332 ++ .catchall {:try_start_312 .. :try_end_332} :catchall_33c ++ ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ :goto_335 ++ move/from16 v4, v19 ++ ++ goto/16 :goto_17 ++ ++ :catchall_339 ++ move-exception v4 ++ ++ :try_start_33a ++ monitor-exit v5 ++ :try_end_33b ++ .catchall {:try_start_33a .. :try_end_33b} :catchall_339 ++ ++ :try_start_33b ++ throw v4 ++ :try_end_33c ++ .catchall {:try_start_33b .. :try_end_33c} :catchall_33c ++ .catch Ljava/lang/Exception; {:try_start_33b .. :try_end_33c} :catch_311 ++ ++ :catchall_33c ++ move-exception v4 ++ ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ throw v4 ++ ++ :cond_341 ++ :try_start_341 ++ const-string v4, "allowed_contacts" ++ ++ const-string/jumbo v5, "settings_id=?" ++ ++ const/4 v6, 0x1 ++ ++ new-array v6, v6, [Ljava/lang/String; ++ ++ const/4 v7, 0x0 ++ ++ invoke-virtual/range {v16 .. v16}, Ljava/lang/Integer;->toString()Ljava/lang/String; ++ ++ move-result-object v8 ++ ++ aput-object v8, v6, v7 ++ ++ invoke-virtual {v3, v4, v5, v6}, Landroid/database/sqlite/SQLiteDatabase;->delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getAllowedContacts()[I ++ ++ move-result-object v11 ++ ++ if-eqz v11, :cond_4af ++ ++ new-instance v12, Landroid/content/ContentValues; ++ ++ invoke-direct {v12}, Landroid/content/ContentValues;->()V ++ ++ const/4 v15, 0x0 ++ ++ :goto_35f ++ array-length v4, v11 ++ ++ if-ge v15, v4, :cond_4af ++ ++ const-string/jumbo v4, "settings_id" ++ ++ move-object/from16 v0, v16 ++ ++ invoke-virtual {v12, v4, v0}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V ++ ++ const-string v4, "contact_id" ++ ++ aget v5, v11, v15 ++ ++ invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v12, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V ++ ++ const-string v4, "allowed_contacts" ++ ++ const/4 v5, 0x0 ++ ++ invoke-virtual {v3, v4, v5, v12}, Landroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J ++ ++ move-result-wide v4 ++ ++ const-wide/16 v6, -0x1 ++ ++ cmp-long v4, v4, v6 ++ ++ if-nez v4, :cond_38a ++ ++ new-instance v4, Ljava/lang/Exception; ++ ++ const-string v5, "PrivacyPersistenceAdapter:saveSettings: failed to update database entry (contacts)" ++ ++ invoke-direct {v4, v5}, Ljava/lang/Exception;->(Ljava/lang/String;)V ++ ++ throw v4 ++ ++ :cond_38a ++ add-int/lit8 v15, v15, 0x1 ++ ++ goto :goto_35f ++ ++ :cond_38d ++ const-string/jumbo v4, "settings" ++ ++ const/4 v5, 0x1 ++ ++ new-array v5, v5, [Ljava/lang/String; ++ ++ const/4 v6, 0x0 ++ ++ const-string v7, "_id" ++ ++ aput-object v7, v5, v6 ++ ++ const-string/jumbo v6, "packageName=?" ++ ++ const/4 v7, 0x1 ++ ++ new-array v7, v7, [Ljava/lang/String; ++ ++ const/4 v8, 0x0 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v9 ++ ++ aput-object v9, v7, v8 ++ ++ const/4 v8, 0x0 ++ ++ const/4 v9, 0x0 ++ ++ const/4 v10, 0x0 ++ ++ invoke-virtual/range {v3 .. v10}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; ++ ++ move-result-object v13 ++ ++ if-eqz v13, :cond_4a7 ++ ++ invoke-interface {v13}, Landroid/database/Cursor;->getCount()I ++ ++ move-result v4 ++ ++ const/4 v5, 0x1 ++ ++ if-ne v4, v5, :cond_433 ++ ++ const-string/jumbo v4, "settings" ++ ++ const-string/jumbo v5, "packageName=?" ++ ++ const/4 v6, 0x1 ++ ++ new-array v6, v6, [Ljava/lang/String; ++ ++ const/4 v7, 0x0 ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v8 ++ ++ aput-object v8, v6, v7 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v3, v4, v0, v5, v6}, Landroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I ++ ++ move-result v4 ++ ++ const/4 v5, 0x1 ++ ++ if-ge v4, v5, :cond_3d7 ++ ++ new-instance v4, Ljava/lang/Exception; ++ ++ const-string/jumbo v5, "saveSettings - failed to update database entry" ++ ++ invoke-direct {v4, v5}, Ljava/lang/Exception;->(Ljava/lang/String;)V ++ ++ throw v4 ++ ++ :cond_3d7 ++ invoke-interface {v13}, Landroid/database/Cursor;->moveToFirst()Z ++ ++ move-result v4 ++ ++ if-eqz v4, :cond_4af ++ ++ const/4 v4, 0x0 ++ ++ invoke-interface {v13, v4}, Landroid/database/Cursor;->getInt(I)I ++ ++ move-result v4 ++ ++ invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ ++ move-result-object v17 ++ ++ const-string v4, "allowed_contacts" ++ ++ const-string/jumbo v5, "settings_id=?" ++ ++ const/4 v6, 0x1 ++ ++ new-array v6, v6, [Ljava/lang/String; ++ ++ const/4 v7, 0x0 ++ ++ invoke-virtual/range {v17 .. v17}, Ljava/lang/Integer;->toString()Ljava/lang/String; ++ ++ move-result-object v8 ++ ++ aput-object v8, v6, v7 ++ ++ invoke-virtual {v3, v4, v5, v6}, Landroid/database/sqlite/SQLiteDatabase;->delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getAllowedContacts()[I ++ ++ move-result-object v11 ++ ++ if-eqz v11, :cond_4af ++ ++ new-instance v12, Landroid/content/ContentValues; ++ ++ invoke-direct {v12}, Landroid/content/ContentValues;->()V ++ ++ const/4 v15, 0x0 ++ ++ :goto_404 ++ array-length v4, v11 ++ ++ if-ge v15, v4, :cond_4af ++ ++ const-string/jumbo v4, "settings_id" ++ ++ move-object/from16 v0, v17 ++ ++ invoke-virtual {v12, v4, v0}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V ++ ++ const-string v4, "contact_id" ++ ++ aget v5, v11, v15 ++ ++ invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v12, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V ++ ++ const-string v4, "allowed_contacts" ++ ++ const/4 v5, 0x0 ++ ++ invoke-virtual {v3, v4, v5, v12}, Landroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J ++ ++ move-result-wide v4 ++ ++ const-wide/16 v6, -0x1 ++ ++ cmp-long v4, v4, v6 ++ ++ if-nez v4, :cond_430 ++ ++ new-instance v4, Ljava/lang/Exception; ++ ++ const-string/jumbo v5, "saveSettings - failed to update database entry (contacts)" ++ ++ invoke-direct {v4, v5}, Ljava/lang/Exception;->(Ljava/lang/String;)V ++ ++ throw v4 ++ ++ :cond_430 ++ add-int/lit8 v15, v15, 0x1 ++ ++ goto :goto_404 ++ ++ :cond_433 ++ invoke-interface {v13}, Landroid/database/Cursor;->getCount()I ++ ++ move-result v4 ++ ++ if-nez v4, :cond_49f ++ ++ const-string/jumbo v4, "settings" ++ ++ const/4 v5, 0x0 ++ ++ move-object/from16 v0, v22 ++ ++ invoke-virtual {v3, v4, v5, v0}, Landroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J ++ ++ move-result-wide v20 ++ ++ const-wide/16 v4, -0x1 ++ ++ cmp-long v4, v20, v4 ++ ++ if-nez v4, :cond_451 ++ ++ new-instance v4, Ljava/lang/Exception; ++ ++ const-string v5, "PrivacyPersistenceAdapter:saveSettings - failed to insert new record into DB" ++ ++ invoke-direct {v4, v5}, Ljava/lang/Exception;->(Ljava/lang/String;)V ++ ++ throw v4 ++ ++ :cond_451 ++ const-string v4, "allowed_contacts" ++ ++ const-string/jumbo v5, "settings_id=?" ++ ++ const/4 v6, 0x1 ++ ++ new-array v6, v6, [Ljava/lang/String; ++ ++ const/4 v7, 0x0 ++ ++ invoke-static/range {v20 .. v21}, Ljava/lang/Long;->toString(J)Ljava/lang/String; ++ ++ move-result-object v8 ++ ++ aput-object v8, v6, v7 ++ ++ invoke-virtual {v3, v4, v5, v6}, Landroid/database/sqlite/SQLiteDatabase;->delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I ++ ++ invoke-virtual/range {p1 .. p1}, Landroid/privacy/PrivacySettings;->getAllowedContacts()[I ++ ++ move-result-object v11 ++ ++ if-eqz v11, :cond_4af ++ ++ new-instance v12, Landroid/content/ContentValues; ++ ++ invoke-direct {v12}, Landroid/content/ContentValues;->()V ++ ++ const/4 v15, 0x0 ++ ++ :goto_46f ++ array-length v4, v11 ++ ++ if-ge v15, v4, :cond_4af ++ ++ const-string/jumbo v4, "settings_id" ++ ++ invoke-static/range {v20 .. v21}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v12, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V ++ ++ const-string v4, "contact_id" ++ ++ aget v5, v11, v15 ++ ++ invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v12, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V ++ ++ const-string v4, "allowed_contacts" ++ ++ const/4 v5, 0x0 ++ ++ invoke-virtual {v3, v4, v5, v12}, Landroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J ++ ++ move-result-wide v4 ++ ++ const-wide/16 v6, -0x1 ++ ++ cmp-long v4, v4, v6 ++ ++ if-nez v4, :cond_49c ++ ++ new-instance v4, Ljava/lang/Exception; ++ ++ const-string v5, "PrivacyPersistenceAdapter:saveSettings:failed to update database entry (contacts)" ++ ++ invoke-direct {v4, v5}, Ljava/lang/Exception;->(Ljava/lang/String;)V ++ ++ throw v4 ++ ++ :cond_49c ++ add-int/lit8 v15, v15, 0x1 ++ ++ goto :goto_46f ++ ++ :cond_49f ++ new-instance v4, Ljava/lang/Exception; ++ ++ const-string v5, "PrivacyPersistenceAdapter:saveSettings:duplicate entries in the privacy.db" ++ ++ invoke-direct {v4, v5}, Ljava/lang/Exception;->(Ljava/lang/String;)V ++ ++ throw v4 ++ ++ :cond_4a7 ++ new-instance v4, Ljava/lang/Exception; ++ ++ const-string v5, "PrivacyPersistenceAdapter:saveSettings:cursor is null, database access failed" ++ ++ invoke-direct {v4, v5}, Ljava/lang/Exception;->(Ljava/lang/String;)V ++ ++ throw v4 ++ ++ :cond_4af ++ const-string/jumbo v4, "systemLogsSetting" ++ ++ move-object/from16 v0, p0 ++ ++ move-object/from16 v1, v18 ++ ++ move-object/from16 v2, p1 ++ ++ invoke-direct {v0, v4, v1, v2}, Landroid/privacy/PrivacyPersistenceAdapter;->writeExternalSettings(Ljava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)Z ++ ++ move-result v4 ++ ++ if-nez v4, :cond_4c6 ++ ++ new-instance v4, Ljava/lang/Exception; ++ ++ const-string v5, "PrivacyPersistenceAdapter:saveSettings:failed to write systemLogsSettings file" ++ ++ invoke-direct {v4, v5}, Ljava/lang/Exception;->(Ljava/lang/String;)V ++ ++ throw v4 ++ ++ :cond_4c6 ++ const-string v4, "ipTableProtectSetting" ++ ++ move-object/from16 v0, p0 ++ ++ move-object/from16 v1, v18 ++ ++ move-object/from16 v2, p1 ++ ++ invoke-direct {v0, v4, v1, v2}, Landroid/privacy/PrivacyPersistenceAdapter;->writeExternalSettings(Ljava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)Z ++ ++ move-result v4 ++ ++ if-nez v4, :cond_4dc ++ ++ new-instance v4, Ljava/lang/Exception; ++ ++ const-string v5, "PrivacyPersistenceAdapter:saveSettings:failed to write ipTableProtectSetting file" ++ ++ invoke-direct {v4, v5}, Ljava/lang/Exception;->(Ljava/lang/String;)V ++ ++ throw v4 ++ ++ :cond_4dc ++ invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V ++ ++ sget-object v4, Landroid/privacy/PrivacyPersistenceAdapter;->settingsCache:Landroid/util/LruCache; ++ ++ move-object/from16 v0, v18 ++ ++ invoke-virtual {v4, v0}, Landroid/util/LruCache;->remove(Ljava/lang/Object;)Ljava/lang/Object; ++ :try_end_4e6 ++ .catchall {:try_start_341 .. :try_end_4e6} :catchall_2fc ++ ++ :try_start_4e6 ++ invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V ++ ++ if-eqz v13, :cond_4ee ++ ++ invoke-interface {v13}, Landroid/database/Cursor;->close()V ++ :try_end_4ee ++ .catchall {:try_start_4e6 .. :try_end_4ee} :catchall_306 ++ ++ :cond_4ee ++ :try_start_4ee ++ sget-object v4, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v4}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v4 ++ ++ invoke-interface {v4}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ :try_end_4f7 ++ .catchall {:try_start_4ee .. :try_end_4f7} :catchall_33c ++ .catch Ljava/lang/Exception; {:try_start_4ee .. :try_end_4f7} :catch_311 ++ ++ const/16 v19, 0x1 ++ ++ :cond_4f9 ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ goto/16 :goto_335 ++.end method ++ ++.method public setValue(Ljava/lang/String;Ljava/lang/String;)Z ++ .registers 11 ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "PrivacyPersistenceAdapter" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string/jumbo v6, "setValue - name " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ const-string v6, " value " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v4, v5}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ new-instance v2, Landroid/content/ContentValues; ++ ++ invoke-direct {v2}, Landroid/content/ContentValues;->()V ++ ++ const-string/jumbo v4, "name" ++ ++ invoke-virtual {v2, v4, p1}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V ++ ++ const-string/jumbo v4, "value" ++ ++ invoke-virtual {v2, v4, p2}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V ++ ++ const/4 v1, 0x0 ++ ++ :try_start_36 ++ sget-object v4, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ monitor-enter v4 ++ :try_end_39 ++ .catchall {:try_start_36 .. :try_end_39} :catchall_75 ++ ++ :try_start_39 ++ sget-object v5, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ sget-object v5, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ invoke-virtual {v5}, Ljava/lang/Integer;->intValue()I ++ ++ move-result v5 ++ ++ add-int/lit8 v5, v5, 0x1 ++ ++ invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ ++ move-result-object v5 ++ ++ sput-object v5, Landroid/privacy/PrivacyPersistenceAdapter;->sDbAccessThreads:Ljava/lang/Integer; ++ ++ monitor-exit v4 ++ :try_end_4a ++ .catchall {:try_start_39 .. :try_end_4a} :catchall_72 ++ ++ :try_start_4a ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->getDatabase()Landroid/database/sqlite/SQLiteDatabase; ++ ++ move-result-object v0 ++ ++ if-eqz v0, :cond_56 ++ ++ invoke-virtual {v0}, Landroid/database/sqlite/SQLiteDatabase;->isOpen()Z ++ ++ move-result v4 ++ ++ if-nez v4, :cond_7a ++ ++ :cond_56 ++ const-string v4, "PrivacyPersistenceAdapter" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "PrivacyPersistenceAdapter:setValue: Database not obtained while setting value for name: " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v4, v5}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_6e ++ .catchall {:try_start_4a .. :try_end_6e} :catchall_75 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ :goto_71 ++ return v3 ++ ++ :catchall_72 ++ move-exception v3 ++ ++ :try_start_73 ++ monitor-exit v4 ++ :try_end_74 ++ .catchall {:try_start_73 .. :try_end_74} :catchall_72 ++ ++ :try_start_74 ++ throw v3 ++ :try_end_75 ++ .catchall {:try_start_74 .. :try_end_75} :catchall_75 ++ ++ :catchall_75 ++ move-exception v3 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ throw v3 ++ ++ :cond_7a ++ :try_start_7a ++ sget-object v4, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v4}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v4 ++ ++ invoke-interface {v4}, Ljava/util/concurrent/locks/Lock;->lock()V ++ :try_end_83 ++ .catchall {:try_start_7a .. :try_end_83} :catchall_75 ++ ++ :try_start_83 ++ const-string/jumbo v4, "map" ++ ++ const/4 v5, 0x0 ++ ++ invoke-virtual {v0, v4, v5, v2}, Landroid/database/sqlite/SQLiteDatabase;->replace(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J ++ :try_end_8a ++ .catchall {:try_start_83 .. :try_end_8a} :catchall_a2 ++ ++ move-result-wide v4 ++ ++ const-wide/16 v6, -0x1 ++ ++ cmp-long v4, v4, v6 ++ ++ if-eqz v4, :cond_a0 ++ ++ const/4 v1, 0x1 ++ ++ :goto_92 ++ :try_start_92 ++ sget-object v3, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v3}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v3 ++ ++ invoke-interface {v3}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ :try_end_9b ++ .catchall {:try_start_92 .. :try_end_9b} :catchall_75 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacyPersistenceAdapter;->closeIdleDatabase()V ++ ++ move v3, v1 ++ ++ goto :goto_71 ++ ++ :cond_a0 ++ move v1, v3 ++ ++ goto :goto_92 ++ ++ :catchall_a2 ++ move-exception v3 ++ ++ :try_start_a3 ++ sget-object v4, Landroid/privacy/PrivacyPersistenceAdapter;->sDbLock:Ljava/util/concurrent/locks/ReadWriteLock; ++ ++ invoke-interface {v4}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; ++ ++ move-result-object v4 ++ ++ invoke-interface {v4}, Ljava/util/concurrent/locks/Lock;->unlock()V ++ ++ throw v3 ++ :try_end_ad ++ .catchall {:try_start_a3 .. :try_end_ad} :catchall_75 ++.end method +diff -Npru stock-framework/smali/android/privacy/PrivacySettings$1.smali pdroid-framework/smali/android/privacy/PrivacySettings$1.smali +--- stock-framework/smali/android/privacy/PrivacySettings$1.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/PrivacySettings$1.smali 2013-08-10 20:37:42.495213442 -0700 +@@ -0,0 +1,77 @@ ++.class final Landroid/privacy/PrivacySettings$1; ++.super Ljava/lang/Object; ++.source "PrivacySettings.java" ++ ++# interfaces ++.implements Landroid/os/Parcelable$Creator; ++ ++ ++# annotations ++.annotation system Ldalvik/annotation/EnclosingClass; ++ value = Landroid/privacy/PrivacySettings; ++.end annotation ++ ++.annotation system Ldalvik/annotation/InnerClass; ++ accessFlags = 0x8 ++ name = null ++.end annotation ++ ++.annotation system Ldalvik/annotation/Signature; ++ value = { ++ "Ljava/lang/Object;", ++ "Landroid/os/Parcelable$Creator", ++ "<", ++ "Landroid/privacy/PrivacySettings;", ++ ">;" ++ } ++.end annotation ++ ++ ++# direct methods ++.method constructor ()V ++ .registers 1 ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public createFromParcel(Landroid/os/Parcel;)Landroid/privacy/PrivacySettings; ++ .registers 3 ++ ++ new-instance v0, Landroid/privacy/PrivacySettings; ++ ++ invoke-direct {v0, p1}, Landroid/privacy/PrivacySettings;->(Landroid/os/Parcel;)V ++ ++ return-object v0 ++.end method ++ ++.method public bridge synthetic createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; ++ .registers 3 ++ ++ invoke-virtual {p0, p1}, Landroid/privacy/PrivacySettings$1;->createFromParcel(Landroid/os/Parcel;)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public newArray(I)[Landroid/privacy/PrivacySettings; ++ .registers 3 ++ ++ new-array v0, p1, [Landroid/privacy/PrivacySettings; ++ ++ return-object v0 ++.end method ++ ++.method public bridge synthetic newArray(I)[Ljava/lang/Object; ++ .registers 3 ++ ++ invoke-virtual {p0, p1}, Landroid/privacy/PrivacySettings$1;->newArray(I)[Landroid/privacy/PrivacySettings; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method +diff -Npru stock-framework/smali/android/privacy/PrivacySettingsManagerService.smali pdroid-framework/smali/android/privacy/PrivacySettingsManagerService.smali +--- stock-framework/smali/android/privacy/PrivacySettingsManagerService.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/PrivacySettingsManagerService.smali 2013-08-10 20:37:42.499213442 -0700 +@@ -0,0 +1,677 @@ ++.class public final Landroid/privacy/PrivacySettingsManagerService; ++.super Landroid/privacy/IPrivacySettingsManager$Stub; ++.source "PrivacySettingsManagerService.java" ++ ++ ++# static fields ++.field static final API_VERSION:D = 1.51 ++ ++.field static final MOD_DETAILS:Ljava/lang/String; = "OpenPDroid 1.0 by FFU5y, Mateor, wbedard; forked from PDroid 2.0\nPDroid 2.0 by CollegeDev; forked from PDroid\nPDroid by Syvat\'s\nAdditional contributions by Pastime1971" ++ ++.field static final MOD_VERSION:D = 1.0 ++ ++.field private static final READ_PRIVACY_SETTINGS:Ljava/lang/String; = "android.privacy.READ_PRIVACY_SETTINGS" ++ ++.field private static final TAG:Ljava/lang/String; = "PrivacySettingsManagerService" ++ ++.field private static final WRITE_PRIVACY_SETTINGS:Ljava/lang/String; = "android.privacy.WRITE_PRIVACY_SETTINGS" ++ ++.field public static obs:Landroid/privacy/PrivacyFileObserver; ++ ++.field private static sendNotifications:Z ++ ++ ++# instance fields ++.field private bootCompleted:Z ++ ++.field private context:Landroid/content/Context; ++ ++.field private enabled:Z ++ ++.field private notificationsEnabled:Z ++ ++.field private persistenceAdapter:Landroid/privacy/PrivacyPersistenceAdapter; ++ ++ ++# direct methods ++.method static constructor ()V ++ .registers 1 ++ ++ const/4 v0, 0x1 ++ ++ sput-boolean v0, Landroid/privacy/PrivacySettingsManagerService;->sendNotifications:Z ++ ++ return-void ++.end method ++ ++.method public constructor (Landroid/content/Context;)V ++ .registers 5 ++ ++ invoke-direct {p0}, Landroid/privacy/IPrivacySettingsManager$Stub;->()V ++ ++ const-string v0, "PrivacySettingsManagerService" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "PrivacySettingsManagerService - initializing for package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " UID: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iput-object p1, p0, Landroid/privacy/PrivacySettingsManagerService;->context:Landroid/content/Context; ++ ++ new-instance v0, Landroid/privacy/PrivacyPersistenceAdapter; ++ ++ invoke-direct {v0, p1}, Landroid/privacy/PrivacyPersistenceAdapter;->(Landroid/content/Context;)V ++ ++ iput-object v0, p0, Landroid/privacy/PrivacySettingsManagerService;->persistenceAdapter:Landroid/privacy/PrivacyPersistenceAdapter; ++ ++ new-instance v0, Landroid/privacy/PrivacyFileObserver; ++ ++ const-string v1, "/data/system/privacy" ++ ++ invoke-direct {v0, v1, p0}, Landroid/privacy/PrivacyFileObserver;->(Ljava/lang/String;Landroid/privacy/PrivacySettingsManagerService;)V ++ ++ sput-object v0, Landroid/privacy/PrivacySettingsManagerService;->obs:Landroid/privacy/PrivacyFileObserver; ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettingsManagerService;->persistenceAdapter:Landroid/privacy/PrivacyPersistenceAdapter; ++ ++ const-string v1, "enabled" ++ ++ invoke-virtual {v0, v1}, Landroid/privacy/PrivacyPersistenceAdapter;->getValue(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ const-string v1, "1" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v0 ++ ++ iput-boolean v0, p0, Landroid/privacy/PrivacySettingsManagerService;->enabled:Z ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettingsManagerService;->persistenceAdapter:Landroid/privacy/PrivacyPersistenceAdapter; ++ ++ const-string/jumbo v1, "notifications_enabled" ++ ++ invoke-virtual {v0, v1}, Landroid/privacy/PrivacyPersistenceAdapter;->getValue(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ const-string v1, "1" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v0 ++ ++ iput-boolean v0, p0, Landroid/privacy/PrivacySettingsManagerService;->notificationsEnabled:Z ++ ++ const/4 v0, 0x0 ++ ++ iput-boolean v0, p0, Landroid/privacy/PrivacySettingsManagerService;->bootCompleted:Z ++ ++ return-void ++.end method ++ ++.method private checkCallerCanReadOrThrow()V ++ .registers 4 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v0 ++ ++ const/16 v1, 0x3e8 ++ ++ if-ne v0, v1, :cond_9 ++ ++ :goto_8 ++ return-void ++ ++ :cond_9 ++ iget-object v0, p0, Landroid/privacy/PrivacySettingsManagerService;->context:Landroid/content/Context; ++ ++ const-string v1, "android.privacy.READ_PRIVACY_SETTINGS" ++ ++ const-string v2, "Requires READ_PRIVACY_SETTINGS" ++ ++ invoke-virtual {v0, v1, v2}, Landroid/content/Context;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V ++ ++ goto :goto_8 ++.end method ++ ++.method private checkCallerCanReadSettings()Z ++ .registers 3 ++ ++ :try_start_0 ++ invoke-direct {p0}, Landroid/privacy/PrivacySettingsManagerService;->checkCallerCanReadOrThrow()V ++ :try_end_3 ++ .catch Ljava/lang/SecurityException; {:try_start_0 .. :try_end_3} :catch_5 ++ ++ const/4 v1, 0x1 ++ ++ :goto_4 ++ return v1 ++ ++ :catch_5 ++ move-exception v0 ++ ++ const/4 v1, 0x0 ++ ++ goto :goto_4 ++.end method ++ ++.method private checkCallerCanWriteOrThrow()V ++ .registers 4 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettingsManagerService;->context:Landroid/content/Context; ++ ++ const-string v1, "android.privacy.WRITE_PRIVACY_SETTINGS" ++ ++ const-string v2, "Requires WRITE_PRIVACY_SETTINGS" ++ ++ invoke-virtual {v0, v1, v2}, Landroid/content/Context;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V ++ ++ return-void ++.end method ++ ++.method private checkCallerCanWriteSettings()Z ++ .registers 3 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ :try_start_0 ++ invoke-direct {p0}, Landroid/privacy/PrivacySettingsManagerService;->checkCallerCanWriteOrThrow()V ++ :try_end_3 ++ .catch Ljava/lang/SecurityException; {:try_start_0 .. :try_end_3} :catch_5 ++ ++ const/4 v1, 0x1 ++ ++ :goto_4 ++ return v1 ++ ++ :catch_5 ++ move-exception v0 ++ ++ const/4 v1, 0x0 ++ ++ goto :goto_4 ++.end method ++ ++ ++# virtual methods ++.method public addObserver(Ljava/lang/String;)V ++ .registers 3 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacySettingsManagerService;->checkCallerCanWriteOrThrow()V ++ ++ sget-object v0, Landroid/privacy/PrivacySettingsManagerService;->obs:Landroid/privacy/PrivacyFileObserver; ++ ++ invoke-virtual {v0, p1}, Landroid/privacy/PrivacyFileObserver;->addObserver(Ljava/lang/String;)V ++ ++ return-void ++.end method ++ ++.method public deleteSettings(Ljava/lang/String;)Z ++ .registers 7 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ const/4 v4, 0x1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ const/16 v3, 0x3e8 ++ ++ if-eq v2, v3, :cond_c ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacySettingsManagerService;->checkCallerCanWriteOrThrow()V ++ ++ :cond_c ++ iget-object v2, p0, Landroid/privacy/PrivacySettingsManagerService;->persistenceAdapter:Landroid/privacy/PrivacyPersistenceAdapter; ++ ++ invoke-virtual {v2, p1}, Landroid/privacy/PrivacyPersistenceAdapter;->deleteSettings(Ljava/lang/String;)Z ++ ++ move-result v1 ++ ++ new-instance v2, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v2}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "/data/system/privacy/" ++ ++ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ new-instance v2, Ljava/io/File; ++ ++ invoke-direct {v2, v0}, Ljava/io/File;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v2}, Ljava/io/File;->exists()Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_38 ++ ++ if-ne v1, v4, :cond_38 ++ ++ sget-object v2, Landroid/privacy/PrivacySettingsManagerService;->obs:Landroid/privacy/PrivacyFileObserver; ++ ++ invoke-virtual {v2, v0}, Landroid/privacy/PrivacyFileObserver;->addObserver(Ljava/lang/String;)V ++ ++ :cond_37 ++ :goto_37 ++ return v1 ++ ++ :cond_38 ++ if-ne v1, v4, :cond_37 ++ ++ sget-object v2, Landroid/privacy/PrivacySettingsManagerService;->obs:Landroid/privacy/PrivacyFileObserver; ++ ++ iget-object v2, v2, Landroid/privacy/PrivacyFileObserver;->children:Ljava/util/HashMap; ++ ++ invoke-virtual {v2, v0}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; ++ ++ goto :goto_37 ++.end method ++ ++.method public getSettings(Ljava/lang/String;)Landroid/privacy/PrivacySettings; ++ .registers 4 ++ ++ iget-boolean v0, p0, Landroid/privacy/PrivacySettingsManagerService;->enabled:Z ++ ++ if-nez v0, :cond_2e ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettingsManagerService;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ const-string v1, "com.privacy.pdroid" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_2e ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettingsManagerService;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ const-string v1, "com.privacy.pdroid.Addon" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_2e ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettingsManagerService;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ const-string v1, "com.android.privacy.pdroid.extension" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_35 ++ ++ :cond_2e ++ iget-object v0, p0, Landroid/privacy/PrivacySettingsManagerService;->persistenceAdapter:Landroid/privacy/PrivacyPersistenceAdapter; ++ ++ invoke-virtual {v0, p1}, Landroid/privacy/PrivacyPersistenceAdapter;->getSettings(Ljava/lang/String;)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v0 ++ ++ :goto_34 ++ return-object v0 ++ ++ :cond_35 ++ const/4 v0, 0x0 ++ ++ goto :goto_34 ++.end method ++ ++.method public notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ .registers 8 ++ ++ iget-boolean v1, p0, Landroid/privacy/PrivacySettingsManagerService;->bootCompleted:Z ++ ++ if-eqz v1, :cond_38 ++ ++ iget-boolean v1, p0, Landroid/privacy/PrivacySettingsManagerService;->notificationsEnabled:Z ++ ++ if-eqz v1, :cond_38 ++ ++ sget-boolean v1, Landroid/privacy/PrivacySettingsManagerService;->sendNotifications:Z ++ ++ if-eqz v1, :cond_38 ++ ++ new-instance v0, Landroid/content/Intent; ++ ++ invoke-direct {v0}, Landroid/content/Intent;->()V ++ ++ const-string v1, "com.privacy.pdroid.PRIVACY_NOTIFICATION" ++ ++ invoke-virtual {v0, v1}, Landroid/content/Intent;->setAction(Ljava/lang/String;)Landroid/content/Intent; ++ ++ const-string/jumbo v1, "packageName" ++ ++ invoke-virtual {v0, v1, p1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent; ++ ++ const-string/jumbo v1, "uid" ++ ++ const/4 v2, -0x1 ++ ++ invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent; ++ ++ const-string v1, "accessMode" ++ ++ invoke-virtual {v0, v1, p2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;B)Landroid/content/Intent; ++ ++ const-string v1, "dataType" ++ ++ invoke-virtual {v0, v1, p3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent; ++ ++ const-string/jumbo v1, "output" ++ ++ invoke-virtual {v0, v1, p4}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent; ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettingsManagerService;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1, v0}, Landroid/content/Context;->sendBroadcast(Landroid/content/Intent;)V ++ ++ :cond_38 ++ return-void ++.end method ++ ++.method public purgeSettings()Z ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettingsManagerService;->persistenceAdapter:Landroid/privacy/PrivacyPersistenceAdapter; ++ ++ invoke-virtual {v0}, Landroid/privacy/PrivacyPersistenceAdapter;->purgeSettings()Z ++ ++ move-result v0 ++ ++ return v0 ++.end method ++ ++.method public registerObservers()V ++ .registers 3 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacySettingsManagerService;->checkCallerCanWriteOrThrow()V ++ ++ new-instance v0, Landroid/privacy/PrivacyFileObserver; ++ ++ const-string v1, "/data/system/privacy" ++ ++ invoke-direct {v0, v1, p0}, Landroid/privacy/PrivacyFileObserver;->(Ljava/lang/String;Landroid/privacy/PrivacySettingsManagerService;)V ++ ++ sput-object v0, Landroid/privacy/PrivacySettingsManagerService;->obs:Landroid/privacy/PrivacyFileObserver; ++ ++ return-void ++.end method ++ ++.method public saveSettings(Landroid/privacy/PrivacySettings;)Z ++ .registers 6 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ const-string v1, "PrivacySettingsManagerService" ++ ++ new-instance v2, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v2}, Ljava/lang/StringBuilder;->()V ++ ++ const-string/jumbo v3, "saveSettings - checking if caller (UID: " ++ ++ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ const-string v3, ") has sufficient permissions" ++ ++ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v1 ++ ++ const/16 v2, 0x3e8 ++ ++ if-eq v1, v2, :cond_2e ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacySettingsManagerService;->checkCallerCanWriteOrThrow()V ++ ++ :cond_2e ++ const-string v1, "PrivacySettingsManagerService" ++ ++ new-instance v2, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v2}, Ljava/lang/StringBuilder;->()V ++ ++ const-string/jumbo v3, "saveSettings - " ++ ++ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettingsManagerService;->persistenceAdapter:Landroid/privacy/PrivacyPersistenceAdapter; ++ ++ invoke-virtual {v1, p1}, Landroid/privacy/PrivacyPersistenceAdapter;->saveSettings(Landroid/privacy/PrivacySettings;)Z ++ ++ move-result v0 ++ ++ const/4 v1, 0x1 ++ ++ if-ne v0, v1, :cond_59 ++ ++ sget-object v1, Landroid/privacy/PrivacySettingsManagerService;->obs:Landroid/privacy/PrivacyFileObserver; ++ ++ invoke-virtual {p1}, Landroid/privacy/PrivacySettings;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Landroid/privacy/PrivacyFileObserver;->addObserver(Ljava/lang/String;)V ++ ++ :cond_59 ++ return v0 ++.end method ++ ++.method public setBootCompleted()V ++ .registers 2 ++ ++ const/4 v0, 0x1 ++ ++ iput-boolean v0, p0, Landroid/privacy/PrivacySettingsManagerService;->bootCompleted:Z ++ ++ return-void ++.end method ++ ++.method public setEnabled(Z)Z ++ .registers 6 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ const/4 v1, 0x1 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacySettingsManagerService;->checkCallerCanWriteOrThrow()V ++ ++ if-eqz p1, :cond_15 ++ ++ const-string v0, "1" ++ ++ :goto_8 ++ iget-object v2, p0, Landroid/privacy/PrivacySettingsManagerService;->persistenceAdapter:Landroid/privacy/PrivacyPersistenceAdapter; ++ ++ const-string v3, "enabled" ++ ++ invoke-virtual {v2, v3, v0}, Landroid/privacy/PrivacyPersistenceAdapter;->setValue(Ljava/lang/String;Ljava/lang/String;)Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_18 ++ ++ iput-boolean v1, p0, Landroid/privacy/PrivacySettingsManagerService;->enabled:Z ++ ++ :goto_14 ++ return v1 ++ ++ :cond_15 ++ const-string v0, "0" ++ ++ goto :goto_8 ++ ++ :cond_18 ++ const/4 v1, 0x0 ++ ++ goto :goto_14 ++.end method ++ ++.method public setNotificationsEnabled(Z)Z ++ .registers 6 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ const/4 v1, 0x1 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacySettingsManagerService;->checkCallerCanWriteOrThrow()V ++ ++ if-eqz p1, :cond_18 ++ ++ const-string v0, "1" ++ ++ :goto_8 ++ iget-object v2, p0, Landroid/privacy/PrivacySettingsManagerService;->persistenceAdapter:Landroid/privacy/PrivacyPersistenceAdapter; ++ ++ const-string/jumbo v3, "notifications_enabled" ++ ++ invoke-virtual {v2, v3, v0}, Landroid/privacy/PrivacyPersistenceAdapter;->setValue(Ljava/lang/String;Ljava/lang/String;)Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_1b ++ ++ iput-boolean v1, p0, Landroid/privacy/PrivacySettingsManagerService;->notificationsEnabled:Z ++ ++ iput-boolean v1, p0, Landroid/privacy/PrivacySettingsManagerService;->bootCompleted:Z ++ ++ :goto_17 ++ return v1 ++ ++ :cond_18 ++ const-string v0, "0" ++ ++ goto :goto_8 ++ ++ :cond_1b ++ const/4 v1, 0x0 ++ ++ goto :goto_17 ++.end method +diff -Npru stock-framework/smali/android/privacy/PrivacySettingsManager.smali pdroid-framework/smali/android/privacy/PrivacySettingsManager.smali +--- stock-framework/smali/android/privacy/PrivacySettingsManager.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/PrivacySettingsManager.smali 2013-08-10 20:37:42.499213442 -0700 +@@ -0,0 +1,528 @@ ++.class public final Landroid/privacy/PrivacySettingsManager; ++.super Ljava/lang/Object; ++.source "PrivacySettingsManager.java" ++ ++ ++# static fields ++.field public static final ACTION_PRIVACY_NOTIFICATION:Ljava/lang/String; = "com.privacy.pdroid.PRIVACY_NOTIFICATION" ++ ++.field public static final ACTION_PRIVACY_NOTIFICATION_ADDON:Ljava/lang/String; = "com.privacy.pdroid.PRIVACY_NOTIFICATION_ADDON" ++ ++.field private static final TAG:Ljava/lang/String; = "PrivacySettingsManager" ++ ++ ++# instance fields ++.field private service:Landroid/privacy/IPrivacySettingsManager; ++ ++ ++# direct methods ++.method public constructor (Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ .registers 3 ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ iput-object p2, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public addObserver(Ljava/lang/String;)V ++ .registers 5 ++ ++ :try_start_0 ++ iget-object v1, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ if-eqz v1, :cond_a ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ invoke-interface {v1, p1}, Landroid/privacy/IPrivacySettingsManager;->addObserver(Ljava/lang/String;)V ++ ++ :goto_9 ++ return-void ++ ++ :cond_a ++ const-string v1, "PrivacySettingsManager" ++ ++ const-string v2, "PrivacySettingsManager:addObserver: PrivacySettingsManagerService is null" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_11 ++ .catch Landroid/os/RemoteException; {:try_start_0 .. :try_end_11} :catch_12 ++ ++ goto :goto_9 ++ ++ :catch_12 ++ move-exception v0 ++ ++ const-string v1, "PrivacySettingsManager" ++ ++ const-string v2, "RemoteException in addObserver: " ++ ++ invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto :goto_9 ++.end method ++ ++.method public deleteSettings(Ljava/lang/String;)Z ++ .registers 6 ++ ++ const/4 v1, 0x0 ++ ++ :try_start_1 ++ iget-object v2, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ if-eqz v2, :cond_c ++ ++ iget-object v2, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ invoke-interface {v2, p1}, Landroid/privacy/IPrivacySettingsManager;->deleteSettings(Ljava/lang/String;)Z ++ ++ move-result v1 ++ ++ :goto_b ++ return v1 ++ ++ :cond_c ++ const-string v2, "PrivacySettingsManager" ++ ++ const-string v3, "PrivacySettingsManager:deleteSettings: PrivacySettingsManagerService is null" ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_13 ++ .catch Landroid/os/RemoteException; {:try_start_1 .. :try_end_13} :catch_14 ++ ++ goto :goto_b ++ ++ :catch_14 ++ move-exception v0 ++ ++ const-string v2, "PrivacySettingsManager" ++ ++ const-string v3, "RemoteException in deleteSettings: " ++ ++ invoke-static {v2, v3, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto :goto_b ++.end method ++ ++.method public deleteSettings(Ljava/lang/String;I)Z ++ .registers 4 ++ .annotation runtime Ljava/lang/Deprecated; ++ .end annotation ++ ++ invoke-virtual {p0, p1}, Landroid/privacy/PrivacySettingsManager;->deleteSettings(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ return v0 ++.end method ++ ++.method public getApiVersion()D ++ .registers 3 ++ ++ const-wide v0, 0x3ff828f5c28f5c29L ++ ++ return-wide v0 ++.end method ++ ++.method public getModDetails()Ljava/lang/String; ++ .registers 2 ++ ++ const-string v0, "OpenPDroid 1.0 by FFU5y, Mateor, wbedard; forked from PDroid 2.0\nPDroid 2.0 by CollegeDev; forked from PDroid\nPDroid by Syvat\'s\nAdditional contributions by Pastime1971" ++ ++ return-object v0 ++.end method ++ ++.method public getModVersion()D ++ .registers 3 ++ ++ const-wide/high16 v0, 0x3ff0 ++ ++ return-wide v0 ++.end method ++ ++.method public getSettings(Ljava/lang/String;)Landroid/privacy/PrivacySettings; ++ .registers 6 ++ ++ const/4 v1, 0x0 ++ ++ :try_start_1 ++ iget-object v2, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ if-eqz v2, :cond_c ++ ++ iget-object v2, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ invoke-interface {v2, p1}, Landroid/privacy/IPrivacySettingsManager;->getSettings(Ljava/lang/String;)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v1 ++ ++ :goto_b ++ return-object v1 ++ ++ :cond_c ++ const-string v2, "PrivacySettingsManager" ++ ++ const-string v3, "getSettings - PrivacySettingsManagerService is null" ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_13 ++ .catch Landroid/os/RemoteException; {:try_start_1 .. :try_end_13} :catch_14 ++ ++ goto :goto_b ++ ++ :catch_14 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Landroid/os/RemoteException;->printStackTrace()V ++ ++ goto :goto_b ++.end method ++ ++.method public getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ .registers 4 ++ .annotation runtime Ljava/lang/Deprecated; ++ .end annotation ++ ++ invoke-virtual {p0, p1}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public getVersion()D ++ .registers 3 ++ .annotation runtime Ljava/lang/Deprecated; ++ .end annotation ++ ++ const-wide v0, 0x3ff828f5c28f5c29L ++ ++ return-wide v0 ++.end method ++ ++.method public isServiceAvailable()Z ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ if-eqz v0, :cond_6 ++ ++ const/4 v0, 0x1 ++ ++ :goto_5 ++ return v0 ++ ++ :cond_6 ++ const/4 v0, 0x0 ++ ++ goto :goto_5 ++.end method ++ ++.method public notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ .registers 8 ++ ++ :try_start_0 ++ iget-object v1, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ if-eqz v1, :cond_a ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ invoke-interface {v1, p1, p2, p3, p4}, Landroid/privacy/IPrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ ++ :goto_9 ++ return-void ++ ++ :cond_a ++ const-string v1, "PrivacySettingsManager" ++ ++ const-string v2, "PrivacySettingsManager:notification: PrivacySettingsManagerService is null" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_11 ++ .catch Landroid/os/RemoteException; {:try_start_0 .. :try_end_11} :catch_12 ++ ++ goto :goto_9 ++ ++ :catch_12 ++ move-exception v0 ++ ++ const-string v1, "PrivacySettingsManager" ++ ++ const-string v2, "RemoteException in notification: " ++ ++ invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto :goto_9 ++.end method ++ ++.method public notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ .registers 6 ++ .annotation runtime Ljava/lang/Deprecated; ++ .end annotation ++ ++ invoke-virtual {p0, p1, p2, p3, p4}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ ++ return-void ++.end method ++ ++.method public notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ .registers 7 ++ .annotation runtime Ljava/lang/Deprecated; ++ .end annotation ++ ++ invoke-virtual {p0, p1, p3, p4, p5}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;)V ++ ++ return-void ++.end method ++ ++.method public purgeSettings()Z ++ .registers 4 ++ ++ :try_start_0 ++ iget-object v1, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ if-eqz v1, :cond_b ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ invoke-interface {v1}, Landroid/privacy/IPrivacySettingsManager;->purgeSettings()Z ++ ++ move-result v1 ++ ++ :goto_a ++ return v1 ++ ++ :cond_b ++ const-string v1, "PrivacySettingsManager" ++ ++ const-string v2, "PrivacySettingsManager:purgeSettings: PrivacySettingsManagerService is null" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_12 ++ .catch Landroid/os/RemoteException; {:try_start_0 .. :try_end_12} :catch_14 ++ ++ :goto_12 ++ const/4 v1, 0x0 ++ ++ goto :goto_a ++ ++ :catch_14 ++ move-exception v0 ++ ++ const-string v1, "PrivacySettingsManager" ++ ++ const-string v2, "RemoteException in purgeSettings: " ++ ++ invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto :goto_12 ++.end method ++ ++.method public registerObservers()V ++ .registers 4 ++ ++ :try_start_0 ++ iget-object v1, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ if-eqz v1, :cond_a ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ invoke-interface {v1}, Landroid/privacy/IPrivacySettingsManager;->registerObservers()V ++ ++ :goto_9 ++ return-void ++ ++ :cond_a ++ const-string v1, "PrivacySettingsManager" ++ ++ const-string v2, "PrivacySettingsManager:registerObservers: PrivacySettingsManagerService is null" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_11 ++ .catch Landroid/os/RemoteException; {:try_start_0 .. :try_end_11} :catch_12 ++ ++ goto :goto_9 ++ ++ :catch_12 ++ move-exception v0 ++ ++ const-string v1, "PrivacySettingsManager" ++ ++ const-string v2, "RemoteException in registerObservers: " ++ ++ invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto :goto_9 ++.end method ++ ++.method public saveSettings(Landroid/privacy/PrivacySettings;)Z ++ .registers 6 ++ ++ const/4 v1, 0x0 ++ ++ :try_start_1 ++ iget-object v2, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ if-eqz v2, :cond_c ++ ++ iget-object v2, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ invoke-interface {v2, p1}, Landroid/privacy/IPrivacySettingsManager;->saveSettings(Landroid/privacy/PrivacySettings;)Z ++ ++ move-result v1 ++ ++ :goto_b ++ return v1 ++ ++ :cond_c ++ const-string v2, "PrivacySettingsManager" ++ ++ const-string/jumbo v3, "saveSettings - PrivacySettingsManagerService is null" ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_14 ++ .catch Landroid/os/RemoteException; {:try_start_1 .. :try_end_14} :catch_15 ++ ++ goto :goto_b ++ ++ :catch_15 ++ move-exception v0 ++ ++ const-string v2, "PrivacySettingsManager" ++ ++ const-string v3, "RemoteException in saveSettings: " ++ ++ invoke-static {v2, v3, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto :goto_b ++.end method ++ ++.method public setBootCompleted()V ++ .registers 4 ++ ++ :try_start_0 ++ iget-object v1, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ if-eqz v1, :cond_a ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ invoke-interface {v1}, Landroid/privacy/IPrivacySettingsManager;->setBootCompleted()V ++ ++ :goto_9 ++ return-void ++ ++ :cond_a ++ const-string v1, "PrivacySettingsManager" ++ ++ const-string v2, "PrivacySettingsManager:setBootCompleted: PrivacySettingsManagerService is null" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_11 ++ .catch Landroid/os/RemoteException; {:try_start_0 .. :try_end_11} :catch_12 ++ ++ goto :goto_9 ++ ++ :catch_12 ++ move-exception v0 ++ ++ const-string v1, "PrivacySettingsManager" ++ ++ const-string v2, "RemoteException in setBootCompleted: " ++ ++ invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto :goto_9 ++.end method ++ ++.method public setEnabled(Z)Z ++ .registers 5 ++ ++ :try_start_0 ++ iget-object v1, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ if-eqz v1, :cond_b ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ invoke-interface {v1, p1}, Landroid/privacy/IPrivacySettingsManager;->setEnabled(Z)Z ++ ++ move-result v1 ++ ++ :goto_a ++ return v1 ++ ++ :cond_b ++ const-string v1, "PrivacySettingsManager" ++ ++ const-string v2, "PrivacySettingsManager:setEnabled: PrivacySettingsManagerService is null" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_12 ++ .catch Landroid/os/RemoteException; {:try_start_0 .. :try_end_12} :catch_14 ++ ++ :goto_12 ++ const/4 v1, 0x0 ++ ++ goto :goto_a ++ ++ :catch_14 ++ move-exception v0 ++ ++ const-string v1, "PrivacySettingsManager" ++ ++ const-string v2, "RemoteException in setEnabled: " ++ ++ invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto :goto_12 ++.end method ++ ++.method public setNotificationsEnabled(Z)Z ++ .registers 5 ++ ++ :try_start_0 ++ iget-object v1, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ if-eqz v1, :cond_b ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettingsManager;->service:Landroid/privacy/IPrivacySettingsManager; ++ ++ invoke-interface {v1, p1}, Landroid/privacy/IPrivacySettingsManager;->setNotificationsEnabled(Z)Z ++ ++ move-result v1 ++ ++ :goto_a ++ return v1 ++ ++ :cond_b ++ const-string v1, "PrivacySettingsManager" ++ ++ const-string v2, "PrivacySettingsManager:setNotificationsEnabled: PrivacySettingsManagerService is null" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_12 ++ .catch Landroid/os/RemoteException; {:try_start_0 .. :try_end_12} :catch_14 ++ ++ :goto_12 ++ const/4 v1, 0x0 ++ ++ goto :goto_a ++ ++ :catch_14 ++ move-exception v0 ++ ++ const-string v1, "PrivacySettingsManager" ++ ++ const-string v2, "RemoteException in setNotificationsEnabled: " ++ ++ invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto :goto_12 ++.end method +diff -Npru stock-framework/smali/android/privacy/PrivacySettings.smali pdroid-framework/smali/android/privacy/PrivacySettings.smali +--- stock-framework/smali/android/privacy/PrivacySettings.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/PrivacySettings.smali 2013-08-10 20:37:42.499213442 -0700 +@@ -0,0 +1,3295 @@ ++.class public final Landroid/privacy/PrivacySettings; ++.super Landroid/privacy/PrivacySettingsStub; ++.source "PrivacySettings.java" ++ ++# interfaces ++.implements Landroid/os/Parcelable; ++ ++ ++# static fields ++.field public static final CREATOR:Landroid/os/Parcelable$Creator; = null ++ .annotation system Ldalvik/annotation/Signature; ++ value = { ++ "Landroid/os/Parcelable$Creator", ++ "<", ++ "Landroid/privacy/PrivacySettings;", ++ ">;" ++ } ++ .end annotation ++.end field ++ ++.field public static final CUSTOM:B = 0x2t ++ ++.field public static final DATA_ACCOUNTS_LIST:Ljava/lang/String; = "accountsList" ++ ++.field public static final DATA_ANDROID_ID:Ljava/lang/String; = "android_id" ++ ++.field public static final DATA_AUTH_TOKENS:Ljava/lang/String; = "authTokens" ++ ++.field public static final DATA_BOOKMARKS:Ljava/lang/String; = "bookmarks" ++ ++.field public static final DATA_CALENDAR:Ljava/lang/String; = "calendar" ++ ++.field public static final DATA_CALL_LOG:Ljava/lang/String; = "callLog" ++ ++.field public static final DATA_CAMERA:Ljava/lang/String; = "camera" ++ ++.field public static final DATA_CONTACTS:Ljava/lang/String; = "contacts" ++ ++.field public static final DATA_DEVICE_ID:Ljava/lang/String; = "deviceID" ++ ++.field public static final DATA_ICC_ACCESS:Ljava/lang/String; = "iccAccess" ++ ++.field public static final DATA_INCOMING_CALL:Ljava/lang/String; = "incomingCall" ++ ++.field public static final DATA_INTENT_BOOT_COMPLETED:Ljava/lang/String; = "intentBootCompleted" ++ ++.field public static final DATA_IP_TABLES:Ljava/lang/String; = "iptables" ++ ++.field public static final DATA_LINE_1_NUMBER:Ljava/lang/String; = "line1Number" ++ ++.field public static final DATA_LOCATION_GPS:Ljava/lang/String; = "locationGPS" ++ ++.field public static final DATA_LOCATION_NETWORK:Ljava/lang/String; = "locationNetwork" ++ ++.field public static final DATA_MMS:Ljava/lang/String; = "mms" ++ ++.field public static final DATA_MMS_SMS:Ljava/lang/String; = "mmsSms" ++ ++.field public static final DATA_NETWORK_INFO_CURRENT:Ljava/lang/String; = "networkInfoCurrent" ++ ++.field public static final DATA_NETWORK_INFO_SIM:Ljava/lang/String; = "networkInfoSIM" ++ ++.field public static final DATA_OUTGOING_CALL:Ljava/lang/String; = "outgoingCall" ++ ++.field public static final DATA_PHONE_CALL:Ljava/lang/String; = "phoneCall" ++ ++.field public static final DATA_RECORD_AUDIO:Ljava/lang/String; = "recordAudio" ++ ++.field public static final DATA_SEND_MMS:Ljava/lang/String; = "sendMms" ++ ++.field public static final DATA_SIM_SERIAL:Ljava/lang/String; = "simSerial" ++ ++.field public static final DATA_SMS:Ljava/lang/String; = "sms" ++ ++.field public static final DATA_SMS_SEND:Ljava/lang/String; = "SmsSend" ++ ++.field public static final DATA_SUBSCRIBER_ID:Ljava/lang/String; = "subscriberID" ++ ++.field public static final DATA_SWITCH_CONNECTIVITY:Ljava/lang/String; = "switchconnectivity" ++ ++.field public static final DATA_SWITCH_WIFI_STATE:Ljava/lang/String; = "switchWifiState" ++ ++.field public static final DATA_SYSTEM_LOGS:Ljava/lang/String; = "systemLogs" ++ ++.field public static final DATA_WIFI_INFO:Ljava/lang/String; = "wifiInfo" ++ ++.field public static final EMPTY:B = 0x1t ++ ++.field public static final ID_PATTERN:[Ljava/lang/String; = null ++ ++.field public static final RANDOM:B = 0x3t ++ ++.field public static final REAL:B = 0x0t ++ ++.field public static final SETTING_NOTIFY_OFF:B = 0x0t ++ ++.field public static final SETTING_NOTIFY_ON:B = 0x1t ++ ++ ++# instance fields ++.field private final _id:Ljava/lang/Integer; ++ ++.field private accountsAuthTokensSetting:B ++ ++.field private accountsSetting:B ++ ++.field private addOnManagementSetting:B ++ ++.field private allowedContacts:[I ++ ++.field private androidID:Ljava/lang/String; ++ ++.field private androidIdSetting:B ++ ++.field private bookmarksSetting:B ++ ++.field private calendarSetting:B ++ ++.field private callLogSetting:B ++ ++.field private cameraSetting:B ++ ++.field private contactsSetting:B ++ ++.field private deviceId:Ljava/lang/String; ++ ++.field private deviceIdSetting:B ++ ++.field private forceOnlineState:B ++ ++.field private iccAccessSetting:B ++ ++.field private incomingCallsSetting:B ++ ++.field private intentBootCompletedSetting:B ++ ++.field private ipTableProtectSetting:B ++ ++.field private line1Number:Ljava/lang/String; ++ ++.field private line1NumberSetting:B ++ ++.field private locationGpsLat:Ljava/lang/String; ++ ++.field private locationGpsLon:Ljava/lang/String; ++ ++.field private locationGpsSetting:B ++ ++.field private locationNetworkLat:Ljava/lang/String; ++ ++.field private locationNetworkLon:Ljava/lang/String; ++ ++.field private locationNetworkSetting:B ++ ++.field private mmsSetting:B ++ ++.field private networkInfoSetting:B ++ ++.field private notificationSetting:B ++ ++.field private outgoingCallsSetting:B ++ ++.field private packageName:Ljava/lang/String; ++ ++.field private phoneCallSetting:B ++ ++.field private recordAudioSetting:B ++ ++.field private sendMmsSetting:B ++ ++.field private simInfoSetting:B ++ ++.field private simSerialNumber:Ljava/lang/String; ++ ++.field private simSerialNumberSetting:B ++ ++.field private smsSendSetting:B ++ ++.field private smsSetting:B ++ ++.field private subscriberId:Ljava/lang/String; ++ ++.field private subscriberIdSetting:B ++ ++.field private switchConnectivitySetting:B ++ ++.field private switchWifiStateSetting:B ++ ++.field private systemLogsSetting:B ++ ++.field private uid:I ++ ++.field private wifiInfoSetting:B ++ ++ ++# direct methods ++.method static constructor ()V ++ .registers 3 ++ ++ const/16 v0, 0x10 ++ ++ new-array v0, v0, [Ljava/lang/String; ++ ++ const/4 v1, 0x0 ++ ++ const-string v2, "0" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x1 ++ ++ const-string v2, "1" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x2 ++ ++ const-string v2, "2" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x3 ++ ++ const-string v2, "3" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x4 ++ ++ const-string v2, "4" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x5 ++ ++ const-string v2, "5" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x6 ++ ++ const-string v2, "6" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x7 ++ ++ const-string v2, "7" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x8 ++ ++ const-string v2, "8" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x9 ++ ++ const-string v2, "9" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0xa ++ ++ const-string v2, "a" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0xb ++ ++ const-string v2, "b" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0xc ++ ++ const-string v2, "c" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0xd ++ ++ const-string v2, "d" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0xe ++ ++ const-string v2, "e" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0xf ++ ++ const-string v2, "f" ++ ++ aput-object v2, v0, v1 ++ ++ sput-object v0, Landroid/privacy/PrivacySettings;->ID_PATTERN:[Ljava/lang/String; ++ ++ new-instance v0, Landroid/privacy/PrivacySettings$1; ++ ++ invoke-direct {v0}, Landroid/privacy/PrivacySettings$1;->()V ++ ++ sput-object v0, Landroid/privacy/PrivacySettings;->CREATOR:Landroid/os/Parcelable$Creator; ++ ++ return-void ++.end method ++ ++.method public constructor (Landroid/os/Parcel;)V ++ .registers 4 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacySettingsStub;->()V ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readInt()I ++ ++ move-result v0 ++ ++ const/4 v1, -0x1 ++ ++ if-ne v0, v1, :cond_122 ++ ++ const/4 v1, 0x0 ++ ++ :goto_b ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->_id:Ljava/lang/Integer; ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->packageName:Ljava/lang/String; ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readInt()I ++ ++ move-result v1 ++ ++ iput v1, p0, Landroid/privacy/PrivacySettings;->uid:I ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->deviceIdSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->deviceId:Ljava/lang/String; ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->line1NumberSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->line1Number:Ljava/lang/String; ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->locationGpsSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->locationGpsLat:Ljava/lang/String; ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->locationGpsLon:Ljava/lang/String; ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->locationNetworkSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->locationNetworkLat:Ljava/lang/String; ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->locationNetworkLon:Ljava/lang/String; ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->networkInfoSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->simInfoSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->simSerialNumberSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->simSerialNumber:Ljava/lang/String; ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->subscriberIdSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->subscriberId:Ljava/lang/String; ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->accountsSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->accountsAuthTokensSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->outgoingCallsSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->incomingCallsSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->contactsSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->calendarSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->mmsSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->smsSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->callLogSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->bookmarksSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->systemLogsSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->notificationSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->intentBootCompletedSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->cameraSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->recordAudioSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->createIntArray()[I ++ ++ move-result-object v1 ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->allowedContacts:[I ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->smsSendSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->phoneCallSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->ipTableProtectSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->iccAccessSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->addOnManagementSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->androidIdSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->androidID:Ljava/lang/String; ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->wifiInfoSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->switchConnectivitySetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->sendMmsSetting:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->forceOnlineState:B ++ ++ invoke-virtual {p1}, Landroid/os/Parcel;->readByte()B ++ ++ move-result v1 ++ ++ iput-byte v1, p0, Landroid/privacy/PrivacySettings;->switchWifiStateSetting:B ++ ++ return-void ++ ++ :cond_122 ++ invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ ++ move-result-object v1 ++ ++ goto/16 :goto_b ++.end method ++ ++.method public constructor (Ljava/lang/Integer;Ljava/lang/String;I)V ++ .registers 7 ++ ++ const/4 v2, 0x1 ++ ++ const/4 v1, 0x0 ++ ++ const/4 v0, 0x0 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacySettingsStub;->()V ++ ++ iput-object p1, p0, Landroid/privacy/PrivacySettings;->_id:Ljava/lang/Integer; ++ ++ iput-object p2, p0, Landroid/privacy/PrivacySettings;->packageName:Ljava/lang/String; ++ ++ iput p3, p0, Landroid/privacy/PrivacySettings;->uid:I ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->deviceIdSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->deviceId:Ljava/lang/String; ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->line1NumberSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->line1Number:Ljava/lang/String; ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->locationGpsSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->locationGpsLat:Ljava/lang/String; ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->locationGpsLon:Ljava/lang/String; ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->locationNetworkSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->locationNetworkLat:Ljava/lang/String; ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->locationNetworkLon:Ljava/lang/String; ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->networkInfoSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->simInfoSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->simSerialNumberSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->simSerialNumber:Ljava/lang/String; ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->subscriberIdSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->subscriberId:Ljava/lang/String; ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->accountsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->accountsAuthTokensSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->outgoingCallsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->incomingCallsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->contactsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->calendarSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->mmsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->smsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->callLogSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->bookmarksSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->systemLogsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->notificationSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->intentBootCompletedSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->cameraSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->recordAudioSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->allowedContacts:[I ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->smsSendSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->phoneCallSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->ipTableProtectSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->iccAccessSetting:B ++ ++ iput-byte v2, p0, Landroid/privacy/PrivacySettings;->addOnManagementSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->androidIdSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->androidID:Ljava/lang/String; ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->wifiInfoSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->switchConnectivitySetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->sendMmsSetting:B ++ ++ iput-byte v2, p0, Landroid/privacy/PrivacySettings;->forceOnlineState:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->switchWifiStateSetting:B ++ ++ return-void ++.end method ++ ++.method public constructor (Ljava/lang/Integer;Ljava/lang/String;IBLjava/lang/String;BLjava/lang/String;BLjava/lang/String;Ljava/lang/String;BLjava/lang/String;Ljava/lang/String;BBBLjava/lang/String;BLjava/lang/String;BBBBBBBBBBBBBBBB[IBBBBBBLjava/lang/String;BBBBB)V ++ .registers 50 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacySettingsStub;->()V ++ ++ iput-object p1, p0, Landroid/privacy/PrivacySettings;->_id:Ljava/lang/Integer; ++ ++ iput-object p2, p0, Landroid/privacy/PrivacySettings;->packageName:Ljava/lang/String; ++ ++ iput p3, p0, Landroid/privacy/PrivacySettings;->uid:I ++ ++ iput-byte p4, p0, Landroid/privacy/PrivacySettings;->deviceIdSetting:B ++ ++ iput-object p5, p0, Landroid/privacy/PrivacySettings;->deviceId:Ljava/lang/String; ++ ++ iput-byte p6, p0, Landroid/privacy/PrivacySettings;->line1NumberSetting:B ++ ++ iput-object p7, p0, Landroid/privacy/PrivacySettings;->line1Number:Ljava/lang/String; ++ ++ iput-byte p8, p0, Landroid/privacy/PrivacySettings;->locationGpsSetting:B ++ ++ iput-object p9, p0, Landroid/privacy/PrivacySettings;->locationGpsLat:Ljava/lang/String; ++ ++ iput-object p10, p0, Landroid/privacy/PrivacySettings;->locationGpsLon:Ljava/lang/String; ++ ++ iput-byte p11, p0, Landroid/privacy/PrivacySettings;->locationNetworkSetting:B ++ ++ iput-object p12, p0, Landroid/privacy/PrivacySettings;->locationNetworkLat:Ljava/lang/String; ++ ++ iput-object p13, p0, Landroid/privacy/PrivacySettings;->locationNetworkLon:Ljava/lang/String; ++ ++ iput-byte p14, p0, Landroid/privacy/PrivacySettings;->networkInfoSetting:B ++ ++ move/from16 v0, p15 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->simInfoSetting:B ++ ++ move/from16 v0, p16 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->simSerialNumberSetting:B ++ ++ move-object/from16 v0, p17 ++ ++ iput-object v0, p0, Landroid/privacy/PrivacySettings;->simSerialNumber:Ljava/lang/String; ++ ++ move/from16 v0, p18 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->subscriberIdSetting:B ++ ++ move-object/from16 v0, p19 ++ ++ iput-object v0, p0, Landroid/privacy/PrivacySettings;->subscriberId:Ljava/lang/String; ++ ++ move/from16 v0, p20 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->accountsSetting:B ++ ++ move/from16 v0, p21 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->accountsAuthTokensSetting:B ++ ++ move/from16 v0, p22 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->outgoingCallsSetting:B ++ ++ move/from16 v0, p23 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->incomingCallsSetting:B ++ ++ move/from16 v0, p24 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->contactsSetting:B ++ ++ move/from16 v0, p25 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->calendarSetting:B ++ ++ move/from16 v0, p26 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->mmsSetting:B ++ ++ move/from16 v0, p27 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->smsSetting:B ++ ++ move/from16 v0, p28 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->callLogSetting:B ++ ++ move/from16 v0, p29 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->bookmarksSetting:B ++ ++ move/from16 v0, p30 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->systemLogsSetting:B ++ ++ move/from16 v0, p34 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->notificationSetting:B ++ ++ move/from16 v0, p35 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->intentBootCompletedSetting:B ++ ++ move/from16 v0, p32 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->cameraSetting:B ++ ++ move/from16 v0, p33 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->recordAudioSetting:B ++ ++ move-object/from16 v0, p36 ++ ++ iput-object v0, p0, Landroid/privacy/PrivacySettings;->allowedContacts:[I ++ ++ move/from16 v0, p37 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->smsSendSetting:B ++ ++ move/from16 v0, p38 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->phoneCallSetting:B ++ ++ move/from16 v0, p39 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->ipTableProtectSetting:B ++ ++ move/from16 v0, p40 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->iccAccessSetting:B ++ ++ move/from16 v0, p41 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->addOnManagementSetting:B ++ ++ move/from16 v0, p42 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->androidIdSetting:B ++ ++ move-object/from16 v0, p43 ++ ++ iput-object v0, p0, Landroid/privacy/PrivacySettings;->androidID:Ljava/lang/String; ++ ++ move/from16 v0, p44 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->wifiInfoSetting:B ++ ++ move/from16 v0, p45 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->switchConnectivitySetting:B ++ ++ move/from16 v0, p46 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->sendMmsSetting:B ++ ++ move/from16 v0, p47 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->forceOnlineState:B ++ ++ move/from16 v0, p48 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->switchWifiStateSetting:B ++ ++ return-void ++.end method ++ ++.method public constructor (Ljava/lang/Integer;Ljava/lang/String;IZ)V ++ .registers 9 ++ ++ const/4 v3, 0x0 ++ ++ const/4 v2, 0x3 ++ ++ const/4 v1, 0x0 ++ ++ const/4 v0, 0x1 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacySettingsStub;->()V ++ ++ iput-object p1, p0, Landroid/privacy/PrivacySettings;->_id:Ljava/lang/Integer; ++ ++ iput-object p2, p0, Landroid/privacy/PrivacySettings;->packageName:Ljava/lang/String; ++ ++ iput p3, p0, Landroid/privacy/PrivacySettings;->uid:I ++ ++ if-eqz p4, :cond_68 ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->deviceIdSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->deviceId:Ljava/lang/String; ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->line1NumberSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->line1Number:Ljava/lang/String; ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->locationGpsSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->locationGpsLat:Ljava/lang/String; ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->locationGpsLon:Ljava/lang/String; ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->locationNetworkSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->locationNetworkLat:Ljava/lang/String; ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->locationNetworkLon:Ljava/lang/String; ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->networkInfoSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->simInfoSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->simSerialNumberSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->simSerialNumber:Ljava/lang/String; ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->subscriberIdSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->subscriberId:Ljava/lang/String; ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->accountsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->accountsAuthTokensSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->outgoingCallsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->incomingCallsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->contactsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->calendarSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->mmsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->smsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->callLogSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->bookmarksSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->systemLogsSetting:B ++ ++ iput-byte v3, p0, Landroid/privacy/PrivacySettings;->notificationSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->intentBootCompletedSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->cameraSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->recordAudioSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->allowedContacts:[I ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->smsSendSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->phoneCallSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->ipTableProtectSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->iccAccessSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->addOnManagementSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->androidIdSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->androidID:Ljava/lang/String; ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->wifiInfoSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->switchConnectivitySetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->sendMmsSetting:B ++ ++ iput-byte v3, p0, Landroid/privacy/PrivacySettings;->forceOnlineState:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->switchWifiStateSetting:B ++ ++ :goto_67 ++ return-void ++ ++ :cond_68 ++ iput-byte v2, p0, Landroid/privacy/PrivacySettings;->deviceIdSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->deviceId:Ljava/lang/String; ++ ++ iput-byte v2, p0, Landroid/privacy/PrivacySettings;->line1NumberSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->line1Number:Ljava/lang/String; ++ ++ iput-byte v2, p0, Landroid/privacy/PrivacySettings;->locationGpsSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->locationGpsLat:Ljava/lang/String; ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->locationGpsLon:Ljava/lang/String; ++ ++ iput-byte v2, p0, Landroid/privacy/PrivacySettings;->locationNetworkSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->locationNetworkLat:Ljava/lang/String; ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->locationNetworkLon:Ljava/lang/String; ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->networkInfoSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->simInfoSetting:B ++ ++ iput-byte v2, p0, Landroid/privacy/PrivacySettings;->simSerialNumberSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->simSerialNumber:Ljava/lang/String; ++ ++ iput-byte v2, p0, Landroid/privacy/PrivacySettings;->subscriberIdSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->subscriberId:Ljava/lang/String; ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->accountsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->accountsAuthTokensSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->outgoingCallsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->incomingCallsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->contactsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->calendarSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->mmsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->smsSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->callLogSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->bookmarksSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->systemLogsSetting:B ++ ++ iput-byte v3, p0, Landroid/privacy/PrivacySettings;->notificationSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->intentBootCompletedSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->cameraSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->recordAudioSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->allowedContacts:[I ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->smsSendSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->phoneCallSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->ipTableProtectSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->iccAccessSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->addOnManagementSetting:B ++ ++ iput-byte v2, p0, Landroid/privacy/PrivacySettings;->androidIdSetting:B ++ ++ iput-object v1, p0, Landroid/privacy/PrivacySettings;->androidID:Ljava/lang/String; ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->wifiInfoSetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->switchConnectivitySetting:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->sendMmsSetting:B ++ ++ iput-byte v3, p0, Landroid/privacy/PrivacySettings;->forceOnlineState:B ++ ++ iput-byte v0, p0, Landroid/privacy/PrivacySettings;->switchWifiStateSetting:B ++ ++ goto :goto_67 ++.end method ++ ++.method private getRandomLat()Ljava/lang/String; ++ .registers 10 ++ ++ const-wide v7, 0x4056800000000000L ++ ++ invoke-static {}, Ljava/lang/Math;->random()D ++ ++ move-result-wide v3 ++ ++ const-wide v5, 0x4066800000000000L ++ ++ mul-double v0, v3, v5 ++ ++ cmpl-double v3, v0, v7 ++ ++ if-lez v3, :cond_35 ++ ++ new-instance v2, Ljava/math/BigDecimal; ++ ++ sub-double v3, v0, v7 ++ ++ invoke-direct {v2, v3, v4}, Ljava/math/BigDecimal;->(D)V ++ ++ :goto_1b ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const/4 v4, 0x6 ++ ++ const/4 v5, 0x4 ++ ++ invoke-virtual {v2, v4, v5}, Ljava/math/BigDecimal;->setScale(II)Ljava/math/BigDecimal; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, "" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ return-object v3 ++ ++ :cond_35 ++ new-instance v2, Ljava/math/BigDecimal; ++ ++ neg-double v3, v0 ++ ++ invoke-direct {v2, v3, v4}, Ljava/math/BigDecimal;->(D)V ++ ++ goto :goto_1b ++.end method ++ ++.method private getRandomLon()Ljava/lang/String; ++ .registers 10 ++ ++ const-wide v7, 0x4066800000000000L ++ ++ invoke-static {}, Ljava/lang/Math;->random()D ++ ++ move-result-wide v3 ++ ++ const-wide v5, 0x4076800000000000L ++ ++ mul-double v0, v3, v5 ++ ++ cmpl-double v3, v0, v7 ++ ++ if-lez v3, :cond_35 ++ ++ new-instance v2, Ljava/math/BigDecimal; ++ ++ sub-double v3, v0, v7 ++ ++ invoke-direct {v2, v3, v4}, Ljava/math/BigDecimal;->(D)V ++ ++ :goto_1b ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const/4 v4, 0x6 ++ ++ const/4 v5, 0x4 ++ ++ invoke-virtual {v2, v4, v5}, Ljava/math/BigDecimal;->setScale(II)Ljava/math/BigDecimal; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, "" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ return-object v3 ++ ++ :cond_35 ++ new-instance v2, Ljava/math/BigDecimal; ++ ++ neg-double v3, v0 ++ ++ invoke-direct {v2, v3, v4}, Ljava/math/BigDecimal;->(D)V ++ ++ goto :goto_1b ++.end method ++ ++ ++# virtual methods ++.method public describeContents()I ++ .registers 2 ++ ++ const/4 v0, 0x0 ++ ++ return v0 ++.end method ++ ++.method public getAccountsAuthTokensSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->accountsAuthTokensSetting:B ++ ++ return v0 ++.end method ++ ++.method public getAccountsSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->accountsSetting:B ++ ++ return v0 ++.end method ++ ++.method public getAddOnManagementSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->addOnManagementSetting:B ++ ++ return v0 ++.end method ++ ++.method public getAllowedContacts()[I ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->allowedContacts:[I ++ ++ return-object v0 ++.end method ++ ++.method public getAndroidID()Ljava/lang/String; ++ .registers 6 ++ ++ iget-byte v3, p0, Landroid/privacy/PrivacySettings;->androidIdSetting:B ++ ++ const/4 v4, 0x1 ++ ++ if-ne v3, v4, :cond_9 ++ ++ const-string/jumbo v3, "q4a5w896ay21dr46" ++ ++ :goto_8 ++ return-object v3 ++ ++ :cond_9 ++ iget-byte v3, p0, Landroid/privacy/PrivacySettings;->androidIdSetting:B ++ ++ const/4 v4, 0x3 ++ ++ if-ne v3, v4, :cond_36 ++ ++ new-instance v2, Ljava/util/Random; ++ ++ invoke-direct {v2}, Ljava/util/Random;->()V ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const/4 v0, 0x0 ++ ++ :goto_19 ++ sget-object v3, Landroid/privacy/PrivacySettings;->ID_PATTERN:[Ljava/lang/String; ++ ++ array-length v3, v3 ++ ++ if-ge v0, v3, :cond_31 ++ ++ sget-object v3, Landroid/privacy/PrivacySettings;->ID_PATTERN:[Ljava/lang/String; ++ ++ sget-object v4, Landroid/privacy/PrivacySettings;->ID_PATTERN:[Ljava/lang/String; ++ ++ array-length v4, v4 ++ ++ add-int/lit8 v4, v4, -0x1 ++ ++ invoke-virtual {v2, v4}, Ljava/util/Random;->nextInt(I)I ++ ++ move-result v4 ++ ++ aget-object v3, v3, v4 ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_19 ++ ++ :cond_31 ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ goto :goto_8 ++ ++ :cond_36 ++ iget-object v3, p0, Landroid/privacy/PrivacySettings;->androidID:Ljava/lang/String; ++ ++ goto :goto_8 ++.end method ++ ++.method public getAndroidIdSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->androidIdSetting:B ++ ++ return v0 ++.end method ++ ++.method public getBookmarksSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->bookmarksSetting:B ++ ++ return v0 ++.end method ++ ++.method public getCalendarSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->calendarSetting:B ++ ++ return v0 ++.end method ++ ++.method public getCallLogSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->callLogSetting:B ++ ++ return v0 ++.end method ++ ++.method public getCameraSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->cameraSetting:B ++ ++ return v0 ++.end method ++ ++.method public getContactsSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->contactsSetting:B ++ ++ return v0 ++.end method ++ ++.method public getDeviceId()Ljava/lang/String; ++ .registers 9 ++ ++ const/4 v7, 0x0 ++ ++ const/16 v6, 0xf ++ ++ iget-byte v3, p0, Landroid/privacy/PrivacySettings;->deviceIdSetting:B ++ ++ const/4 v4, 0x1 ++ ++ if-ne v3, v4, :cond_b ++ ++ const-string v3, "" ++ ++ :goto_a ++ return-object v3 ++ ++ :cond_b ++ iget-byte v3, p0, Landroid/privacy/PrivacySettings;->deviceIdSetting:B ++ ++ const/4 v4, 0x3 ++ ++ if-ne v3, v4, :cond_62 ++ ++ new-instance v1, Ljava/util/Random; ++ ++ invoke-direct {v1}, Ljava/util/Random;->()V ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {v1}, Ljava/util/Random;->nextLong()J ++ ++ move-result-wide v4 ++ ++ invoke-static {v4, v5}, Ljava/lang/Math;->abs(J)J ++ ++ move-result-wide v4 ++ ++ invoke-virtual {v3, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, "" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2}, Ljava/lang/String;->length()I ++ ++ move-result v3 ++ ++ if-le v3, v6, :cond_3b ++ ++ invoke-virtual {v2, v7, v6}, Ljava/lang/String;->substring(II)Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ goto :goto_a ++ ++ :cond_3b ++ invoke-virtual {v2}, Ljava/lang/String;->length()I ++ ++ move-result v0 ++ ++ :goto_3f ++ const/16 v3, 0x10 ++ ++ if-gt v0, v3, :cond_5d ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const/16 v4, 0x9 ++ ++ invoke-virtual {v1, v4}, Ljava/util/Random;->nextInt(I)I ++ ++ move-result v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_3f ++ ++ :cond_5d ++ invoke-virtual {v2, v7, v6}, Ljava/lang/String;->substring(II)Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ goto :goto_a ++ ++ :cond_62 ++ iget-object v3, p0, Landroid/privacy/PrivacySettings;->deviceId:Ljava/lang/String; ++ ++ goto :goto_a ++.end method ++ ++.method public getDeviceIdSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->deviceIdSetting:B ++ ++ return v0 ++.end method ++ ++.method public getForceOnlineState()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->forceOnlineState:B ++ ++ return v0 ++.end method ++ ++.method public getIccAccessSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->iccAccessSetting:B ++ ++ return v0 ++.end method ++ ++.method public getIncomingCallsSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->incomingCallsSetting:B ++ ++ return v0 ++.end method ++ ++.method public getIntentBootCompletedSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->intentBootCompletedSetting:B ++ ++ return v0 ++.end method ++ ++.method public getIpTableProtectSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->ipTableProtectSetting:B ++ ++ return v0 ++.end method ++ ++.method public getLine1Number()Ljava/lang/String; ++ .registers 9 ++ ++ const/4 v7, 0x0 ++ ++ const/16 v6, 0xd ++ ++ iget-byte v3, p0, Landroid/privacy/PrivacySettings;->line1NumberSetting:B ++ ++ const/4 v4, 0x1 ++ ++ if-ne v3, v4, :cond_b ++ ++ const-string v3, "" ++ ++ :goto_a ++ return-object v3 ++ ++ :cond_b ++ iget-byte v3, p0, Landroid/privacy/PrivacySettings;->line1NumberSetting:B ++ ++ const/4 v4, 0x3 ++ ++ if-ne v3, v4, :cond_68 ++ ++ new-instance v1, Ljava/util/Random; ++ ++ invoke-direct {v1}, Ljava/util/Random;->()V ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "+" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v1}, Ljava/util/Random;->nextLong()J ++ ++ move-result-wide v4 ++ ++ invoke-static {v4, v5}, Ljava/lang/Math;->abs(J)J ++ ++ move-result-wide v4 ++ ++ invoke-virtual {v3, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, "" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2}, Ljava/lang/String;->length()I ++ ++ move-result v3 ++ ++ if-le v3, v6, :cond_41 ++ ++ invoke-virtual {v2, v7, v6}, Ljava/lang/String;->substring(II)Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ goto :goto_a ++ ++ :cond_41 ++ invoke-virtual {v2}, Ljava/lang/String;->length()I ++ ++ move-result v0 ++ ++ :goto_45 ++ const/16 v3, 0xe ++ ++ if-gt v0, v3, :cond_63 ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const/16 v4, 0x9 ++ ++ invoke-virtual {v1, v4}, Ljava/util/Random;->nextInt(I)I ++ ++ move-result v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_45 ++ ++ :cond_63 ++ invoke-virtual {v2, v7, v6}, Ljava/lang/String;->substring(II)Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ goto :goto_a ++ ++ :cond_68 ++ iget-object v3, p0, Landroid/privacy/PrivacySettings;->line1Number:Ljava/lang/String; ++ ++ goto :goto_a ++.end method ++ ++.method public getLine1NumberSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->line1NumberSetting:B ++ ++ return v0 ++.end method ++ ++.method public getLocationGpsLat()Ljava/lang/String; ++ .registers 3 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->locationGpsSetting:B ++ ++ const/4 v1, 0x1 ++ ++ if-ne v0, v1, :cond_8 ++ ++ const-string v0, "" ++ ++ :goto_7 ++ return-object v0 ++ ++ :cond_8 ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->locationGpsSetting:B ++ ++ const/4 v1, 0x3 ++ ++ if-ne v0, v1, :cond_12 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacySettings;->getRandomLat()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ goto :goto_7 ++ ++ :cond_12 ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->locationGpsLat:Ljava/lang/String; ++ ++ goto :goto_7 ++.end method ++ ++.method public getLocationGpsLon()Ljava/lang/String; ++ .registers 3 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->locationGpsSetting:B ++ ++ const/4 v1, 0x1 ++ ++ if-ne v0, v1, :cond_8 ++ ++ const-string v0, "" ++ ++ :goto_7 ++ return-object v0 ++ ++ :cond_8 ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->locationGpsSetting:B ++ ++ const/4 v1, 0x3 ++ ++ if-ne v0, v1, :cond_12 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacySettings;->getRandomLon()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ goto :goto_7 ++ ++ :cond_12 ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->locationGpsLon:Ljava/lang/String; ++ ++ goto :goto_7 ++.end method ++ ++.method public getLocationGpsSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->locationGpsSetting:B ++ ++ return v0 ++.end method ++ ++.method public getLocationNetworkLat()Ljava/lang/String; ++ .registers 3 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->locationNetworkSetting:B ++ ++ const/4 v1, 0x1 ++ ++ if-ne v0, v1, :cond_8 ++ ++ const-string v0, "" ++ ++ :goto_7 ++ return-object v0 ++ ++ :cond_8 ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->locationNetworkSetting:B ++ ++ const/4 v1, 0x3 ++ ++ if-ne v0, v1, :cond_12 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacySettings;->getRandomLat()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ goto :goto_7 ++ ++ :cond_12 ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->locationNetworkLat:Ljava/lang/String; ++ ++ goto :goto_7 ++.end method ++ ++.method public getLocationNetworkLon()Ljava/lang/String; ++ .registers 3 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->locationNetworkSetting:B ++ ++ const/4 v1, 0x1 ++ ++ if-ne v0, v1, :cond_8 ++ ++ const-string v0, "" ++ ++ :goto_7 ++ return-object v0 ++ ++ :cond_8 ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->locationNetworkSetting:B ++ ++ const/4 v1, 0x3 ++ ++ if-ne v0, v1, :cond_12 ++ ++ invoke-direct {p0}, Landroid/privacy/PrivacySettings;->getRandomLon()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ goto :goto_7 ++ ++ :cond_12 ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->locationNetworkLon:Ljava/lang/String; ++ ++ goto :goto_7 ++.end method ++ ++.method public getLocationNetworkSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->locationNetworkSetting:B ++ ++ return v0 ++.end method ++ ++.method public getMmsSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->mmsSetting:B ++ ++ return v0 ++.end method ++ ++.method public getNetworkInfoSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->networkInfoSetting:B ++ ++ return v0 ++.end method ++ ++.method public getNotificationSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->notificationSetting:B ++ ++ return v0 ++.end method ++ ++.method public getOutgoingCallsSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->outgoingCallsSetting:B ++ ++ return v0 ++.end method ++ ++.method public getPackageName()Ljava/lang/String; ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->packageName:Ljava/lang/String; ++ ++ return-object v0 ++.end method ++ ++.method public getPhoneCallSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->phoneCallSetting:B ++ ++ return v0 ++.end method ++ ++.method public getRecordAudioSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->recordAudioSetting:B ++ ++ return v0 ++.end method ++ ++.method public getSendMmsSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->sendMmsSetting:B ++ ++ return v0 ++.end method ++ ++.method public getSimInfoSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->simInfoSetting:B ++ ++ return v0 ++.end method ++ ++.method public getSimSerialNumber()Ljava/lang/String; ++ .registers 5 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->simSerialNumberSetting:B ++ ++ const/4 v2, 0x1 ++ ++ if-ne v1, v2, :cond_8 ++ ++ const-string v1, "" ++ ++ :goto_7 ++ return-object v1 ++ ++ :cond_8 ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->simSerialNumberSetting:B ++ ++ const/4 v2, 0x3 ++ ++ if-ne v1, v2, :cond_2e ++ ++ new-instance v0, Ljava/util/Random; ++ ++ invoke-direct {v0}, Ljava/util/Random;->()V ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {v0}, Ljava/util/Random;->nextLong()J ++ ++ move-result-wide v2 ++ ++ invoke-static {v2, v3}, Ljava/lang/Math;->abs(J)J ++ ++ move-result-wide v2 ++ ++ invoke-virtual {v1, v2, v3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, "" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ goto :goto_7 ++ ++ :cond_2e ++ iget-object v1, p0, Landroid/privacy/PrivacySettings;->simSerialNumber:Ljava/lang/String; ++ ++ goto :goto_7 ++.end method ++ ++.method public getSimSerialNumberSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->simSerialNumberSetting:B ++ ++ return v0 ++.end method ++ ++.method public getSmsSendSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->smsSendSetting:B ++ ++ return v0 ++.end method ++ ++.method public getSmsSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->smsSetting:B ++ ++ return v0 ++.end method ++ ++.method public getSubscriberId()Ljava/lang/String; ++ .registers 9 ++ ++ const/4 v7, 0x0 ++ ++ const/16 v6, 0xf ++ ++ iget-byte v3, p0, Landroid/privacy/PrivacySettings;->subscriberIdSetting:B ++ ++ const/4 v4, 0x1 ++ ++ if-ne v3, v4, :cond_b ++ ++ const-string v3, "" ++ ++ :goto_a ++ return-object v3 ++ ++ :cond_b ++ iget-byte v3, p0, Landroid/privacy/PrivacySettings;->subscriberIdSetting:B ++ ++ const/4 v4, 0x3 ++ ++ if-ne v3, v4, :cond_62 ++ ++ new-instance v1, Ljava/util/Random; ++ ++ invoke-direct {v1}, Ljava/util/Random;->()V ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {v1}, Ljava/util/Random;->nextLong()J ++ ++ move-result-wide v4 ++ ++ invoke-static {v4, v5}, Ljava/lang/Math;->abs(J)J ++ ++ move-result-wide v4 ++ ++ invoke-virtual {v3, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, "" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2}, Ljava/lang/String;->length()I ++ ++ move-result v3 ++ ++ if-le v3, v6, :cond_3b ++ ++ invoke-virtual {v2, v7, v6}, Ljava/lang/String;->substring(II)Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ goto :goto_a ++ ++ :cond_3b ++ invoke-virtual {v2}, Ljava/lang/String;->length()I ++ ++ move-result v0 ++ ++ :goto_3f ++ const/16 v3, 0x10 ++ ++ if-gt v0, v3, :cond_5d ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const/16 v4, 0x9 ++ ++ invoke-virtual {v1, v4}, Ljava/util/Random;->nextInt(I)I ++ ++ move-result v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_3f ++ ++ :cond_5d ++ invoke-virtual {v2, v7, v6}, Ljava/lang/String;->substring(II)Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ goto :goto_a ++ ++ :cond_62 ++ iget-object v3, p0, Landroid/privacy/PrivacySettings;->subscriberId:Ljava/lang/String; ++ ++ goto :goto_a ++.end method ++ ++.method public getSubscriberIdSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->subscriberIdSetting:B ++ ++ return v0 ++.end method ++ ++.method public getSwitchConnectivitySetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->switchConnectivitySetting:B ++ ++ return v0 ++.end method ++ ++.method public getSwitchWifiStateSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->switchWifiStateSetting:B ++ ++ return v0 ++.end method ++ ++.method public getSystemLogsSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->systemLogsSetting:B ++ ++ return v0 ++.end method ++ ++.method public getUid()I ++ .registers 2 ++ ++ iget v0, p0, Landroid/privacy/PrivacySettings;->uid:I ++ ++ return v0 ++.end method ++ ++.method public getWifiInfoSetting()B ++ .registers 2 ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->wifiInfoSetting:B ++ ++ return v0 ++.end method ++ ++.method public get_id()Ljava/lang/Integer; ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->_id:Ljava/lang/Integer; ++ ++ return-object v0 ++.end method ++ ++.method public setAccountsAuthTokensSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->accountsAuthTokensSetting:B ++ ++ return-void ++.end method ++ ++.method public setAccountsSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->accountsSetting:B ++ ++ return-void ++.end method ++ ++.method public setAddOnManagementSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->addOnManagementSetting:B ++ ++ return-void ++.end method ++ ++.method public setAllowedContacts([I)V ++ .registers 2 ++ ++ iput-object p1, p0, Landroid/privacy/PrivacySettings;->allowedContacts:[I ++ ++ return-void ++.end method ++ ++.method public setAndroidID(Ljava/lang/String;)V ++ .registers 2 ++ ++ iput-object p1, p0, Landroid/privacy/PrivacySettings;->androidID:Ljava/lang/String; ++ ++ return-void ++.end method ++ ++.method public setAndroidIdSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->androidIdSetting:B ++ ++ return-void ++.end method ++ ++.method public setBookmarksSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->bookmarksSetting:B ++ ++ return-void ++.end method ++ ++.method public setCalendarSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->calendarSetting:B ++ ++ return-void ++.end method ++ ++.method public setCallLogSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->callLogSetting:B ++ ++ return-void ++.end method ++ ++.method public setCameraSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->cameraSetting:B ++ ++ return-void ++.end method ++ ++.method public setContactsSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->contactsSetting:B ++ ++ return-void ++.end method ++ ++.method public setDeviceId(Ljava/lang/String;)V ++ .registers 2 ++ ++ iput-object p1, p0, Landroid/privacy/PrivacySettings;->deviceId:Ljava/lang/String; ++ ++ return-void ++.end method ++ ++.method public setDeviceIdSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->deviceIdSetting:B ++ ++ return-void ++.end method ++ ++.method public setForceOnlineState(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->forceOnlineState:B ++ ++ return-void ++.end method ++ ++.method public setIccAccessSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->iccAccessSetting:B ++ ++ return-void ++.end method ++ ++.method public setIncomingCallsSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->incomingCallsSetting:B ++ ++ return-void ++.end method ++ ++.method public setIntentBootCompletedSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->intentBootCompletedSetting:B ++ ++ return-void ++.end method ++ ++.method public setIpTableProtectSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->ipTableProtectSetting:B ++ ++ return-void ++.end method ++ ++.method public setLine1Number(Ljava/lang/String;)V ++ .registers 2 ++ ++ iput-object p1, p0, Landroid/privacy/PrivacySettings;->line1Number:Ljava/lang/String; ++ ++ return-void ++.end method ++ ++.method public setLine1NumberSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->line1NumberSetting:B ++ ++ return-void ++.end method ++ ++.method public setLocationGpsLat(Ljava/lang/String;)V ++ .registers 2 ++ ++ iput-object p1, p0, Landroid/privacy/PrivacySettings;->locationGpsLat:Ljava/lang/String; ++ ++ return-void ++.end method ++ ++.method public setLocationGpsLon(Ljava/lang/String;)V ++ .registers 2 ++ ++ iput-object p1, p0, Landroid/privacy/PrivacySettings;->locationGpsLon:Ljava/lang/String; ++ ++ return-void ++.end method ++ ++.method public setLocationGpsSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->locationGpsSetting:B ++ ++ return-void ++.end method ++ ++.method public setLocationNetworkLat(Ljava/lang/String;)V ++ .registers 2 ++ ++ iput-object p1, p0, Landroid/privacy/PrivacySettings;->locationNetworkLat:Ljava/lang/String; ++ ++ return-void ++.end method ++ ++.method public setLocationNetworkLon(Ljava/lang/String;)V ++ .registers 2 ++ ++ iput-object p1, p0, Landroid/privacy/PrivacySettings;->locationNetworkLon:Ljava/lang/String; ++ ++ return-void ++.end method ++ ++.method public setLocationNetworkSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->locationNetworkSetting:B ++ ++ return-void ++.end method ++ ++.method public setMmsSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->mmsSetting:B ++ ++ return-void ++.end method ++ ++.method public setNetworkInfoSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->networkInfoSetting:B ++ ++ return-void ++.end method ++ ++.method public setNotificationSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->notificationSetting:B ++ ++ return-void ++.end method ++ ++.method public setOutgoingCallsSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->outgoingCallsSetting:B ++ ++ return-void ++.end method ++ ++.method public setPackageName(Ljava/lang/String;)V ++ .registers 2 ++ ++ iput-object p1, p0, Landroid/privacy/PrivacySettings;->packageName:Ljava/lang/String; ++ ++ return-void ++.end method ++ ++.method public setPhoneCallSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->phoneCallSetting:B ++ ++ return-void ++.end method ++ ++.method public setRecordAudioSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->recordAudioSetting:B ++ ++ return-void ++.end method ++ ++.method public setSendMmsSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->sendMmsSetting:B ++ ++ return-void ++.end method ++ ++.method public setSimInfoSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->simInfoSetting:B ++ ++ return-void ++.end method ++ ++.method public setSimSerialNumber(Ljava/lang/String;)V ++ .registers 2 ++ ++ iput-object p1, p0, Landroid/privacy/PrivacySettings;->simSerialNumber:Ljava/lang/String; ++ ++ return-void ++.end method ++ ++.method public setSimSerialNumberSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->simSerialNumberSetting:B ++ ++ return-void ++.end method ++ ++.method public setSmsSendSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->smsSendSetting:B ++ ++ return-void ++.end method ++ ++.method public setSmsSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->smsSetting:B ++ ++ return-void ++.end method ++ ++.method public setSubscriberId(Ljava/lang/String;)V ++ .registers 2 ++ ++ iput-object p1, p0, Landroid/privacy/PrivacySettings;->subscriberId:Ljava/lang/String; ++ ++ return-void ++.end method ++ ++.method public setSubscriberIdSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->subscriberIdSetting:B ++ ++ return-void ++.end method ++ ++.method public setSwitchConnectivitySetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->switchConnectivitySetting:B ++ ++ return-void ++.end method ++ ++.method public setSwitchWifiStateSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->switchWifiStateSetting:B ++ ++ return-void ++.end method ++ ++.method public setSystemLogsSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->systemLogsSetting:B ++ ++ return-void ++.end method ++ ++.method public setUid(I)V ++ .registers 2 ++ ++ iput p1, p0, Landroid/privacy/PrivacySettings;->uid:I ++ ++ return-void ++.end method ++ ++.method public setWifiInfoSetting(B)V ++ .registers 2 ++ ++ iput-byte p1, p0, Landroid/privacy/PrivacySettings;->wifiInfoSetting:B ++ ++ return-void ++.end method ++ ++.method public toString()Ljava/lang/String; ++ .registers 3 ++ ++ new-instance v0, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v0}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v1, "PrivacySettings [_id=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettings;->_id:Ljava/lang/Integer; ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", accountsAuthTokensSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->accountsAuthTokensSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", accountsSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->accountsSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", bookmarksSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->bookmarksSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", calendarSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->calendarSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", callLogSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->callLogSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", contactsSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->contactsSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", deviceId=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettings;->deviceId:Ljava/lang/String; ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", deviceIdSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->deviceIdSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", incomingCallsSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->incomingCallsSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", intentBootCompletedSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->intentBootCompletedSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", line1Number=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettings;->line1Number:Ljava/lang/String; ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", line1NumberSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->line1NumberSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", locationGpsLat=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettings;->locationGpsLat:Ljava/lang/String; ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", locationGpsLon=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettings;->locationGpsLon:Ljava/lang/String; ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", locationGpsSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->locationGpsSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", locationNetworkLat=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettings;->locationNetworkLat:Ljava/lang/String; ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", locationNetworkLon=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettings;->locationNetworkLon:Ljava/lang/String; ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", locationNetworkSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->locationNetworkSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", mmsSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->mmsSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", networkInfoSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->networkInfoSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", notificationSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->notificationSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", outgoingCallsSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->outgoingCallsSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", packageName=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettings;->packageName:Ljava/lang/String; ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", simInfoSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->simInfoSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", simSerialNumber=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettings;->simSerialNumber:Ljava/lang/String; ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", simSerialNumberSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->simSerialNumberSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", smsSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->smsSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", subscriberId=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettings;->subscriberId:Ljava/lang/String; ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", subscriberIdSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->subscriberIdSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", systemLogsSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->systemLogsSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", uid=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget v1, p0, Landroid/privacy/PrivacySettings;->uid:I ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", phoneCallSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->phoneCallSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", smsSendSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->smsSendSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", recordAudioSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->recordAudioSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", cameraSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->cameraSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", ipTableProtectSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->ipTableProtectSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", iccAccessSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->iccAccessSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", addOnManagementSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->addOnManagementSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", android ID=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-object v1, p0, Landroid/privacy/PrivacySettings;->androidID:Ljava/lang/String; ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", androidIdSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->androidIdSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", wifiInfoSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->wifiInfoSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", switchConnectivitySetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->switchConnectivitySetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", sendMmsSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->sendMmsSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", forceOnlineState=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->forceOnlineState:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, ", switchWifiStateSetting=" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ iget-byte v1, p0, Landroid/privacy/PrivacySettings;->switchWifiStateSetting:B ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ const-string v1, "]" ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v0 ++ ++ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public writeToParcel(Landroid/os/Parcel;I)V ++ .registers 4 ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->_id:Ljava/lang/Integer; ++ ++ if-nez v0, :cond_ef ++ ++ const/4 v0, -0x1 ++ ++ :goto_5 ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeInt(I)V ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->packageName:Ljava/lang/String; ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V ++ ++ iget v0, p0, Landroid/privacy/PrivacySettings;->uid:I ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeInt(I)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->deviceIdSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->deviceId:Ljava/lang/String; ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->line1NumberSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->line1Number:Ljava/lang/String; ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->locationGpsSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->locationGpsLat:Ljava/lang/String; ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->locationGpsLon:Ljava/lang/String; ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->locationNetworkSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->locationNetworkLat:Ljava/lang/String; ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->locationNetworkLon:Ljava/lang/String; ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->networkInfoSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->simInfoSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->simSerialNumberSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->simSerialNumber:Ljava/lang/String; ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->subscriberIdSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->subscriberId:Ljava/lang/String; ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->accountsSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->accountsAuthTokensSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->outgoingCallsSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->incomingCallsSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->contactsSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->calendarSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->mmsSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->smsSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->callLogSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->bookmarksSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->systemLogsSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->notificationSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->intentBootCompletedSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->cameraSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->recordAudioSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->allowedContacts:[I ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeIntArray([I)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->smsSendSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->phoneCallSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->ipTableProtectSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->iccAccessSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->addOnManagementSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->androidIdSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->androidID:Ljava/lang/String; ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->wifiInfoSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->switchConnectivitySetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->sendMmsSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->forceOnlineState:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ iget-byte v0, p0, Landroid/privacy/PrivacySettings;->switchWifiStateSetting:B ++ ++ invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V ++ ++ return-void ++ ++ :cond_ef ++ iget-object v0, p0, Landroid/privacy/PrivacySettings;->_id:Ljava/lang/Integer; ++ ++ invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I ++ ++ move-result v0 ++ ++ goto/16 :goto_5 ++.end method +diff -Npru stock-framework/smali/android/privacy/PrivacySettingsStub.smali pdroid-framework/smali/android/privacy/PrivacySettingsStub.smali +--- stock-framework/smali/android/privacy/PrivacySettingsStub.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/PrivacySettingsStub.smali 2013-08-10 20:37:42.495213442 -0700 +@@ -0,0 +1,27 @@ ++.class Landroid/privacy/PrivacySettingsStub; ++.super Ljava/lang/Object; ++.source "PrivacySettingsStub.java" ++ ++ ++# static fields ++.field private static final isStub:Z = true ++ ++ ++# direct methods ++.method constructor ()V ++ .registers 1 ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method isStub()Z ++ .registers 2 ++ ++ const/4 v0, 0x1 ++ ++ return v0 ++.end method +diff -Npru stock-framework/smali/android/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture.smali pdroid-framework/smali/android/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture.smali +--- stock-framework/smali/android/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture.smali 2013-08-10 20:37:42.499213442 -0700 +@@ -0,0 +1,129 @@ ++.class Landroid/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture; ++.super Ljava/lang/Object; ++.source "PrivacyAccountManager.java" ++ ++# interfaces ++.implements Landroid/accounts/AccountManagerFuture; ++ ++ ++# annotations ++.annotation system Ldalvik/annotation/EnclosingClass; ++ value = Landroid/privacy/surrogate/PrivacyAccountManager; ++.end annotation ++ ++.annotation system Ldalvik/annotation/InnerClass; ++ accessFlags = 0x2 ++ name = "PrivacyAccountManagerFuture" ++.end annotation ++ ++.annotation system Ldalvik/annotation/Signature; ++ value = { ++ "", ++ "Ljava/lang/Object;", ++ "Landroid/accounts/AccountManagerFuture", ++ ";" ++ } ++.end annotation ++ ++ ++# instance fields ++.field private result:Ljava/lang/Object; ++ .annotation system Ldalvik/annotation/Signature; ++ value = { ++ "TV;" ++ } ++ .end annotation ++.end field ++ ++.field final synthetic this$0:Landroid/privacy/surrogate/PrivacyAccountManager; ++ ++ ++# direct methods ++.method public constructor (Landroid/privacy/surrogate/PrivacyAccountManager;Ljava/lang/Object;)V ++ .registers 3 ++ .annotation system Ldalvik/annotation/Signature; ++ value = { ++ "(TV;)V" ++ } ++ .end annotation ++ ++ iput-object p1, p0, Landroid/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture;->this$0:Landroid/privacy/surrogate/PrivacyAccountManager; ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ iput-object p2, p0, Landroid/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture;->result:Ljava/lang/Object; ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public cancel(Z)Z ++ .registers 3 ++ ++ const/4 v0, 0x0 ++ ++ return v0 ++.end method ++ ++.method public getResult()Ljava/lang/Object; ++ .registers 2 ++ .annotation system Ldalvik/annotation/Signature; ++ value = { ++ "()TV;" ++ } ++ .end annotation ++ ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/accounts/OperationCanceledException;, ++ Ljava/io/IOException;, ++ Landroid/accounts/AuthenticatorException; ++ } ++ .end annotation ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture;->result:Ljava/lang/Object; ++ ++ return-object v0 ++.end method ++ ++.method public getResult(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; ++ .registers 5 ++ .annotation system Ldalvik/annotation/Signature; ++ value = { ++ "(J", ++ "Ljava/util/concurrent/TimeUnit;", ++ ")TV;" ++ } ++ .end annotation ++ ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/accounts/OperationCanceledException;, ++ Ljava/io/IOException;, ++ Landroid/accounts/AuthenticatorException; ++ } ++ .end annotation ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture;->result:Ljava/lang/Object; ++ ++ return-object v0 ++.end method ++ ++.method public isCancelled()Z ++ .registers 2 ++ ++ const/4 v0, 0x0 ++ ++ return v0 ++.end method ++ ++.method public isDone()Z ++ .registers 2 ++ ++ const/4 v0, 0x1 ++ ++ return v0 ++.end method +diff -Npru stock-framework/smali/android/privacy/surrogate/PrivacyAccountManager.smali pdroid-framework/smali/android/privacy/surrogate/PrivacyAccountManager.smali +--- stock-framework/smali/android/privacy/surrogate/PrivacyAccountManager.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/surrogate/PrivacyAccountManager.smali 2013-08-10 20:37:42.499213442 -0700 +@@ -0,0 +1,701 @@ ++.class public final Landroid/privacy/surrogate/PrivacyAccountManager; ++.super Landroid/accounts/AccountManager; ++.source "PrivacyAccountManager.java" ++ ++ ++# annotations ++.annotation system Ldalvik/annotation/MemberClasses; ++ value = { ++ Landroid/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture; ++ } ++.end annotation ++ ++ ++# static fields ++.field private static final TAG:Ljava/lang/String; = "PrivacyAccountManager" ++ ++ ++# instance fields ++.field private context:Landroid/content/Context; ++ ++.field private pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ ++# direct methods ++.method public constructor (Landroid/content/Context;Landroid/accounts/IAccountManager;)V ++ .registers 5 ++ ++ invoke-direct {p0, p1, p2}, Landroid/accounts/AccountManager;->(Landroid/content/Context;Landroid/accounts/IAccountManager;)V ++ ++ iput-object p1, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->context:Landroid/content/Context; ++ ++ new-instance v0, Landroid/privacy/PrivacySettingsManager; ++ ++ const-string/jumbo v1, "privacy" ++ ++ invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v1 ++ ++ invoke-direct {v0, p1, v1}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ return-void ++.end method ++ ++.method public constructor (Landroid/content/Context;Landroid/accounts/IAccountManager;Landroid/os/Handler;)V ++ .registers 6 ++ ++ invoke-direct {p0, p1, p2, p3}, Landroid/accounts/AccountManager;->(Landroid/content/Context;Landroid/accounts/IAccountManager;Landroid/os/Handler;)V ++ ++ iput-object p1, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->context:Landroid/content/Context; ++ ++ new-instance v0, Landroid/privacy/PrivacySettingsManager; ++ ++ const-string/jumbo v1, "privacy" ++ ++ invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v1 ++ ++ invoke-direct {v0, p1, v1}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public blockingGetAuthToken(Landroid/accounts/Account;Ljava/lang/String;Z)Ljava/lang/String; ++ .registers 12 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/accounts/OperationCanceledException;, ++ Ljava/io/IOException;, ++ Landroid/accounts/AuthenticatorException; ++ } ++ .end annotation ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_23 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getAccountsAuthTokensSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_23 ++ ++ const/4 v7, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x1 ++ ++ const-string v4, "authTokens" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_22 ++ return-object v7 ++ ++ :cond_23 ++ invoke-super {p0, p1, p2, p3}, Landroid/accounts/AccountManager;->blockingGetAuthToken(Landroid/accounts/Account;Ljava/lang/String;Z)Ljava/lang/String; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "authTokens" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_22 ++.end method ++ ++.method public getAccounts()[Landroid/accounts/Account; ++ .registers 10 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v3, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_27 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getAccountsSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_27 ++ ++ const-string v8, "[empty accounts list]" ++ ++ new-array v7, v3, [Landroid/accounts/Account; ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x1 ++ ++ const-string v4, "accountsList" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_26 ++ return-object v7 ++ ++ :cond_27 ++ const-string v8, "[real value]" ++ ++ invoke-super {p0}, Landroid/accounts/AccountManager;->getAccounts()[Landroid/accounts/Account; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "accountsList" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_26 ++.end method ++ ++.method public getAccountsByType(Ljava/lang/String;)[Landroid/accounts/Account; ++ .registers 11 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v3, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_27 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getAccountsSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_27 ++ ++ const-string v8, "[empty accounts list]" ++ ++ new-array v7, v3, [Landroid/accounts/Account; ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x1 ++ ++ const-string v4, "accountsList" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_26 ++ return-object v7 ++ ++ :cond_27 ++ const-string v8, "[real value]" ++ ++ invoke-super {p0, p1}, Landroid/accounts/AccountManager;->getAccountsByType(Ljava/lang/String;)[Landroid/accounts/Account; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "accountsList" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_26 ++.end method ++ ++.method public getAccountsByTypeAndFeatures(Ljava/lang/String;[Ljava/lang/String;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture; ++ .registers 14 ++ .annotation system Ldalvik/annotation/Signature; ++ value = { ++ "(", ++ "Ljava/lang/String;", ++ "[", ++ "Ljava/lang/String;", ++ "Landroid/accounts/AccountManagerCallback", ++ "<[", ++ "Landroid/accounts/Account;", ++ ">;", ++ "Landroid/os/Handler;", ++ ")", ++ "Landroid/accounts/AccountManagerFuture", ++ "<[", ++ "Landroid/accounts/Account;", ++ ">;" ++ } ++ .end annotation ++ ++ const/4 v5, 0x0 ++ ++ const/4 v3, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_2c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getAccountsSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_2c ++ ++ const-string v8, "[false]" ++ ++ new-instance v7, Landroid/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture; ++ ++ new-array v0, v3, [Landroid/accounts/Account; ++ ++ invoke-direct {v7, p0, v0}, Landroid/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture;->(Landroid/privacy/surrogate/PrivacyAccountManager;Ljava/lang/Object;)V ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x1 ++ ++ const-string v4, "accountsList" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_2b ++ return-object v7 ++ ++ :cond_2c ++ const-string v8, "[real value]" ++ ++ invoke-super {p0, p1, p2, p3, p4}, Landroid/accounts/AccountManager;->getAccountsByTypeAndFeatures(Ljava/lang/String;[Ljava/lang/String;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "accountsList" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_2b ++.end method ++ ++.method public getAuthToken(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture; ++ .registers 16 ++ .annotation system Ldalvik/annotation/Signature; ++ value = { ++ "(", ++ "Landroid/accounts/Account;", ++ "Ljava/lang/String;", ++ "Landroid/os/Bundle;", ++ "Landroid/app/Activity;", ++ "Landroid/accounts/AccountManagerCallback", ++ "<", ++ "Landroid/os/Bundle;", ++ ">;", ++ "Landroid/os/Handler;", ++ ")", ++ "Landroid/accounts/AccountManagerFuture", ++ "<", ++ "Landroid/os/Bundle;", ++ ">;" ++ } ++ .end annotation ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_2e ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getAccountsAuthTokensSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_2e ++ ++ const-string v8, "[empty]" ++ ++ new-instance v7, Landroid/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture; ++ ++ new-instance v0, Landroid/os/Bundle; ++ ++ invoke-direct {v0}, Landroid/os/Bundle;->()V ++ ++ invoke-direct {v7, p0, v0}, Landroid/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture;->(Landroid/privacy/surrogate/PrivacyAccountManager;Ljava/lang/Object;)V ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x1 ++ ++ const-string v4, "authTokens" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_2d ++ return-object v7 ++ ++ :cond_2e ++ const-string v8, "[real value]" ++ ++ invoke-super/range {p0 .. p6}, Landroid/accounts/AccountManager;->getAuthToken(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "authTokens" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_2d ++.end method ++ ++.method public getAuthToken(Landroid/accounts/Account;Ljava/lang/String;ZLandroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture; ++ .registers 15 ++ .annotation system Ldalvik/annotation/Signature; ++ value = { ++ "(", ++ "Landroid/accounts/Account;", ++ "Ljava/lang/String;", ++ "Z", ++ "Landroid/accounts/AccountManagerCallback", ++ "<", ++ "Landroid/os/Bundle;", ++ ">;", ++ "Landroid/os/Handler;", ++ ")", ++ "Landroid/accounts/AccountManagerFuture", ++ "<", ++ "Landroid/os/Bundle;", ++ ">;" ++ } ++ .end annotation ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_2e ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getAccountsAuthTokensSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_2e ++ ++ const-string v8, "[empty]" ++ ++ new-instance v7, Landroid/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture; ++ ++ new-instance v0, Landroid/os/Bundle; ++ ++ invoke-direct {v0}, Landroid/os/Bundle;->()V ++ ++ invoke-direct {v7, p0, v0}, Landroid/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture;->(Landroid/privacy/surrogate/PrivacyAccountManager;Ljava/lang/Object;)V ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x1 ++ ++ const-string v4, "authTokens" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_2d ++ return-object v7 ++ ++ :cond_2e ++ const-string v8, "[real value]" ++ ++ invoke-super/range {p0 .. p5}, Landroid/accounts/AccountManager;->getAuthToken(Landroid/accounts/Account;Ljava/lang/String;ZLandroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "authTokens" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_2d ++.end method ++ ++.method public getAuthTokenByFeatures(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/app/Activity;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture; ++ .registers 18 ++ .annotation system Ldalvik/annotation/Signature; ++ value = { ++ "(", ++ "Ljava/lang/String;", ++ "Ljava/lang/String;", ++ "[", ++ "Ljava/lang/String;", ++ "Landroid/app/Activity;", ++ "Landroid/os/Bundle;", ++ "Landroid/os/Bundle;", ++ "Landroid/accounts/AccountManagerCallback", ++ "<", ++ "Landroid/os/Bundle;", ++ ">;", ++ "Landroid/os/Handler;", ++ ")", ++ "Landroid/accounts/AccountManagerFuture", ++ "<", ++ "Landroid/os/Bundle;", ++ ">;" ++ } ++ .end annotation ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_2e ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getAccountsAuthTokensSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_2e ++ ++ const-string v8, "[empty]" ++ ++ new-instance v7, Landroid/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture; ++ ++ new-instance v0, Landroid/os/Bundle; ++ ++ invoke-direct {v0}, Landroid/os/Bundle;->()V ++ ++ invoke-direct {v7, p0, v0}, Landroid/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture;->(Landroid/privacy/surrogate/PrivacyAccountManager;Ljava/lang/Object;)V ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x1 ++ ++ const-string v4, "authTokens" ++ ++ const/4 v5, 0x0 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_2d ++ return-object v7 ++ ++ :cond_2e ++ const-string v8, "[real value]" ++ ++ invoke-super/range {p0 .. p8}, Landroid/accounts/AccountManager;->getAuthTokenByFeatures(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/app/Activity;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "authTokens" ++ ++ const/4 v5, 0x0 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_2d ++.end method ++ ++.method public hasFeatures(Landroid/accounts/Account;[Ljava/lang/String;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture; ++ .registers 14 ++ .annotation system Ldalvik/annotation/Signature; ++ value = { ++ "(", ++ "Landroid/accounts/Account;", ++ "[", ++ "Ljava/lang/String;", ++ "Landroid/accounts/AccountManagerCallback", ++ "<", ++ "Ljava/lang/Boolean;", ++ ">;", ++ "Landroid/os/Handler;", ++ ")", ++ "Landroid/accounts/AccountManagerFuture", ++ "<", ++ "Ljava/lang/Boolean;", ++ ">;" ++ } ++ .end annotation ++ ++ const/4 v5, 0x0 ++ ++ const/4 v3, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_2e ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getAccountsSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_2e ++ ++ const-string v8, "[false]" ++ ++ new-instance v7, Landroid/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture; ++ ++ invoke-static {v3}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; ++ ++ move-result-object v0 ++ ++ invoke-direct {v7, p0, v0}, Landroid/privacy/surrogate/PrivacyAccountManager$PrivacyAccountManagerFuture;->(Landroid/privacy/surrogate/PrivacyAccountManager;Ljava/lang/Object;)V ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x1 ++ ++ const-string v4, "accountsList" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_2d ++ return-object v7 ++ ++ :cond_2e ++ const-string v8, "[real value]" ++ ++ invoke-super {p0, p1, p2, p3, p4}, Landroid/accounts/AccountManager;->hasFeatures(Landroid/accounts/Account;[Ljava/lang/String;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyAccountManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "accountsList" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_2d ++.end method +diff -Npru stock-framework/smali/android/privacy/surrogate/PrivacyActivityManagerService.smali pdroid-framework/smali/android/privacy/surrogate/PrivacyActivityManagerService.smali +--- stock-framework/smali/android/privacy/surrogate/PrivacyActivityManagerService.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/surrogate/PrivacyActivityManagerService.smali 2013-08-10 20:37:42.503213441 -0700 +@@ -0,0 +1,1223 @@ ++.class public final Landroid/privacy/surrogate/PrivacyActivityManagerService; ++.super Ljava/lang/Object; ++.source "PrivacyActivityManagerService.java" ++ ++ ++# static fields ++.field private static final DATA_SMS_RECEIVED_INTENT:Ljava/lang/String; = "android.intent.action.DATA_SMS_RECEIVED" ++ ++.field private static final SMS_RECEIVED_ACTION_INTENT:Ljava/lang/String; = "android.provider.Telephony.SMS_RECEIVED" ++ ++.field private static final TAG:Ljava/lang/String; = "PrivacyActivityManagerService" ++ ++.field private static final WAP_PUSH_RECEIVED_INTENT:Ljava/lang/String; = "android.provider.Telephony.WAP_PUSH_RECEIVED" ++ ++.field private static pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++.field private static tmpIn:Landroid/content/Intent; ++ ++.field private static tmpInHash:J ++ ++.field private static tmpInReceivers:I ++ ++.field private static tmpMms:Landroid/content/Intent; ++ ++.field private static tmpMmsHash:J ++ ++.field private static tmpMmsReceivers:I ++ ++.field private static tmpOut:Landroid/content/Intent; ++ ++.field private static tmpOutHash:J ++ ++.field private static tmpOutReceivers:I ++ ++.field private static tmpPackageAddedHash:J ++ ++.field private static tmpSms:Landroid/content/Intent; ++ ++.field private static tmpSmsHash:J ++ ++.field private static tmpSmsReceivers:I ++ ++ ++# direct methods ++.method static constructor ()V ++ .registers 3 ++ ++ const/4 v2, 0x0 ++ ++ const-wide/16 v0, 0x0 ++ ++ sput-wide v0, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpInHash:J ++ ++ sput v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpInReceivers:I ++ ++ sput-wide v0, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpOutHash:J ++ ++ sput v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpOutReceivers:I ++ ++ sput-wide v0, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpSmsHash:J ++ ++ sput v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpSmsReceivers:I ++ ++ sput-wide v0, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpMmsHash:J ++ ++ sput v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpMmsReceivers:I ++ ++ sput-wide v0, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpPackageAddedHash:J ++ ++ return-void ++.end method ++ ++.method public constructor ()V ++ .registers 1 ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ return-void ++.end method ++ ++.method public static enforcePrivacyPermission(Ljava/lang/String;ILandroid/content/Intent;Landroid/content/Context;I)V ++ .registers 29 ++ ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-nez v2, :cond_13 ++ ++ if-eqz p3, :cond_13 ++ ++ const-string/jumbo v2, "privacy" ++ ++ move-object/from16 v0, p3 ++ ++ invoke-virtual {v0, v2}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; ++ ++ move-result-object v2 ++ ++ check-cast v2, Landroid/privacy/PrivacySettingsManager; ++ ++ sput-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ :cond_13 ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-nez v2, :cond_2c ++ ++ if-nez p3, :cond_2c ++ ++ new-instance v2, Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string/jumbo v4, "privacy" ++ ++ invoke-static {v4}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v4 ++ ++ invoke-static {v4}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v4 ++ ++ invoke-direct {v2, v3, v4}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ sput-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ :cond_2c ++ invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->getAction()Ljava/lang/String; ++ ++ move-result-object v16 ++ ++ const-string v2, "android.intent.action.NEW_OUTGOING_CALL" ++ ++ move-object/from16 v0, v16 ++ ++ invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_cc ++ ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ move-object/from16 v0, p0 ++ ++ move/from16 v1, p1 ++ ++ invoke-virtual {v2, v0, v1}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v8 ++ ++ const-string v2, "android.intent.extra.PHONE_NUMBER" ++ ++ move-object/from16 v0, p2 ++ ++ invoke-virtual {v0, v2}, Landroid/content/Intent;->getStringExtra(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object v23 ++ ++ sget-wide v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpOutHash:J ++ ++ invoke-static/range {p2 .. p2}, Landroid/privacy/surrogate/PrivacyActivityManagerService;->hashCode(Landroid/content/Intent;)J ++ ++ move-result-wide v4 ++ ++ cmp-long v2, v2, v4 ++ ++ if-eqz v2, :cond_66 ++ ++ invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->clone()Ljava/lang/Object; ++ ++ move-result-object v2 ++ ++ check-cast v2, Landroid/content/Intent; ++ ++ sput-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpOut:Landroid/content/Intent; ++ ++ invoke-static/range {p2 .. p2}, Landroid/privacy/surrogate/PrivacyActivityManagerService;->hashCode(Landroid/content/Intent;)J ++ ++ move-result-wide v2 ++ ++ sput-wide v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpOutHash:J ++ ++ sput p4, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpOutReceivers:I ++ ++ :cond_66 ++ if-eqz v8, :cond_93 ++ ++ :try_start_68 ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getOutgoingCallsSetting()B ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_93 ++ ++ const-string v23, "" ++ ++ const-string v2, "android.intent.extra.PHONE_NUMBER" ++ ++ move-object/from16 v0, p2 ++ ++ move-object/from16 v1, v23 ++ ++ invoke-virtual {v0, v2, v1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent; ++ ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v5, 0x1 ++ ++ const-string/jumbo v6, "outgoingCall" ++ ++ const/4 v7, 0x0 ++ ++ move-object/from16 v3, p0 ++ ++ move/from16 v4, p1 ++ ++ invoke-virtual/range {v2 .. v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ :try_end_87 ++ .catch Ljava/lang/Exception; {:try_start_68 .. :try_end_87} :catch_bd ++ ++ :cond_87 ++ :goto_87 ++ sget v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpOutReceivers:I ++ ++ const/4 v3, 0x1 ++ ++ if-le v2, v3, :cond_c8 ++ ++ sget v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpOutReceivers:I ++ ++ add-int/lit8 v2, v2, -0x1 ++ ++ sput v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpOutReceivers:I ++ ++ :cond_92 ++ :goto_92 ++ return-void ++ ++ :cond_93 ++ :try_start_93 ++ sget-wide v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpOutHash:J ++ ++ invoke-static/range {p2 .. p2}, Landroid/privacy/surrogate/PrivacyActivityManagerService;->hashCode(Landroid/content/Intent;)J ++ ++ move-result-wide v4 ++ ++ cmp-long v2, v2, v4 ++ ++ if-nez v2, :cond_87 ++ ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpOut:Landroid/content/Intent; ++ ++ const-string v3, "android.intent.extra.PHONE_NUMBER" ++ ++ invoke-virtual {v2, v3}, Landroid/content/Intent;->getStringExtra(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object v23 ++ ++ const-string v2, "android.intent.extra.PHONE_NUMBER" ++ ++ move-object/from16 v0, p2 ++ ++ move-object/from16 v1, v23 ++ ++ invoke-virtual {v0, v2, v1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent; ++ ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v5, 0x0 ++ ++ const-string/jumbo v6, "outgoingCall" ++ ++ const/4 v7, 0x0 ++ ++ move-object/from16 v3, p0 ++ ++ move/from16 v4, p1 ++ ++ invoke-virtual/range {v2 .. v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ :try_end_bc ++ .catch Ljava/lang/Exception; {:try_start_93 .. :try_end_bc} :catch_bd ++ ++ goto :goto_87 ++ ++ :catch_bd ++ move-exception v20 ++ ++ const-string v2, "PrivacyActivityManagerService" ++ ++ const-string v3, "failed to enforce intent broadcast permission" ++ ++ move-object/from16 v0, v20 ++ ++ invoke-static {v2, v3, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto :goto_87 ++ ++ :cond_c8 ++ const/4 v2, 0x0 ++ ++ sput-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpOut:Landroid/content/Intent; ++ ++ goto :goto_92 ++ ++ :cond_cc ++ const-string v2, "android.intent.action.PHONE_STATE" ++ ++ move-object/from16 v0, v16 ++ ++ invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_170 ++ ++ const-string v2, "incoming_number" ++ ++ move-object/from16 v0, p2 ++ ++ invoke-virtual {v0, v2}, Landroid/content/Intent;->getStringExtra(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object v23 ++ ++ if-eqz v23, :cond_92 ++ ++ invoke-virtual/range {v23 .. v23}, Ljava/lang/String;->isEmpty()Z ++ ++ move-result v2 ++ ++ if-nez v2, :cond_92 ++ ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ move-object/from16 v0, p0 ++ ++ move/from16 v1, p1 ++ ++ invoke-virtual {v2, v0, v1}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v8 ++ ++ sget-wide v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpInHash:J ++ ++ invoke-static/range {p2 .. p2}, Landroid/privacy/surrogate/PrivacyActivityManagerService;->hashCode(Landroid/content/Intent;)J ++ ++ move-result-wide v4 ++ ++ cmp-long v2, v2, v4 ++ ++ if-eqz v2, :cond_10a ++ ++ invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->clone()Ljava/lang/Object; ++ ++ move-result-object v2 ++ ++ check-cast v2, Landroid/content/Intent; ++ ++ sput-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpIn:Landroid/content/Intent; ++ ++ invoke-static/range {p2 .. p2}, Landroid/privacy/surrogate/PrivacyActivityManagerService;->hashCode(Landroid/content/Intent;)J ++ ++ move-result-wide v2 ++ ++ sput-wide v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpInHash:J ++ ++ sput p4, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpInReceivers:I ++ ++ :cond_10a ++ if-eqz v8, :cond_137 ++ ++ :try_start_10c ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getIncomingCallsSetting()B ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_137 ++ ++ const-string v23, "" ++ ++ const-string v2, "incoming_number" ++ ++ move-object/from16 v0, p2 ++ ++ move-object/from16 v1, v23 ++ ++ invoke-virtual {v0, v2, v1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent; ++ ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v5, 0x1 ++ ++ const-string v6, "incomingCall" ++ ++ const/4 v7, 0x0 ++ ++ move-object/from16 v3, p0 ++ ++ move/from16 v4, p1 ++ ++ invoke-virtual/range {v2 .. v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ :try_end_12a ++ .catch Ljava/lang/Exception; {:try_start_10c .. :try_end_12a} :catch_160 ++ ++ :cond_12a ++ :goto_12a ++ sget v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpInReceivers:I ++ ++ const/4 v3, 0x1 ++ ++ if-le v2, v3, :cond_16b ++ ++ sget v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpInReceivers:I ++ ++ add-int/lit8 v2, v2, -0x1 ++ ++ sput v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpInReceivers:I ++ ++ goto/16 :goto_92 ++ ++ :cond_137 ++ :try_start_137 ++ sget-wide v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpInHash:J ++ ++ invoke-static/range {p2 .. p2}, Landroid/privacy/surrogate/PrivacyActivityManagerService;->hashCode(Landroid/content/Intent;)J ++ ++ move-result-wide v4 ++ ++ cmp-long v2, v2, v4 ++ ++ if-nez v2, :cond_12a ++ ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpIn:Landroid/content/Intent; ++ ++ const-string v3, "incoming_number" ++ ++ invoke-virtual {v2, v3}, Landroid/content/Intent;->getStringExtra(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object v23 ++ ++ const-string v2, "incoming_number" ++ ++ move-object/from16 v0, p2 ++ ++ move-object/from16 v1, v23 ++ ++ invoke-virtual {v0, v2, v1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent; ++ ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v5, 0x0 ++ ++ const-string v6, "incomingCall" ++ ++ const/4 v7, 0x0 ++ ++ move-object/from16 v3, p0 ++ ++ move/from16 v4, p1 ++ ++ invoke-virtual/range {v2 .. v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ :try_end_15f ++ .catch Ljava/lang/Exception; {:try_start_137 .. :try_end_15f} :catch_160 ++ ++ goto :goto_12a ++ ++ :catch_160 ++ move-exception v20 ++ ++ const-string v2, "PrivacyActivityManagerService" ++ ++ const-string v3, "failed to enforce intent broadcast permission" ++ ++ move-object/from16 v0, v20 ++ ++ invoke-static {v2, v3, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto :goto_12a ++ ++ :cond_16b ++ const/4 v2, 0x0 ++ ++ sput-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpIn:Landroid/content/Intent; ++ ++ goto/16 :goto_92 ++ ++ :cond_170 ++ const-string v2, "android.provider.Telephony.SMS_RECEIVED" ++ ++ move-object/from16 v0, v16 ++ ++ invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_253 ++ ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ move-object/from16 v0, p0 ++ ++ move/from16 v1, p1 ++ ++ invoke-virtual {v2, v0, v1}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v8 ++ ++ const-string v23, "[real]" ++ ++ const-string/jumbo v2, "pdus" ++ ++ move-object/from16 v0, p2 ++ ++ invoke-virtual {v0, v2}, Landroid/content/Intent;->getSerializableExtra(Ljava/lang/String;)Ljava/io/Serializable; ++ ++ move-result-object v2 ++ ++ check-cast v2, [Ljava/lang/Object; ++ ++ move-object/from16 v22, v2 ++ ++ check-cast v22, [Ljava/lang/Object; ++ ++ if-eqz v22, :cond_1f8 ++ ++ const/4 v2, 0x0 ++ ++ aget-object v2, v22, v2 ++ ++ check-cast v2, [B ++ ++ check-cast v2, [B ++ ++ move-object/from16 v19, v2 ++ ++ :goto_1a0 ++ sget-wide v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpSmsHash:J ++ ++ invoke-static/range {p2 .. p2}, Landroid/privacy/surrogate/PrivacyActivityManagerService;->hashCode(Landroid/content/Intent;)J ++ ++ move-result-wide v4 ++ ++ cmp-long v2, v2, v4 ++ ++ if-eqz v2, :cond_1ba ++ ++ invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->clone()Ljava/lang/Object; ++ ++ move-result-object v2 ++ ++ check-cast v2, Landroid/content/Intent; ++ ++ sput-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpSms:Landroid/content/Intent; ++ ++ invoke-static/range {p2 .. p2}, Landroid/privacy/surrogate/PrivacyActivityManagerService;->hashCode(Landroid/content/Intent;)J ++ ++ move-result-wide v2 ++ ++ sput-wide v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpSmsHash:J ++ ++ sput p4, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpSmsReceivers:I ++ ++ :cond_1ba ++ if-eqz v8, :cond_1fb ++ ++ :try_start_1bc ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getSmsSetting()B ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_1fb ++ ++ const-string v23, "[empty]" ++ ++ const/4 v2, 0x1 ++ ++ new-array v0, v2, [Ljava/lang/Object; ++ ++ move-object/from16 v21, v0 ++ ++ const/4 v2, 0x0 ++ ++ const/16 v3, 0x10 ++ ++ new-array v3, v3, [B ++ ++ fill-array-data v3, :array_3da ++ ++ aput-object v3, v21, v2 ++ ++ const-string/jumbo v2, "pdus" ++ ++ move-object/from16 v0, p2 ++ ++ move-object/from16 v1, v21 ++ ++ invoke-virtual {v0, v2, v1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/io/Serializable;)Landroid/content/Intent; ++ ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v5, 0x1 ++ ++ const-string/jumbo v6, "sms" ++ ++ const/4 v7, 0x0 ++ ++ move-object/from16 v3, p0 ++ ++ move/from16 v4, p1 ++ ++ invoke-virtual/range {v2 .. v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ :try_end_1eb ++ .catch Ljava/lang/Exception; {:try_start_1bc .. :try_end_1eb} :catch_240 ++ ++ :cond_1eb ++ :goto_1eb ++ sget v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpSmsReceivers:I ++ ++ const/4 v3, 0x1 ++ ++ if-le v2, v3, :cond_24e ++ ++ sget v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpSmsReceivers:I ++ ++ add-int/lit8 v2, v2, -0x1 ++ ++ sput v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpSmsReceivers:I ++ ++ goto/16 :goto_92 ++ ++ :cond_1f8 ++ const/16 v19, 0x0 ++ ++ goto :goto_1a0 ++ ++ :cond_1fb ++ :try_start_1fb ++ sget-wide v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpSmsHash:J ++ ++ invoke-static/range {p2 .. p2}, Landroid/privacy/surrogate/PrivacyActivityManagerService;->hashCode(Landroid/content/Intent;)J ++ ++ move-result-wide v4 ++ ++ cmp-long v2, v2, v4 ++ ++ if-nez v2, :cond_1eb ++ ++ const-string/jumbo v2, "pdus" ++ ++ sget-object v3, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpSms:Landroid/content/Intent; ++ ++ const-string/jumbo v4, "pdus" ++ ++ invoke-virtual {v3, v4}, Landroid/content/Intent;->getSerializableExtra(Ljava/lang/String;)Ljava/io/Serializable; ++ ++ move-result-object v3 ++ ++ move-object/from16 v0, p2 ++ ++ invoke-virtual {v0, v2, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/io/Serializable;)Landroid/content/Intent; ++ ++ const-string/jumbo v2, "pdus" ++ ++ move-object/from16 v0, p2 ++ ++ invoke-virtual {v0, v2}, Landroid/content/Intent;->getSerializableExtra(Ljava/lang/String;)Ljava/io/Serializable; ++ ++ move-result-object v2 ++ ++ check-cast v2, [Ljava/lang/Object; ++ ++ move-object v0, v2 ++ ++ check-cast v0, [Ljava/lang/Object; ++ ++ move-object/from16 v22, v0 ++ ++ if-eqz v22, :cond_24b ++ ++ const/4 v2, 0x0 ++ ++ aget-object v2, v22, v2 ++ ++ check-cast v2, [B ++ ++ check-cast v2, [B ++ ++ move-object/from16 v19, v2 ++ ++ :goto_231 ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v5, 0x0 ++ ++ const-string/jumbo v6, "sms" ++ ++ const/4 v7, 0x0 ++ ++ move-object/from16 v3, p0 ++ ++ move/from16 v4, p1 ++ ++ invoke-virtual/range {v2 .. v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ :try_end_23f ++ .catch Ljava/lang/Exception; {:try_start_1fb .. :try_end_23f} :catch_240 ++ ++ goto :goto_1eb ++ ++ :catch_240 ++ move-exception v20 ++ ++ const-string v2, "PrivacyActivityManagerService" ++ ++ const-string v3, "failed to enforce intent broadcast permission" ++ ++ move-object/from16 v0, v20 ++ ++ invoke-static {v2, v3, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto :goto_1eb ++ ++ :cond_24b ++ const/16 v19, 0x0 ++ ++ goto :goto_231 ++ ++ :cond_24e ++ const/4 v2, 0x0 ++ ++ sput-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpSms:Landroid/content/Intent; ++ ++ goto/16 :goto_92 ++ ++ :cond_253 ++ const-string v2, "android.provider.Telephony.WAP_PUSH_RECEIVED" ++ ++ move-object/from16 v0, v16 ++ ++ invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v2 ++ ++ if-nez v2, :cond_267 ++ ++ const-string v2, "android.intent.action.DATA_SMS_RECEIVED" ++ ++ move-object/from16 v0, v16 ++ ++ invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_340 ++ ++ :cond_267 ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ move-object/from16 v0, p0 ++ ++ move/from16 v1, p1 ++ ++ invoke-virtual {v2, v0, v1}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v8 ++ ++ const-string v23, "[real]" ++ ++ const-string/jumbo v2, "pdus" ++ ++ move-object/from16 v0, p2 ++ ++ invoke-virtual {v0, v2}, Landroid/content/Intent;->getSerializableExtra(Ljava/lang/String;)Ljava/io/Serializable; ++ ++ move-result-object v2 ++ ++ check-cast v2, [Ljava/lang/Object; ++ ++ move-object/from16 v22, v2 ++ ++ check-cast v22, [Ljava/lang/Object; ++ ++ if-eqz v22, :cond_2e5 ++ ++ const/4 v2, 0x0 ++ ++ aget-object v2, v22, v2 ++ ++ check-cast v2, [B ++ ++ check-cast v2, [B ++ ++ move-object/from16 v19, v2 ++ ++ :goto_28d ++ sget-wide v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpMmsHash:J ++ ++ invoke-static/range {p2 .. p2}, Landroid/privacy/surrogate/PrivacyActivityManagerService;->hashCode(Landroid/content/Intent;)J ++ ++ move-result-wide v4 ++ ++ cmp-long v2, v2, v4 ++ ++ if-eqz v2, :cond_2a7 ++ ++ invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->clone()Ljava/lang/Object; ++ ++ move-result-object v2 ++ ++ check-cast v2, Landroid/content/Intent; ++ ++ sput-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpMms:Landroid/content/Intent; ++ ++ invoke-static/range {p2 .. p2}, Landroid/privacy/surrogate/PrivacyActivityManagerService;->hashCode(Landroid/content/Intent;)J ++ ++ move-result-wide v2 ++ ++ sput-wide v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpMmsHash:J ++ ++ sput p4, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpMmsReceivers:I ++ ++ :cond_2a7 ++ if-eqz v8, :cond_2e8 ++ ++ :try_start_2a9 ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getMmsSetting()B ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_2e8 ++ ++ const-string v23, "[empty]" ++ ++ const/4 v2, 0x1 ++ ++ new-array v0, v2, [Ljava/lang/Object; ++ ++ move-object/from16 v21, v0 ++ ++ const/4 v2, 0x0 ++ ++ const/16 v3, 0x10 ++ ++ new-array v3, v3, [B ++ ++ fill-array-data v3, :array_3e6 ++ ++ aput-object v3, v21, v2 ++ ++ const-string/jumbo v2, "pdus" ++ ++ move-object/from16 v0, p2 ++ ++ move-object/from16 v1, v21 ++ ++ invoke-virtual {v0, v2, v1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/io/Serializable;)Landroid/content/Intent; ++ ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v5, 0x1 ++ ++ const-string/jumbo v6, "mms" ++ ++ const/4 v7, 0x0 ++ ++ move-object/from16 v3, p0 ++ ++ move/from16 v4, p1 ++ ++ invoke-virtual/range {v2 .. v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ :try_end_2d8 ++ .catch Ljava/lang/Exception; {:try_start_2a9 .. :try_end_2d8} :catch_32d ++ ++ :cond_2d8 ++ :goto_2d8 ++ sget v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpMmsReceivers:I ++ ++ const/4 v3, 0x1 ++ ++ if-le v2, v3, :cond_33b ++ ++ sget v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpMmsReceivers:I ++ ++ add-int/lit8 v2, v2, -0x1 ++ ++ sput v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpMmsReceivers:I ++ ++ goto/16 :goto_92 ++ ++ :cond_2e5 ++ const/16 v19, 0x0 ++ ++ goto :goto_28d ++ ++ :cond_2e8 ++ :try_start_2e8 ++ sget-wide v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpMmsHash:J ++ ++ invoke-static/range {p2 .. p2}, Landroid/privacy/surrogate/PrivacyActivityManagerService;->hashCode(Landroid/content/Intent;)J ++ ++ move-result-wide v4 ++ ++ cmp-long v2, v2, v4 ++ ++ if-nez v2, :cond_2d8 ++ ++ const-string/jumbo v2, "pdus" ++ ++ sget-object v3, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpMms:Landroid/content/Intent; ++ ++ const-string/jumbo v4, "pdus" ++ ++ invoke-virtual {v3, v4}, Landroid/content/Intent;->getSerializableExtra(Ljava/lang/String;)Ljava/io/Serializable; ++ ++ move-result-object v3 ++ ++ move-object/from16 v0, p2 ++ ++ invoke-virtual {v0, v2, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/io/Serializable;)Landroid/content/Intent; ++ ++ const-string/jumbo v2, "pdus" ++ ++ move-object/from16 v0, p2 ++ ++ invoke-virtual {v0, v2}, Landroid/content/Intent;->getSerializableExtra(Ljava/lang/String;)Ljava/io/Serializable; ++ ++ move-result-object v2 ++ ++ check-cast v2, [Ljava/lang/Object; ++ ++ move-object v0, v2 ++ ++ check-cast v0, [Ljava/lang/Object; ++ ++ move-object/from16 v22, v0 ++ ++ if-eqz v22, :cond_338 ++ ++ const/4 v2, 0x0 ++ ++ aget-object v2, v22, v2 ++ ++ check-cast v2, [B ++ ++ check-cast v2, [B ++ ++ move-object/from16 v19, v2 ++ ++ :goto_31e ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v5, 0x0 ++ ++ const-string/jumbo v6, "mms" ++ ++ const/4 v7, 0x0 ++ ++ move-object/from16 v3, p0 ++ ++ move/from16 v4, p1 ++ ++ invoke-virtual/range {v2 .. v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ :try_end_32c ++ .catch Ljava/lang/Exception; {:try_start_2e8 .. :try_end_32c} :catch_32d ++ ++ goto :goto_2d8 ++ ++ :catch_32d ++ move-exception v20 ++ ++ const-string v2, "PrivacyActivityManagerService" ++ ++ const-string v3, "failed to enforce intent broadcast permission" ++ ++ move-object/from16 v0, v20 ++ ++ invoke-static {v2, v3, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto :goto_2d8 ++ ++ :cond_338 ++ const/16 v19, 0x0 ++ ++ goto :goto_31e ++ ++ :cond_33b ++ const/4 v2, 0x0 ++ ++ sput-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpMms:Landroid/content/Intent; ++ ++ goto/16 :goto_92 ++ ++ :cond_340 ++ const-string v2, "android.intent.action.BOOT_COMPLETED" ++ ++ move-object/from16 v0, v16 ++ ++ invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_38d ++ ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v2}, Landroid/privacy/PrivacySettingsManager;->setBootCompleted()V ++ ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ move-object/from16 v0, p0 ++ ++ invoke-virtual {v2, v0}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v8 ++ ++ if-eqz v8, :cond_376 ++ ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getIntentBootCompletedSetting()B ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_376 ++ ++ const-string v2, "catchBootComplete" ++ ++ move-object/from16 v0, p2 ++ ++ invoke-virtual {v0, v2}, Landroid/content/Intent;->setAction(Ljava/lang/String;)Landroid/content/Intent; ++ ++ sget-object v9, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v12, 0x1 ++ ++ const-string v13, "intentBootCompleted" ++ ++ const/4 v14, 0x0 ++ ++ const/4 v15, 0x0 ++ ++ move-object/from16 v10, p0 ++ ++ move/from16 v11, p1 ++ ++ invoke-virtual/range {v9 .. v15}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_92 ++ ++ :cond_376 ++ const-string v2, "android.intent.action.BOOT_COMPLETED" ++ ++ move-object/from16 v0, p2 ++ ++ invoke-virtual {v0, v2}, Landroid/content/Intent;->setAction(Ljava/lang/String;)Landroid/content/Intent; ++ ++ sget-object v9, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v12, 0x0 ++ ++ const-string v13, "intentBootCompleted" ++ ++ const/4 v14, 0x0 ++ ++ const/4 v15, 0x0 ++ ++ move-object/from16 v10, p0 ++ ++ move/from16 v11, p1 ++ ++ invoke-virtual/range {v9 .. v15}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_92 ++ ++ :cond_38d ++ const-string v2, "android.intent.action.PACKAGE_ADDED" ++ ++ move-object/from16 v0, v16 ++ ++ invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_92 ++ ++ sget-wide v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpPackageAddedHash:J ++ ++ invoke-static/range {p2 .. p2}, Landroid/privacy/surrogate/PrivacyActivityManagerService;->hashCode(Landroid/content/Intent;)J ++ ++ move-result-wide v4 ++ ++ cmp-long v2, v2, v4 ++ ++ if-eqz v2, :cond_92 ++ ++ invoke-static/range {p2 .. p2}, Landroid/privacy/surrogate/PrivacyActivityManagerService;->hashCode(Landroid/content/Intent;)J ++ ++ move-result-wide v2 ++ ++ sput-wide v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->tmpPackageAddedHash:J ++ ++ invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->getData()Landroid/net/Uri; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2}, Landroid/net/Uri;->getSchemeSpecificPart()Ljava/lang/String; ++ ++ move-result-object v17 ++ ++ invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->getExtras()Landroid/os/Bundle; ++ ++ move-result-object v2 ++ ++ const-string v3, "android.intent.extra.UID" ++ ++ invoke-virtual {v2, v3}, Landroid/os/Bundle;->getInt(Ljava/lang/String;)I ++ ++ move-result v18 ++ ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ move-object/from16 v0, v17 ++ ++ move/from16 v1, v18 ++ ++ invoke-virtual {v2, v0, v1}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v8 ++ ++ if-eqz v8, :cond_92 ++ ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getUid()I ++ ++ move-result v2 ++ ++ move/from16 v0, v18 ++ ++ if-eq v2, v0, :cond_92 ++ ++ move/from16 v0, v18 ++ ++ invoke-virtual {v8, v0}, Landroid/privacy/PrivacySettings;->setUid(I)V ++ ++ sget-object v2, Landroid/privacy/surrogate/PrivacyActivityManagerService;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v2, v8}, Landroid/privacy/PrivacySettingsManager;->saveSettings(Landroid/privacy/PrivacySettings;)Z ++ ++ goto/16 :goto_92 ++ ++ nop ++ ++ :array_3da ++ .array-data 0x1 ++ 0x0t ++ 0x20t ++ 0x1t ++ 0x81t ++ 0xf0t ++ 0x0t ++ 0x0t ++ 0x11t ++ 0x90t ++ 0x1t ++ 0x30t ++ 0x22t ++ 0x22t ++ 0x80t ++ 0x1t ++ 0x20t ++ .end array-data ++ ++ :array_3e6 ++ .array-data 0x1 ++ 0x0t ++ 0x20t ++ 0x1t ++ 0x81t ++ 0xf0t ++ 0x0t ++ 0x0t ++ 0x11t ++ 0x90t ++ 0x1t ++ 0x30t ++ 0x22t ++ 0x22t ++ 0x80t ++ 0x1t ++ 0x20t ++ .end array-data ++.end method ++ ++.method private static hashCode(Landroid/content/Intent;)J ++ .registers 7 ++ ++ const-wide/16 v3, 0x0 ++ ++ const-string/jumbo v2, "privacy_hash" ++ ++ invoke-virtual {p0, v2, v3, v4}, Landroid/content/Intent;->getLongExtra(Ljava/lang/String;J)J ++ ++ move-result-wide v0 ++ ++ cmp-long v2, v0, v3 ++ ++ if-nez v2, :cond_1e ++ ++ invoke-virtual {p0}, Landroid/content/Intent;->filterHashCode()I ++ ++ move-result v2 ++ ++ int-to-long v2, v2 ++ ++ invoke-static {}, Ljava/lang/System;->currentTimeMillis()J ++ ++ move-result-wide v4 ++ ++ add-long v0, v2, v4 ++ ++ const-string/jumbo v2, "privacy_hash" ++ ++ invoke-virtual {p0, v2, v0, v1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;J)Landroid/content/Intent; ++ ++ :cond_1e ++ return-wide v0 ++.end method +diff -Npru stock-framework/smali/android/privacy/surrogate/PrivacyConnectivityManager.smali pdroid-framework/smali/android/privacy/surrogate/PrivacyConnectivityManager.smali +--- stock-framework/smali/android/privacy/surrogate/PrivacyConnectivityManager.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/surrogate/PrivacyConnectivityManager.smali 2013-08-10 20:37:42.503213441 -0700 +@@ -0,0 +1,1045 @@ ++.class public Landroid/privacy/surrogate/PrivacyConnectivityManager; ++.super Landroid/net/ConnectivityManager; ++.source "PrivacyConnectivityManager.java" ++ ++ ++# static fields ++.field private static final P_TAG:Ljava/lang/String; = "PrivacyConnectivityManager" ++ ++ ++# instance fields ++.field private context:Landroid/content/Context; ++ ++.field private pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ ++# direct methods ++.method public constructor (Landroid/net/IConnectivityManager;Landroid/content/Context;)V ++ .registers 6 ++ ++ invoke-direct {p0, p1}, Landroid/net/ConnectivityManager;->(Landroid/net/IConnectivityManager;)V ++ ++ iput-object p2, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ new-instance v0, Landroid/privacy/PrivacySettingsManager; ++ ++ const-string/jumbo v1, "privacy" ++ ++ invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v1 ++ ++ invoke-direct {v0, p2, v1}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v0, "PrivacyConnectivityManager" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string/jumbo v2, "now in constructor for package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {p2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public getActiveLinkProperties()Landroid/net/LinkProperties; ++ .registers 10 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v5, 0x0 ++ ++ new-instance v7, Landroid/net/LinkProperties; ++ ++ invoke-direct {v7}, Landroid/net/LinkProperties;->()V ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v8 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_34 ++ ++ if-eqz v8, :cond_34 ++ ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_34 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_33 ++ return-object v7 ++ ++ :cond_34 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x0 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Landroid/net/ConnectivityManager;->getActiveLinkProperties()Landroid/net/LinkProperties; ++ ++ move-result-object v7 ++ ++ goto :goto_33 ++.end method ++ ++.method public getActiveNetworkInfo()Landroid/net/NetworkInfo; ++ .registers 10 ++ ++ const/4 v3, 0x1 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v6, 0x0 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v4 ++ ++ invoke-virtual {v0, v1, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v8 ++ ++ new-instance v7, Landroid/net/NetworkInfo; ++ ++ const-string v0, "MOBILE" ++ ++ const-string v1, "UNKNOWN" ++ ++ invoke-direct {v7, v6, v6, v0, v1}, Landroid/net/NetworkInfo;->(IILjava/lang/String;Ljava/lang/String;)V ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_31 ++ ++ if-eqz v8, :cond_31 ++ ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getForceOnlineState()B ++ ++ move-result v0 ++ ++ if-nez v0, :cond_31 ++ ++ invoke-virtual {v7, v3}, Landroid/net/NetworkInfo;->setIsAvailable(Z)V ++ ++ sget-object v0, Landroid/net/NetworkInfo$State;->CONNECTED:Landroid/net/NetworkInfo$State; ++ ++ invoke-virtual {v7, v0}, Landroid/net/NetworkInfo;->setState(Landroid/net/NetworkInfo$State;)V ++ ++ :cond_31 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_4d ++ ++ if-eqz v8, :cond_4d ++ ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4d ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4c ++ return-object v7 ++ ++ :cond_4d ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move v3, v6 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Landroid/net/ConnectivityManager;->getActiveNetworkInfo()Landroid/net/NetworkInfo; ++ ++ move-result-object v7 ++ ++ goto :goto_4c ++.end method ++ ++.method public getActiveNetworkInfoForUid(I)Landroid/net/NetworkInfo; ++ .registers 11 ++ ++ const/4 v3, 0x1 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v6, 0x0 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v4 ++ ++ invoke-virtual {v0, v1, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v8 ++ ++ new-instance v7, Landroid/net/NetworkInfo; ++ ++ const-string v0, "MOBILE" ++ ++ const-string v1, "UNKNOWN" ++ ++ invoke-direct {v7, v6, v6, v0, v1}, Landroid/net/NetworkInfo;->(IILjava/lang/String;Ljava/lang/String;)V ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_31 ++ ++ if-eqz v8, :cond_31 ++ ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getForceOnlineState()B ++ ++ move-result v0 ++ ++ if-nez v0, :cond_31 ++ ++ invoke-virtual {v7, v3}, Landroid/net/NetworkInfo;->setIsAvailable(Z)V ++ ++ sget-object v0, Landroid/net/NetworkInfo$State;->CONNECTED:Landroid/net/NetworkInfo$State; ++ ++ invoke-virtual {v7, v0}, Landroid/net/NetworkInfo;->setState(Landroid/net/NetworkInfo$State;)V ++ ++ :cond_31 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_4d ++ ++ if-eqz v8, :cond_4d ++ ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4d ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4c ++ return-object v7 ++ ++ :cond_4d ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move v3, v6 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1}, Landroid/net/ConnectivityManager;->getActiveNetworkInfoForUid(I)Landroid/net/NetworkInfo; ++ ++ move-result-object v7 ++ ++ goto :goto_4c ++.end method ++ ++.method public getAllNetworkInfo()[Landroid/net/NetworkInfo; ++ .registers 10 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v3, 0x1 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v6, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v4 ++ ++ invoke-virtual {v0, v1, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v8 ++ ++ new-array v7, v3, [Landroid/net/NetworkInfo; ++ ++ new-instance v0, Landroid/net/NetworkInfo; ++ ++ const-string v1, "MOBILE" ++ ++ const-string v4, "CONNECTED" ++ ++ invoke-direct {v0, v6, v6, v1, v4}, Landroid/net/NetworkInfo;->(IILjava/lang/String;Ljava/lang/String;)V ++ ++ aput-object v0, v7, v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_39 ++ ++ if-eqz v8, :cond_39 ++ ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getForceOnlineState()B ++ ++ move-result v0 ++ ++ if-nez v0, :cond_39 ++ ++ aget-object v0, v7, v6 ++ ++ invoke-virtual {v0, v3}, Landroid/net/NetworkInfo;->setIsAvailable(Z)V ++ ++ aget-object v0, v7, v6 ++ ++ sget-object v1, Landroid/net/NetworkInfo$State;->CONNECTED:Landroid/net/NetworkInfo$State; ++ ++ invoke-virtual {v0, v1}, Landroid/net/NetworkInfo;->setState(Landroid/net/NetworkInfo$State;)V ++ ++ :cond_39 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_55 ++ ++ if-eqz v8, :cond_55 ++ ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_55 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_54 ++ return-object v7 ++ ++ :cond_55 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move v3, v6 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Landroid/net/ConnectivityManager;->getAllNetworkInfo()[Landroid/net/NetworkInfo; ++ ++ move-result-object v7 ++ ++ goto :goto_54 ++.end method ++ ++.method public getLinkProperties(I)Landroid/net/LinkProperties; ++ .registers 11 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v5, 0x0 ++ ++ new-instance v7, Landroid/net/LinkProperties; ++ ++ invoke-direct {v7}, Landroid/net/LinkProperties;->()V ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v8 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_34 ++ ++ if-eqz v8, :cond_34 ++ ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_34 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_33 ++ return-object v7 ++ ++ :cond_34 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x0 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1}, Landroid/net/ConnectivityManager;->getLinkProperties(I)Landroid/net/LinkProperties; ++ ++ move-result-object v7 ++ ++ goto :goto_33 ++.end method ++ ++.method public getMobileDataEnabled()Z ++ .registers 9 ++ ++ const/4 v3, 0x1 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v4 ++ ++ invoke-virtual {v0, v1, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_2f ++ ++ if-eqz v7, :cond_2f ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getForceOnlineState()B ++ ++ move-result v0 ++ ++ if-nez v0, :cond_2f ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_2e ++ return v3 ++ ++ :cond_2f ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x0 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Landroid/net/ConnectivityManager;->getMobileDataEnabled()Z ++ ++ move-result v3 ++ ++ goto :goto_2e ++.end method ++ ++.method public getNetworkInfo(I)Landroid/net/NetworkInfo; ++ .registers 11 ++ ++ const/4 v3, 0x1 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v6, 0x0 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v4 ++ ++ invoke-virtual {v0, v1, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v8 ++ ++ new-instance v7, Landroid/net/NetworkInfo; ++ ++ const-string v0, "MOBILE" ++ ++ const-string v1, "CONNECTED" ++ ++ invoke-direct {v7, v6, v6, v0, v1}, Landroid/net/NetworkInfo;->(IILjava/lang/String;Ljava/lang/String;)V ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_31 ++ ++ if-eqz v8, :cond_31 ++ ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getForceOnlineState()B ++ ++ move-result v0 ++ ++ if-nez v0, :cond_31 ++ ++ invoke-virtual {v7, v3}, Landroid/net/NetworkInfo;->setIsAvailable(Z)V ++ ++ sget-object v0, Landroid/net/NetworkInfo$State;->CONNECTED:Landroid/net/NetworkInfo$State; ++ ++ invoke-virtual {v7, v0}, Landroid/net/NetworkInfo;->setState(Landroid/net/NetworkInfo$State;)V ++ ++ :cond_31 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_4d ++ ++ if-eqz v8, :cond_4d ++ ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4d ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4c ++ return-object v7 ++ ++ :cond_4d ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move v3, v6 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1}, Landroid/net/ConnectivityManager;->getNetworkInfo(I)Landroid/net/NetworkInfo; ++ ++ move-result-object v7 ++ ++ goto :goto_4c ++.end method ++ ++.method public requestRouteToHost(II)Z ++ .registers 12 ++ ++ const/4 v8, 0x0 ++ ++ const/4 v3, 0x1 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v4 ++ ++ invoke-virtual {v0, v1, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_30 ++ ++ if-eqz v7, :cond_30 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getForceOnlineState()B ++ ++ move-result v0 ++ ++ if-nez v0, :cond_30 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_2f ++ return v3 ++ ++ :cond_30 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_4d ++ ++ if-eqz v7, :cond_4d ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4d ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ move v3, v8 ++ ++ goto :goto_2f ++ ++ :cond_4d ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move v3, v8 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1, p2}, Landroid/net/ConnectivityManager;->requestRouteToHost(II)Z ++ ++ move-result v3 ++ ++ goto :goto_2f ++.end method ++ ++.method public requestRouteToHostAddress(ILjava/net/InetAddress;)Z ++ .registers 12 ++ ++ const/4 v8, 0x0 ++ ++ const/4 v3, 0x1 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v4 ++ ++ invoke-virtual {v0, v1, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_30 ++ ++ if-eqz v7, :cond_30 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getForceOnlineState()B ++ ++ move-result v0 ++ ++ if-nez v0, :cond_30 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_2f ++ return v3 ++ ++ :cond_30 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_4d ++ ++ if-eqz v7, :cond_4d ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4d ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ move v3, v8 ++ ++ goto :goto_2f ++ ++ :cond_4d ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ move v3, v8 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1, p2}, Landroid/net/ConnectivityManager;->requestRouteToHostAddress(ILjava/net/InetAddress;)Z ++ ++ move-result v3 ++ ++ goto :goto_2f ++.end method ++ ++.method public setMobileDataEnabled(Z)V ++ .registers 10 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_2f ++ ++ if-eqz v7, :cond_2f ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getSwitchConnectivitySetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_2f ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string/jumbo v4, "switchconnectivity" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_2e ++ return-void ++ ++ :cond_2f ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyConnectivityManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x0 ++ ++ const-string/jumbo v4, "switchconnectivity" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1}, Landroid/net/ConnectivityManager;->setMobileDataEnabled(Z)V ++ ++ goto :goto_2e ++.end method +diff -Npru stock-framework/smali/android/privacy/surrogate/PrivacyContentResolver.smali pdroid-framework/smali/android/privacy/surrogate/PrivacyContentResolver.smali +--- stock-framework/smali/android/privacy/surrogate/PrivacyContentResolver.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/surrogate/PrivacyContentResolver.smali 2013-08-10 20:37:42.503213441 -0700 +@@ -0,0 +1,868 @@ ++.class public final Landroid/privacy/surrogate/PrivacyContentResolver; ++.super Ljava/lang/Object; ++.source "PrivacyContentResolver.java" ++ ++ ++# static fields ++.field private static final MMS_CONTENT_URI_AUTHORITY:Ljava/lang/String; = "mms" ++ ++.field private static final MMS_SMS_CONTENT_URI_AUTHORITY:Ljava/lang/String; = "mms-sms" ++ ++.field private static final SMS_CONTENT_URI_AUTHORITY:Ljava/lang/String; = "sms" ++ ++.field private static final TAG:Ljava/lang/String; = "PrivacyContentResolver" ++ ++.field private static pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ ++# direct methods ++.method public constructor ()V ++ .registers 1 ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ return-void ++.end method ++ ++.method private static arrayToString([Ljava/lang/String;)Ljava/lang/String; ++ .registers 8 ++ ++ new-instance v4, Ljava/lang/StringBuffer; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuffer;->()V ++ ++ if-eqz p0, :cond_2d ++ ++ move-object v0, p0 ++ ++ array-length v3, v0 ++ ++ const/4 v2, 0x0 ++ ++ :goto_a ++ if-ge v2, v3, :cond_30 ++ ++ aget-object v1, v0, v2 ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "[" ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ const-string v6, "]" ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer; ++ ++ add-int/lit8 v2, v2, 0x1 ++ ++ goto :goto_a ++ ++ :cond_2d ++ const-string v5, "" ++ ++ :goto_2f ++ return-object v5 ++ ++ :cond_30 ++ invoke-virtual {v4}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ goto :goto_2f ++.end method ++ ++.method public static enforcePrivacyPermission(Landroid/net/Uri;[Ljava/lang/String;Landroid/content/Context;Landroid/database/Cursor;)Landroid/database/Cursor; ++ .registers 21 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ if-eqz p0, :cond_1db ++ ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-nez v1, :cond_13 ++ ++ const-string/jumbo v1, "privacy" ++ ++ move-object/from16 v0, p2 ++ ++ invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; ++ ++ move-result-object v1 ++ ++ check-cast v1, Landroid/privacy/PrivacySettingsManager; ++ ++ sput-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ :cond_13 ++ invoke-virtual/range {p2 .. p2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v3 ++ ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v1, v2, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ invoke-virtual/range {p0 .. p0}, Landroid/net/Uri;->getAuthority()Ljava/lang/String; ++ ++ move-result-object v9 ++ ++ const-string v15, "[real]" ++ ++ move-object/from16 v13, p3 ++ ++ if-eqz v9, :cond_54 ++ ++ const-string v1, "contacts" ++ ++ invoke-virtual {v9, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v1 ++ ++ if-nez v1, :cond_3b ++ ++ const-string v1, "com.android.contacts" ++ ++ invoke-virtual {v9, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_ab ++ ++ :cond_3b ++ if-eqz v7, :cond_54 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getContactsSetting()B ++ ++ move-result v1 ++ ++ const/4 v4, 0x1 ++ ++ if-ne v1, v4, :cond_55 ++ ++ const-string v15, "[empty]" ++ ++ new-instance v13, Landroid/privacy/surrogate/PrivacyCursor; ++ ++ invoke-direct {v13}, Landroid/privacy/surrogate/PrivacyCursor;->()V ++ ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x1 ++ ++ const-string v5, "contacts" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_54 ++ :goto_54 ++ return-object v13 ++ ++ :cond_55 ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getContactsSetting()B ++ ++ move-result v1 ++ ++ const/4 v4, 0x2 ++ ++ if-ne v1, v4, :cond_a1 ++ ++ invoke-virtual/range {p0 .. p0}, Landroid/net/Uri;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ sget-object v4, Landroid/provider/ContactsContract$Contacts;->CONTENT_URI:Landroid/net/Uri; ++ ++ invoke-virtual {v4}, Landroid/net/Uri;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v1, v4}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_a1 ++ ++ const/4 v11, 0x0 ++ ++ if-eqz p1, :cond_82 ++ ++ move-object/from16 v8, p1 ++ ++ array-length v12, v8 ++ ++ const/4 v10, 0x0 ++ ++ :goto_73 ++ if-ge v10, v12, :cond_82 ++ ++ aget-object v16, v8, v10 ++ ++ const-string v1, "_id" ++ ++ move-object/from16 v0, v16 ++ ++ invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_93 ++ ++ const/4 v11, 0x1 ++ ++ :cond_82 ++ if-nez v11, :cond_96 ++ ++ new-instance v13, Landroid/privacy/surrogate/PrivacyCursor; ++ ++ invoke-direct {v13}, Landroid/privacy/surrogate/PrivacyCursor;->()V ++ ++ :goto_89 ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x2 ++ ++ const-string v5, "contacts" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_54 ++ ++ :cond_93 ++ add-int/lit8 v10, v10, 0x1 ++ ++ goto :goto_73 ++ ++ :cond_96 ++ new-instance v14, Landroid/privacy/surrogate/PrivacyCursor; ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getAllowedContacts()[I ++ ++ move-result-object v1 ++ ++ invoke-direct {v14, v13, v1}, Landroid/privacy/surrogate/PrivacyCursor;->(Landroid/database/Cursor;[I)V ++ ++ move-object v13, v14 ++ ++ goto :goto_89 ++ ++ :cond_a1 ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x0 ++ ++ const-string v5, "contacts" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_54 ++ ++ :cond_ab ++ const-string v1, "com.android.calendar" ++ ++ invoke-virtual {v9, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_d8 ++ ++ if-eqz v7, :cond_cd ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getCalendarSetting()B ++ ++ move-result v1 ++ ++ const/4 v4, 0x1 ++ ++ if-ne v1, v4, :cond_cd ++ ++ const-string v15, "[empty]" ++ ++ new-instance v13, Landroid/privacy/surrogate/PrivacyCursor; ++ ++ invoke-direct {v13}, Landroid/privacy/surrogate/PrivacyCursor;->()V ++ ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x1 ++ ++ const-string v5, "calendar" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_54 ++ ++ :cond_cd ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x0 ++ ++ const-string v5, "calendar" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_54 ++ ++ :cond_d8 ++ const-string/jumbo v1, "mms" ++ ++ invoke-virtual {v9, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_109 ++ ++ if-eqz v7, :cond_fd ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getMmsSetting()B ++ ++ move-result v1 ++ ++ const/4 v4, 0x1 ++ ++ if-ne v1, v4, :cond_fd ++ ++ const-string v15, "[empty]" ++ ++ new-instance v13, Landroid/privacy/surrogate/PrivacyCursor; ++ ++ invoke-direct {v13}, Landroid/privacy/surrogate/PrivacyCursor;->()V ++ ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x1 ++ ++ const-string/jumbo v5, "mms" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_54 ++ ++ :cond_fd ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x0 ++ ++ const-string/jumbo v5, "mms" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_54 ++ ++ :cond_109 ++ const-string/jumbo v1, "sms" ++ ++ invoke-virtual {v9, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_13a ++ ++ if-eqz v7, :cond_12e ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getSmsSetting()B ++ ++ move-result v1 ++ ++ const/4 v4, 0x1 ++ ++ if-ne v1, v4, :cond_12e ++ ++ const-string v15, "[empty]" ++ ++ new-instance v13, Landroid/privacy/surrogate/PrivacyCursor; ++ ++ invoke-direct {v13}, Landroid/privacy/surrogate/PrivacyCursor;->()V ++ ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x1 ++ ++ const-string/jumbo v5, "sms" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_54 ++ ++ :cond_12e ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x0 ++ ++ const-string/jumbo v5, "sms" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_54 ++ ++ :cond_13a ++ const-string/jumbo v1, "mms-sms" ++ ++ invoke-virtual {v9, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v1 ++ ++ if-nez v1, :cond_14c ++ ++ const-string/jumbo v1, "mms-sms-v2" ++ ++ invoke-virtual {v9, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_17b ++ ++ :cond_14c ++ if-eqz v7, :cond_16f ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getMmsSetting()B ++ ++ move-result v1 ++ ++ const/4 v4, 0x1 ++ ++ if-eq v1, v4, :cond_15c ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getSmsSetting()B ++ ++ move-result v1 ++ ++ const/4 v4, 0x1 ++ ++ if-ne v1, v4, :cond_16f ++ ++ :cond_15c ++ const-string v15, "[empty]" ++ ++ new-instance v13, Landroid/privacy/surrogate/PrivacyCursor; ++ ++ invoke-direct {v13}, Landroid/privacy/surrogate/PrivacyCursor;->()V ++ ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x1 ++ ++ const-string/jumbo v5, "mmsSms" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_54 ++ ++ :cond_16f ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x0 ++ ++ const-string/jumbo v5, "mmsSms" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_54 ++ ++ :cond_17b ++ const-string v1, "call_log" ++ ++ invoke-virtual {v9, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_1a9 ++ ++ if-eqz v7, :cond_19e ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getCallLogSetting()B ++ ++ move-result v1 ++ ++ const/4 v4, 0x1 ++ ++ if-ne v1, v4, :cond_19e ++ ++ const-string v15, "[empty]" ++ ++ new-instance v13, Landroid/privacy/surrogate/PrivacyCursor; ++ ++ invoke-direct {v13}, Landroid/privacy/surrogate/PrivacyCursor;->()V ++ ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x1 ++ ++ const-string v5, "callLog" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_54 ++ ++ :cond_19e ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x0 ++ ++ const-string v5, "callLog" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_54 ++ ++ :cond_1a9 ++ sget-object v1, Landroid/provider/Browser;->BOOKMARKS_URI:Landroid/net/Uri; ++ ++ invoke-virtual {v1}, Landroid/net/Uri;->getAuthority()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v9, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_54 ++ ++ if-eqz v7, :cond_1d0 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getBookmarksSetting()B ++ ++ move-result v1 ++ ++ const/4 v4, 0x1 ++ ++ if-ne v1, v4, :cond_1d0 ++ ++ const-string v15, "[empty]" ++ ++ new-instance v13, Landroid/privacy/surrogate/PrivacyCursor; ++ ++ invoke-direct {v13}, Landroid/privacy/surrogate/PrivacyCursor;->()V ++ ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x1 ++ ++ const-string v5, "bookmarks" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_54 ++ ++ :cond_1d0 ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x0 ++ ++ const-string v5, "bookmarks" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_54 ++ ++ :cond_1db ++ move-object/from16 v13, p3 ++ ++ goto/16 :goto_54 ++.end method ++ ++.method public static enforcePrivacyPermission(Landroid/net/Uri;[Ljava/lang/String;Landroid/content/Context;Landroid/database/Cursor;Z)Landroid/database/Cursor; ++ .registers 20 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Landroid/os/RemoteException; ++ } ++ .end annotation ++ ++ if-eqz p0, :cond_dd ++ ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-nez v1, :cond_13 ++ ++ const-string/jumbo v1, "privacy" ++ ++ move-object/from16 v0, p2 ++ ++ invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; ++ ++ move-result-object v1 ++ ++ check-cast v1, Landroid/privacy/PrivacySettingsManager; ++ ++ sput-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ :cond_13 ++ invoke-virtual/range {p2 .. p2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v3 ++ ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v1, v2, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ invoke-virtual {p0}, Landroid/net/Uri;->getAuthority()Ljava/lang/String; ++ ++ move-result-object v9 ++ ++ const-string v14, "[real]" ++ ++ move-object/from16 v13, p3 ++ ++ if-eqz v9, :cond_6d ++ ++ const-string v1, "com.google.android.gsf.gservices" ++ ++ invoke-virtual {v9, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_6d ++ ++ if-eqz v7, :cond_cb ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getSimInfoSetting()B ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_cb ++ ++ invoke-interface/range {p3 .. p3}, Landroid/database/Cursor;->getPosition()I ++ ++ move-result v8 ++ ++ const/4 v11, -0x1 ++ ++ const/4 v12, 0x0 ++ ++ :goto_41 ++ :try_start_41 ++ invoke-interface/range {p3 .. p3}, Landroid/database/Cursor;->getCount()I ++ ++ move-result v1 ++ ++ if-ge v12, v1, :cond_5d ++ ++ invoke-interface/range {p3 .. p3}, Landroid/database/Cursor;->moveToNext()Z ++ ++ const/4 v1, 0x0 ++ ++ move-object/from16 v0, p3 ++ ++ invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "android_id" ++ ++ invoke-virtual {v1, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_6e ++ ++ invoke-interface/range {p3 .. p3}, Landroid/database/Cursor;->getPosition()I ++ :try_end_5c ++ .catchall {:try_start_41 .. :try_end_5c} :catchall_8b ++ .catch Ljava/lang/Exception; {:try_start_41 .. :try_end_5c} :catch_71 ++ ++ move-result v11 ++ ++ :cond_5d ++ move-object/from16 v0, p3 ++ ++ invoke-interface {v0, v8}, Landroid/database/Cursor;->moveToPosition(I)Z ++ ++ const/4 v1, -0x1 ++ ++ if-ne v11, v1, :cond_9e ++ ++ const-string v1, "PrivacyContentResolver" ++ ++ const-string/jumbo v4, "now we return real cursor, because forbidden_pos is -1" ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :cond_6d ++ :goto_6d ++ return-object v13 ++ ++ :cond_6e ++ add-int/lit8 v12, v12, 0x1 ++ ++ goto :goto_41 ++ ++ :catch_71 ++ move-exception v10 ++ ++ :try_start_72 ++ const-string v1, "PrivacyContentResolver" ++ ++ const-string/jumbo v4, "something went wrong while getting blocked permission for android id" ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_7a ++ .catchall {:try_start_72 .. :try_end_7a} :catchall_8b ++ ++ move-object/from16 v0, p3 ++ ++ invoke-interface {v0, v8}, Landroid/database/Cursor;->moveToPosition(I)Z ++ ++ const/4 v1, -0x1 ++ ++ if-ne v11, v1, :cond_9e ++ ++ const-string v1, "PrivacyContentResolver" ++ ++ const-string/jumbo v4, "now we return real cursor, because forbidden_pos is -1" ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto :goto_6d ++ ++ :catchall_8b ++ move-exception v1 ++ ++ move-object/from16 v0, p3 ++ ++ invoke-interface {v0, v8}, Landroid/database/Cursor;->moveToPosition(I)Z ++ ++ const/4 v4, -0x1 ++ ++ if-ne v11, v4, :cond_9d ++ ++ const-string v1, "PrivacyContentResolver" ++ ++ const-string/jumbo v4, "now we return real cursor, because forbidden_pos is -1" ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto :goto_6d ++ ++ :cond_9d ++ throw v1 ++ ++ :cond_9e ++ const-string v1, "PrivacyContentResolver" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string/jumbo v5, "now blocking google access to android id and give fake cursor. forbidden_position: " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4, v11}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const-string v14, "[fake]" ++ ++ new-instance v13, Landroid/privacy/surrogate/PrivacyCursor; ++ ++ move-object/from16 v0, p3 ++ ++ invoke-direct {v13, v0, v11}, Landroid/privacy/surrogate/PrivacyCursor;->(Landroid/database/Cursor;I)V ++ ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x1 ++ ++ const-string/jumbo v5, "networkInfoSIM" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_6d ++ ++ :cond_cb ++ const-string v1, "PrivacyContentResolver" ++ ++ const-string v4, "google is allowed to get real cursor" ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ sget-object v1, Landroid/privacy/surrogate/PrivacyContentResolver;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x0 ++ ++ const-string/jumbo v5, "networkInfoSIM" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_6d ++ ++ :cond_dd ++ move-object/from16 v13, p3 ++ ++ goto :goto_6d ++.end method +diff -Npru stock-framework/smali/android/privacy/surrogate/PrivacyCursor.smali pdroid-framework/smali/android/privacy/surrogate/PrivacyCursor.smali +--- stock-framework/smali/android/privacy/surrogate/PrivacyCursor.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/surrogate/PrivacyCursor.smali 2013-08-10 20:37:42.503213441 -0700 +@@ -0,0 +1,1765 @@ ++.class public Landroid/privacy/surrogate/PrivacyCursor; ++.super Ljava/lang/Object; ++.source "PrivacyCursor.java" ++ ++# interfaces ++.implements Landroid/database/Cursor; ++ ++ ++# static fields ++.field private static final TAG:Ljava/lang/String; = "PrivacyCursor" ++ ++.field private static final mask:[Ljava/lang/String; ++ ++ ++# instance fields ++.field private allowedIdMapping:[I ++ ++.field private allowedIds:[I ++ ++.field private blockedColumnAndroidID:I ++ ++.field private googleCursor:Z ++ ++.field private realCursor:Landroid/database/Cursor; ++ ++ ++# direct methods ++.method static constructor ()V ++ .registers 3 ++ ++ const/16 v0, 0x10 ++ ++ new-array v0, v0, [Ljava/lang/String; ++ ++ const/4 v1, 0x0 ++ ++ const-string v2, "0" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x1 ++ ++ const-string v2, "1" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x2 ++ ++ const-string v2, "2" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x3 ++ ++ const-string v2, "3" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x4 ++ ++ const-string v2, "4" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x5 ++ ++ const-string v2, "5" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x6 ++ ++ const-string v2, "6" ++ ++ aput-object v2, v0, v1 ++ ++ const/4 v1, 0x7 ++ ++ const-string v2, "7" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x8 ++ ++ const-string v2, "8" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0x9 ++ ++ const-string v2, "9" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0xa ++ ++ const-string v2, "a" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0xb ++ ++ const-string v2, "b" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0xc ++ ++ const-string v2, "c" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0xd ++ ++ const-string v2, "d" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0xe ++ ++ const-string v2, "e" ++ ++ aput-object v2, v0, v1 ++ ++ const/16 v1, 0xf ++ ++ const-string v2, "f" ++ ++ aput-object v2, v0, v1 ++ ++ sput-object v0, Landroid/privacy/surrogate/PrivacyCursor;->mask:[Ljava/lang/String; ++ ++ return-void ++.end method ++ ++.method public constructor ()V ++ .registers 1 ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ return-void ++.end method ++ ++.method public constructor (Landroid/database/Cursor;I)V ++ .registers 6 ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ const/16 v0, -0xb ++ ++ if-ne p2, v0, :cond_28 ++ ++ const/4 v0, 0x0 ++ ++ iput-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ :goto_a ++ iput p2, p0, Landroid/privacy/surrogate/PrivacyCursor;->blockedColumnAndroidID:I ++ ++ const/4 v0, 0x1 ++ ++ iput-boolean v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->googleCursor:Z ++ ++ const-string v0, "PrivacyCursor" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "constructor is ready for google cursor! forbidden_position: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ return-void ++ ++ :cond_28 ++ iput-object p1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ goto :goto_a ++.end method ++ ++.method public constructor (Landroid/database/Cursor;[I)V ++ .registers 7 ++ ++ invoke-direct {p0}, Ljava/lang/Object;->()V ++ ++ if-eqz p2, :cond_8 ++ ++ array-length v2, p2 ++ ++ if-nez v2, :cond_9 ++ ++ :cond_8 ++ const/4 p1, 0x0 ++ ++ :cond_9 ++ iput-object p1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ iput-object p2, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIds:[I ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v2, :cond_3f ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v2}, Landroid/database/Cursor;->getPosition()I ++ ++ move-result v0 ++ ++ array-length v2, p2 ++ ++ new-array v2, v2, [I ++ ++ iput-object v2, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ const/4 v1, 0x0 ++ ++ :cond_1d ++ :goto_1d ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v2}, Landroid/database/Cursor;->moveToNext()Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_3a ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-direct {p0, v2}, Landroid/privacy/surrogate/PrivacyCursor;->isAllowed(Landroid/database/Cursor;)Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_1d ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v3}, Landroid/database/Cursor;->getPosition()I ++ ++ move-result v3 ++ ++ aput v3, v2, v1 ++ ++ add-int/lit8 v1, v1, 0x1 ++ ++ goto :goto_1d ++ ++ :cond_3a ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v2, v0}, Landroid/database/Cursor;->moveToPosition(I)Z ++ ++ :cond_3f ++ return-void ++.end method ++ ++.method private getContactId(Landroid/database/Cursor;)I ++ .registers 5 ++ ++ const-string v2, "_id" ++ ++ invoke-interface {p1, v2}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I ++ ++ move-result v0 ++ ++ const/4 v1, -0x1 ++ ++ const/4 v2, -0x1 ++ ++ if-eq v0, v2, :cond_e ++ ++ invoke-interface {p1, v0}, Landroid/database/Cursor;->getInt(I)I ++ ++ move-result v1 ++ ++ :cond_e ++ return v1 ++.end method ++ ++.method private getFakeID()Ljava/lang/String; ++ .registers 8 ++ ++ :try_start_0 ++ new-instance v3, Ljava/util/Random; ++ ++ invoke-direct {v3}, Ljava/util/Random;->()V ++ ++ const-string v2, "" ++ ++ const/4 v1, 0x0 ++ ++ :goto_8 ++ const/16 v4, 0x10 ++ ++ if-ge v1, v4, :cond_34 ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ sget-object v5, Landroid/privacy/surrogate/PrivacyCursor;->mask:[Ljava/lang/String; ++ ++ const/16 v6, 0xf ++ ++ invoke-virtual {v3, v6}, Ljava/util/Random;->nextInt(I)I ++ ++ move-result v6 ++ ++ aget-object v5, v5, v6 ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ :try_end_26 ++ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_26} :catch_2a ++ ++ move-result-object v2 ++ ++ add-int/lit8 v1, v1, 0x1 ++ ++ goto :goto_8 ++ ++ :catch_2a ++ move-exception v0 ++ ++ const-string v4, "PrivacyCursor" ++ ++ const-string/jumbo v5, "something went wrong with creating fake ID" ++ ++ invoke-static {v4, v5}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v2, 0x0 ++ ++ :cond_34 ++ return-object v2 ++.end method ++ ++.method private getMappedPos(I)I ++ .registers 4 ++ ++ const/4 v0, 0x0 ++ ++ :goto_1 ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ array-length v1, v1 ++ ++ if-ge v0, v1, :cond_10 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ aget v1, v1, v0 ++ ++ if-ne v1, p1, :cond_d ++ ++ :goto_c ++ return v0 ++ ++ :cond_d ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_1 ++ ++ :cond_10 ++ const/4 v0, -0x1 ++ ++ goto :goto_c ++.end method ++ ++.method private isAllowed(I)Z ++ .registers 7 ++ ++ const/4 v4, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIds:[I ++ ++ array-length v3, v0 ++ ++ const/4 v2, 0x0 ++ ++ :goto_5 ++ if-ge v2, v3, :cond_c ++ ++ aget v1, v0, v2 ++ ++ if-ne p1, v1, :cond_d ++ ++ const/4 v4, 0x1 ++ ++ :cond_c ++ return v4 ++ ++ :cond_d ++ add-int/lit8 v2, v2, 0x1 ++ ++ goto :goto_5 ++.end method ++ ++.method private isAllowed(Landroid/database/Cursor;)Z ++ .registers 3 ++ ++ invoke-direct {p0, p1}, Landroid/privacy/surrogate/PrivacyCursor;->getContactId(Landroid/database/Cursor;)I ++ ++ move-result v0 ++ ++ invoke-direct {p0, v0}, Landroid/privacy/surrogate/PrivacyCursor;->isAllowed(I)Z ++ ++ move-result v0 ++ ++ return v0 ++.end method ++ ++ ++# virtual methods ++.method public close()V ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_9 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0}, Landroid/database/Cursor;->close()V ++ ++ :cond_9 ++ return-void ++.end method ++ ++.method public copyStringToBuffer(ILandroid/database/CharArrayBuffer;)V ++ .registers 4 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_9 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0, p1, p2}, Landroid/database/Cursor;->copyStringToBuffer(ILandroid/database/CharArrayBuffer;)V ++ ++ :cond_9 ++ return-void ++.end method ++ ++.method public deactivate()V ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_9 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0}, Landroid/database/Cursor;->deactivate()V ++ ++ :cond_9 ++ return-void ++.end method ++ ++.method public getBlob(I)[B ++ .registers 3 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0, p1}, Landroid/database/Cursor;->getBlob(I)[B ++ ++ move-result-object v0 ++ ++ :goto_a ++ return-object v0 ++ ++ :cond_b ++ const/4 v0, 0x0 ++ ++ new-array v0, v0, [B ++ ++ goto :goto_a ++.end method ++ ++.method public getColumnCount()I ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0}, Landroid/database/Cursor;->getColumnCount()I ++ ++ move-result v0 ++ ++ :goto_a ++ return v0 ++ ++ :cond_b ++ const/4 v0, 0x0 ++ ++ goto :goto_a ++.end method ++ ++.method public getColumnIndex(Ljava/lang/String;)I ++ .registers 3 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0, p1}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I ++ ++ move-result v0 ++ ++ :goto_a ++ return v0 ++ ++ :cond_b ++ const/4 v0, -0x1 ++ ++ goto :goto_a ++.end method ++ ++.method public getColumnIndexOrThrow(Ljava/lang/String;)I ++ .registers 3 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Ljava/lang/IllegalArgumentException; ++ } ++ .end annotation ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0, p1}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I ++ ++ move-result v0 ++ ++ :goto_a ++ return v0 ++ ++ :cond_b ++ const/4 v0, -0x1 ++ ++ goto :goto_a ++.end method ++ ++.method public getColumnName(I)Ljava/lang/String; ++ .registers 3 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0, p1}, Landroid/database/Cursor;->getColumnName(I)Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ :goto_a ++ return-object v0 ++ ++ :cond_b ++ const-string v0, "" ++ ++ goto :goto_a ++.end method ++ ++.method public getColumnNames()[Ljava/lang/String; ++ .registers 4 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0}, Landroid/database/Cursor;->getColumnNames()[Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ :goto_a ++ return-object v0 ++ ++ :cond_b ++ const/4 v0, 0x1 ++ ++ new-array v0, v0, [Ljava/lang/String; ++ ++ const/4 v1, 0x0 ++ ++ const-string v2, "" ++ ++ aput-object v2, v0, v1 ++ ++ goto :goto_a ++.end method ++ ++.method public getCount()I ++ .registers 4 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_2b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ if-eqz v0, :cond_2b ++ ++ iget-boolean v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->googleCursor:Z ++ ++ if-nez v0, :cond_2b ++ ++ const-string v0, "PrivacyCursor" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "getCount: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ array-length v2, v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ array-length v0, v0 ++ ++ :goto_2a ++ return v0 ++ ++ :cond_2b ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_36 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0}, Landroid/database/Cursor;->getCount()I ++ ++ move-result v0 ++ ++ goto :goto_2a ++ ++ :cond_36 ++ const/4 v0, 0x0 ++ ++ goto :goto_2a ++.end method ++ ++.method public getDouble(I)D ++ .registers 4 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0, p1}, Landroid/database/Cursor;->getDouble(I)D ++ ++ move-result-wide v0 ++ ++ :goto_a ++ return-wide v0 ++ ++ :cond_b ++ const-wide/16 v0, 0x0 ++ ++ goto :goto_a ++.end method ++ ++.method public getExtras()Landroid/os/Bundle; ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0}, Landroid/database/Cursor;->getExtras()Landroid/os/Bundle; ++ ++ move-result-object v0 ++ ++ :goto_a ++ return-object v0 ++ ++ :cond_b ++ new-instance v0, Landroid/os/Bundle; ++ ++ invoke-direct {v0}, Landroid/os/Bundle;->()V ++ ++ goto :goto_a ++.end method ++ ++.method public getFloat(I)F ++ .registers 3 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0, p1}, Landroid/database/Cursor;->getFloat(I)F ++ ++ move-result v0 ++ ++ :goto_a ++ return v0 ++ ++ :cond_b ++ const/4 v0, 0x0 ++ ++ goto :goto_a ++.end method ++ ++.method public getInt(I)I ++ .registers 4 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v1, :cond_b ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v1, p1}, Landroid/database/Cursor;->getInt(I)I ++ ++ move-result v0 ++ ++ :goto_a ++ return v0 ++ ++ :cond_b ++ const/4 v0, 0x0 ++ ++ goto :goto_a ++.end method ++ ++.method public getLong(I)J ++ .registers 4 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0, p1}, Landroid/database/Cursor;->getLong(I)J ++ ++ move-result-wide v0 ++ ++ :goto_a ++ return-wide v0 ++ ++ :cond_b ++ const-wide/16 v0, 0x0 ++ ++ goto :goto_a ++.end method ++ ++.method public getPosition()I ++ .registers 5 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v1, :cond_3f ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ if-eqz v1, :cond_3f ++ ++ iget-boolean v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->googleCursor:Z ++ ++ if-nez v1, :cond_3f ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v1}, Landroid/database/Cursor;->getPosition()I ++ ++ move-result v1 ++ ++ invoke-direct {p0, v1}, Landroid/privacy/surrogate/PrivacyCursor;->getMappedPos(I)I ++ ++ move-result v0 ++ ++ const-string v1, "PrivacyCursor" ++ ++ new-instance v2, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v2}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "getPosition - mapped position: " ++ ++ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ const-string v3, " real position: " ++ ++ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v3}, Landroid/database/Cursor;->getPosition()I ++ ++ move-result v3 ++ ++ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :goto_3e ++ return v0 ++ ++ :cond_3f ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v1, :cond_4a ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v1}, Landroid/database/Cursor;->getPosition()I ++ ++ move-result v0 ++ ++ goto :goto_3e ++ ++ :cond_4a ++ const/4 v0, -0x1 ++ ++ goto :goto_3e ++.end method ++ ++.method public getShort(I)S ++ .registers 3 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0, p1}, Landroid/database/Cursor;->getShort(I)S ++ ++ move-result v0 ++ ++ :goto_a ++ return v0 ++ ++ :cond_b ++ const/4 v0, 0x0 ++ ++ goto :goto_a ++.end method ++ ++.method public getString(I)Ljava/lang/String; ++ .registers 9 ++ ++ iget-boolean v4, p0, Landroid/privacy/surrogate/PrivacyCursor;->googleCursor:Z ++ ++ if-eqz v4, :cond_63 ++ ++ const/4 v4, 0x1 ++ ++ if-ne p1, v4, :cond_63 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v4}, Landroid/database/Cursor;->getPosition()I ++ ++ move-result v4 ++ ++ iget v5, p0, Landroid/privacy/surrogate/PrivacyCursor;->blockedColumnAndroidID:I ++ ++ if-ne v4, v5, :cond_63 ++ ++ const-string v4, "PrivacyCursor" ++ ++ const-string v5, "google tries to get android_id with getString()" ++ ++ invoke-static {v4, v5}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-direct {p0}, Landroid/privacy/surrogate/PrivacyCursor;->getFakeID()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ if-eqz v2, :cond_58 ++ ++ :try_start_1e ++ new-instance v3, Ljava/math/BigInteger; ++ ++ const/16 v4, 0x10 ++ ++ invoke-direct {v3, v2, v4}, Ljava/math/BigInteger;->(Ljava/lang/String;I)V ++ ++ invoke-static {v3}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "PrivacyCursor" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string/jumbo v6, "returned : " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ const-string v6, "(String) as fake android id" ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v4, v5}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_48 ++ .catch Ljava/lang/Exception; {:try_start_1e .. :try_end_48} :catch_49 ++ ++ :goto_48 ++ return-object v1 ++ ++ :catch_49 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v4, "PrivacyCursor" ++ ++ const-string/jumbo v5, "returned \"\" as android_id" ++ ++ invoke-static {v4, v5}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const-string v1, "" ++ ++ goto :goto_48 ++ ++ :cond_58 ++ const-string v4, "PrivacyCursor" ++ ++ const-string/jumbo v5, "returned \"\" as android_id" ++ ++ invoke-static {v4, v5}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const-string v1, "" ++ ++ goto :goto_48 ++ ++ :cond_63 ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v4, :cond_6e ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v4, p1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ goto :goto_48 ++ ++ :cond_6e ++ const-string v1, "" ++ ++ goto :goto_48 ++.end method ++ ++.method public getType(I)I ++ .registers 3 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0, p1}, Landroid/database/Cursor;->getType(I)I ++ ++ move-result v0 ++ ++ :goto_a ++ return v0 ++ ++ :cond_b ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ const/4 v0, 0x0 ++ ++ goto :goto_a ++.end method ++ ++.method public getWantsAllOnMoveCalls()Z ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0}, Landroid/database/Cursor;->getWantsAllOnMoveCalls()Z ++ ++ move-result v0 ++ ++ :goto_a ++ return v0 ++ ++ :cond_b ++ const/4 v0, 0x0 ++ ++ goto :goto_a ++.end method ++ ++.method public isAfterLast()Z ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0}, Landroid/database/Cursor;->isAfterLast()Z ++ ++ move-result v0 ++ ++ :goto_a ++ return v0 ++ ++ :cond_b ++ const/4 v0, 0x0 ++ ++ goto :goto_a ++.end method ++ ++.method public isBeforeFirst()Z ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0}, Landroid/database/Cursor;->isBeforeFirst()Z ++ ++ move-result v0 ++ ++ :goto_a ++ return v0 ++ ++ :cond_b ++ const/4 v0, 0x0 ++ ++ goto :goto_a ++.end method ++ ++.method public isClosed()Z ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0}, Landroid/database/Cursor;->isClosed()Z ++ ++ move-result v0 ++ ++ :goto_a ++ return v0 ++ ++ :cond_b ++ const/4 v0, 0x0 ++ ++ goto :goto_a ++.end method ++ ++.method public isFirst()Z ++ .registers 4 ++ ++ const/4 v0, 0x0 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v1, :cond_1b ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ if-eqz v1, :cond_1b ++ ++ iget-boolean v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->googleCursor:Z ++ ++ if-nez v1, :cond_1b ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v1}, Landroid/database/Cursor;->getPosition()I ++ ++ move-result v1 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ aget v2, v2, v0 ++ ++ if-ne v1, v2, :cond_1a ++ ++ const/4 v0, 0x1 ++ ++ :cond_1a ++ :goto_1a ++ return v0 ++ ++ :cond_1b ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v1, :cond_1a ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0}, Landroid/database/Cursor;->isFirst()Z ++ ++ move-result v0 ++ ++ goto :goto_1a ++.end method ++ ++.method public isLast()Z ++ .registers 4 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_1f ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ if-eqz v0, :cond_1f ++ ++ iget-boolean v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->googleCursor:Z ++ ++ if-nez v0, :cond_1f ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0}, Landroid/database/Cursor;->getPosition()I ++ ++ move-result v0 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ array-length v2, v2 ++ ++ add-int/lit8 v2, v2, -0x1 ++ ++ aget v1, v1, v2 ++ ++ if-ne v0, v1, :cond_2a ++ ++ const/4 v0, 0x1 ++ ++ :goto_1e ++ return v0 ++ ++ :cond_1f ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_2a ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0}, Landroid/database/Cursor;->isLast()Z ++ ++ move-result v0 ++ ++ goto :goto_1e ++ ++ :cond_2a ++ const/4 v0, 0x0 ++ ++ goto :goto_1e ++.end method ++ ++.method public isNull(I)Z ++ .registers 3 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0, p1}, Landroid/database/Cursor;->isNull(I)Z ++ ++ move-result v0 ++ ++ :goto_a ++ return v0 ++ ++ :cond_b ++ const/4 v0, 0x0 ++ ++ goto :goto_a ++.end method ++ ++.method public move(I)Z ++ .registers 8 ++ ++ const/4 v2, 0x0 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v3, :cond_3e ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ if-eqz v3, :cond_3e ++ ++ iget-boolean v3, p0, Landroid/privacy/surrogate/PrivacyCursor;->googleCursor:Z ++ ++ if-nez v3, :cond_3e ++ ++ const-string v3, "PrivacyCursor" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string/jumbo v5, "move - offset: " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v3, v4}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :try_start_26 ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v4}, Landroid/database/Cursor;->getPosition()I ++ ++ move-result v4 ++ ++ invoke-direct {p0, v4}, Landroid/privacy/surrogate/PrivacyCursor;->getMappedPos(I)I ++ ++ move-result v4 ++ ++ add-int/2addr v4, p1 ++ ++ aget v1, v3, v4 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v3, v1}, Landroid/database/Cursor;->moveToPosition(I)Z ++ :try_end_3a ++ .catch Ljava/lang/ArrayIndexOutOfBoundsException; {:try_start_26 .. :try_end_3a} :catch_3c ++ ++ move-result v2 ++ ++ :cond_3b ++ :goto_3b ++ return v2 ++ ++ :catch_3c ++ move-exception v0 ++ ++ goto :goto_3b ++ ++ :cond_3e ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v3, :cond_3b ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v3, p1}, Landroid/database/Cursor;->move(I)Z ++ ++ goto :goto_3b ++.end method ++ ++.method public moveToFirst()Z ++ .registers 4 ++ ++ const/4 v0, 0x0 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v1, :cond_18 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ if-eqz v1, :cond_18 ++ ++ iget-boolean v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->googleCursor:Z ++ ++ if-nez v1, :cond_18 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ aget v2, v2, v0 ++ ++ invoke-interface {v1, v2}, Landroid/database/Cursor;->moveToPosition(I)Z ++ ++ move-result v0 ++ ++ :cond_17 ++ :goto_17 ++ return v0 ++ ++ :cond_18 ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v1, :cond_17 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v1}, Landroid/database/Cursor;->moveToFirst()Z ++ ++ move-result v0 ++ ++ goto :goto_17 ++.end method ++ ++.method public moveToLast()Z ++ .registers 5 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v1, :cond_1c ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ if-eqz v1, :cond_1c ++ ++ iget-boolean v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->googleCursor:Z ++ ++ if-nez v1, :cond_1c ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ array-length v3, v3 ++ ++ add-int/lit8 v3, v3, -0x1 ++ ++ aget v2, v2, v3 ++ ++ invoke-interface {v1, v2}, Landroid/database/Cursor;->moveToPosition(I)Z ++ ++ move-result v0 ++ ++ :goto_1b ++ return v0 ++ ++ :cond_1c ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v1, :cond_27 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v1}, Landroid/database/Cursor;->moveToLast()Z ++ ++ move-result v0 ++ ++ goto :goto_1b ++ ++ :cond_27 ++ const/4 v0, 0x0 ++ ++ goto :goto_1b ++.end method ++ ++.method public moveToNext()Z ++ .registers 3 ++ ++ const/4 v0, 0x0 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v1, :cond_29 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ if-eqz v1, :cond_29 ++ ++ iget-boolean v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->googleCursor:Z ++ ++ if-nez v1, :cond_29 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v1}, Landroid/database/Cursor;->moveToNext()Z ++ ++ move-result v1 ++ ++ if-nez v1, :cond_16 ++ ++ :cond_15 ++ :goto_15 ++ return v0 ++ ++ :cond_16 ++ const/4 v0, 0x1 ++ ++ :goto_17 ++ const/4 v1, 0x1 ++ ++ if-ne v0, v1, :cond_15 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-direct {p0, v1}, Landroid/privacy/surrogate/PrivacyCursor;->isAllowed(Landroid/database/Cursor;)Z ++ ++ move-result v1 ++ ++ if-nez v1, :cond_15 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v1}, Landroid/database/Cursor;->moveToNext()Z ++ ++ move-result v0 ++ ++ goto :goto_17 ++ ++ :cond_29 ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v1, :cond_15 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v1}, Landroid/database/Cursor;->moveToNext()Z ++ ++ move-result v0 ++ ++ goto :goto_15 ++.end method ++ ++.method public moveToPosition(I)Z ++ .registers 6 ++ ++ const/4 v1, 0x0 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v2, :cond_1a ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ if-eqz v2, :cond_1a ++ ++ iget-boolean v2, p0, Landroid/privacy/surrogate/PrivacyCursor;->googleCursor:Z ++ ++ if-nez v2, :cond_1a ++ ++ :try_start_d ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ aget v3, v3, p1 ++ ++ invoke-interface {v2, v3}, Landroid/database/Cursor;->moveToPosition(I)Z ++ :try_end_16 ++ .catch Ljava/lang/ArrayIndexOutOfBoundsException; {:try_start_d .. :try_end_16} :catch_18 ++ ++ move-result v1 ++ ++ :cond_17 ++ :goto_17 ++ return v1 ++ ++ :catch_18 ++ move-exception v0 ++ ++ goto :goto_17 ++ ++ :cond_1a ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v2, :cond_17 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v2, p1}, Landroid/database/Cursor;->moveToPosition(I)Z ++ ++ move-result v1 ++ ++ goto :goto_17 ++.end method ++ ++.method public moveToPrevious()Z ++ .registers 3 ++ ++ const/4 v0, 0x0 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v1, :cond_29 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->allowedIdMapping:[I ++ ++ if-eqz v1, :cond_29 ++ ++ iget-boolean v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->googleCursor:Z ++ ++ if-nez v1, :cond_29 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v1}, Landroid/database/Cursor;->moveToPrevious()Z ++ ++ move-result v1 ++ ++ if-nez v1, :cond_16 ++ ++ :cond_15 ++ :goto_15 ++ return v0 ++ ++ :cond_16 ++ const/4 v0, 0x1 ++ ++ :goto_17 ++ const/4 v1, 0x1 ++ ++ if-ne v0, v1, :cond_15 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-direct {p0, v1}, Landroid/privacy/surrogate/PrivacyCursor;->isAllowed(Landroid/database/Cursor;)Z ++ ++ move-result v1 ++ ++ if-nez v1, :cond_15 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v1}, Landroid/database/Cursor;->moveToPrevious()Z ++ ++ move-result v0 ++ ++ goto :goto_17 ++ ++ :cond_29 ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v1, :cond_15 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v1}, Landroid/database/Cursor;->moveToPrevious()Z ++ ++ move-result v0 ++ ++ goto :goto_15 ++.end method ++ ++.method public registerContentObserver(Landroid/database/ContentObserver;)V ++ .registers 3 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_9 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0, p1}, Landroid/database/Cursor;->registerContentObserver(Landroid/database/ContentObserver;)V ++ ++ :cond_9 ++ return-void ++.end method ++ ++.method public registerDataSetObserver(Landroid/database/DataSetObserver;)V ++ .registers 3 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_9 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0, p1}, Landroid/database/Cursor;->registerDataSetObserver(Landroid/database/DataSetObserver;)V ++ ++ :cond_9 ++ return-void ++.end method ++ ++.method public requery()Z ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0}, Landroid/database/Cursor;->requery()Z ++ ++ move-result v0 ++ ++ :goto_a ++ return v0 ++ ++ :cond_b ++ const/4 v0, 0x0 ++ ++ goto :goto_a ++.end method ++ ++.method public respond(Landroid/os/Bundle;)Landroid/os/Bundle; ++ .registers 3 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_b ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0, p1}, Landroid/database/Cursor;->respond(Landroid/os/Bundle;)Landroid/os/Bundle; ++ ++ move-result-object v0 ++ ++ :goto_a ++ return-object v0 ++ ++ :cond_b ++ new-instance v0, Landroid/os/Bundle; ++ ++ invoke-direct {v0}, Landroid/os/Bundle;->()V ++ ++ goto :goto_a ++.end method ++ ++.method public setNotificationUri(Landroid/content/ContentResolver;Landroid/net/Uri;)V ++ .registers 4 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_9 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0, p1, p2}, Landroid/database/Cursor;->setNotificationUri(Landroid/content/ContentResolver;Landroid/net/Uri;)V ++ ++ :cond_9 ++ return-void ++.end method ++ ++.method public unregisterContentObserver(Landroid/database/ContentObserver;)V ++ .registers 3 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_9 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0, p1}, Landroid/database/Cursor;->unregisterContentObserver(Landroid/database/ContentObserver;)V ++ ++ :cond_9 ++ return-void ++.end method ++ ++.method public unregisterDataSetObserver(Landroid/database/DataSetObserver;)V ++ .registers 3 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ if-eqz v0, :cond_9 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCursor;->realCursor:Landroid/database/Cursor; ++ ++ invoke-interface {v0, p1}, Landroid/database/Cursor;->unregisterDataSetObserver(Landroid/database/DataSetObserver;)V ++ ++ :cond_9 ++ return-void ++.end method +diff -Npru stock-framework/smali/android/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater.smali pdroid-framework/smali/android/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater.smali +--- stock-framework/smali/android/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater.smali 2013-08-10 20:37:42.503213441 -0700 +@@ -0,0 +1,134 @@ ++.class Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater; ++.super Ljava/lang/Thread; ++.source "PrivacyLocationManager.java" ++ ++ ++# annotations ++.annotation system Ldalvik/annotation/EnclosingClass; ++ value = Landroid/privacy/surrogate/PrivacyLocationManager; ++.end annotation ++ ++.annotation system Ldalvik/annotation/InnerClass; ++ accessFlags = 0x2 ++ name = "PrivacyLocationUpdater" ++.end annotation ++ ++ ++# instance fields ++.field private intent:Landroid/app/PendingIntent; ++ ++.field private latitude:D ++ ++.field private listener:Landroid/location/LocationListener; ++ ++.field private longitude:D ++ ++.field private provider:Ljava/lang/String; ++ ++.field final synthetic this$0:Landroid/privacy/surrogate/PrivacyLocationManager; ++ ++ ++# direct methods ++.method public constructor (Landroid/privacy/surrogate/PrivacyLocationManager;Ljava/lang/String;Landroid/location/LocationListener;Landroid/app/PendingIntent;DD)V ++ .registers 9 ++ ++ iput-object p1, p0, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->this$0:Landroid/privacy/surrogate/PrivacyLocationManager; ++ ++ invoke-direct {p0}, Ljava/lang/Thread;->()V ++ ++ iput-object p2, p0, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->provider:Ljava/lang/String; ++ ++ iput-object p3, p0, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->listener:Landroid/location/LocationListener; ++ ++ iput-object p4, p0, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->intent:Landroid/app/PendingIntent; ++ ++ iput-wide p5, p0, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->latitude:D ++ ++ iput-wide p7, p0, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->longitude:D ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public run()V ++ .registers 8 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->provider:Ljava/lang/String; ++ ++ if-eqz v3, :cond_43 ++ ++ new-instance v2, Landroid/location/Location; ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->provider:Ljava/lang/String; ++ ++ invoke-direct {v2, v3}, Landroid/location/Location;->(Ljava/lang/String;)V ++ ++ iget-wide v3, p0, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->latitude:D ++ ++ invoke-virtual {v2, v3, v4}, Landroid/location/Location;->setLatitude(D)V ++ ++ iget-wide v3, p0, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->longitude:D ++ ++ invoke-virtual {v2, v3, v4}, Landroid/location/Location;->setLongitude(D)V ++ ++ const/4 v1, 0x0 ++ ++ :goto_16 ++ const/4 v3, 0x5 ++ ++ if-ge v1, v3, :cond_43 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->listener:Landroid/location/LocationListener; ++ ++ if-eqz v3, :cond_34 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->listener:Landroid/location/LocationListener; ++ ++ invoke-interface {v3, v2}, Landroid/location/LocationListener;->onLocationChanged(Landroid/location/Location;)V ++ ++ :cond_22 ++ :goto_22 ++ :try_start_22 ++ invoke-static {}, Ljava/lang/Math;->random()D ++ ++ move-result-wide v3 ++ ++ const-wide v5, 0x408f400000000000L ++ ++ mul-double/2addr v3, v5 ++ ++ double-to-int v3, v3 ++ ++ int-to-long v3, v3 ++ ++ invoke-static {v3, v4}, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->sleep(J)V ++ :try_end_31 ++ .catch Ljava/lang/InterruptedException; {:try_start_22 .. :try_end_31} :catch_3e ++ ++ :goto_31 ++ add-int/lit8 v1, v1, 0x1 ++ ++ goto :goto_16 ++ ++ :cond_34 ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->intent:Landroid/app/PendingIntent; ++ ++ if-eqz v3, :cond_22 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->intent:Landroid/app/PendingIntent; ++ ++ invoke-virtual {v3}, Landroid/app/PendingIntent;->cancel()V ++ ++ goto :goto_22 ++ ++ :catch_3e ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/InterruptedException;->printStackTrace()V ++ ++ goto :goto_31 ++ ++ :cond_43 ++ return-void ++.end method +diff -Npru stock-framework/smali/android/privacy/surrogate/PrivacyLocationManager.smali pdroid-framework/smali/android/privacy/surrogate/PrivacyLocationManager.smali +--- stock-framework/smali/android/privacy/surrogate/PrivacyLocationManager.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/surrogate/PrivacyLocationManager.smali 2013-08-10 20:37:42.507213441 -0700 +@@ -0,0 +1,2091 @@ ++.class public final Landroid/privacy/surrogate/PrivacyLocationManager; ++.super Landroid/location/LocationManager; ++.source "PrivacyLocationManager.java" ++ ++ ++# annotations ++.annotation system Ldalvik/annotation/MemberClasses; ++ value = { ++ Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater; ++ } ++.end annotation ++ ++ ++# static fields ++.field private static final CUSTOM_LOCATION_UPDATE_COUNT:I = 0x5 ++ ++.field private static final TAG:Ljava/lang/String; = "PrivacyLocationManager" ++ ++ ++# instance fields ++.field private context:Landroid/content/Context; ++ ++.field private lock:Ljava/lang/Object; ++ ++.field private pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ ++# direct methods ++.method public constructor (Landroid/location/ILocationManager;Landroid/content/Context;)V ++ .registers 5 ++ ++ invoke-direct {p0, p2, p1}, Landroid/location/LocationManager;->(Landroid/content/Context;Landroid/location/ILocationManager;)V ++ ++ new-instance v0, Ljava/lang/Object; ++ ++ invoke-direct {v0}, Ljava/lang/Object;->()V ++ ++ iput-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->lock:Ljava/lang/Object; ++ ++ iput-object p2, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->context:Landroid/content/Context; ++ ++ new-instance v0, Landroid/privacy/PrivacySettingsManager; ++ ++ const-string/jumbo v1, "privacy" ++ ++ invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v1 ++ ++ invoke-direct {v0, p2, v1}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ return-void ++.end method ++ ++.method private requestLocationUpdates(Landroid/location/Criteria;Landroid/location/LocationListener;Landroid/app/PendingIntent;)Z ++ .registers 7 ++ ++ const/4 v2, 0x3 ++ ++ if-nez p1, :cond_5 ++ ++ const/4 v0, 0x0 ++ ++ :goto_4 ++ return v0 ++ ++ :cond_5 ++ invoke-virtual {p1}, Landroid/location/Criteria;->getAccuracy()I ++ ++ move-result v0 ++ ++ const/4 v1, 0x1 ++ ++ if-eq v0, v1, :cond_24 ++ ++ invoke-virtual {p1}, Landroid/location/Criteria;->getBearingAccuracy()I ++ ++ move-result v0 ++ ++ if-eq v0, v2, :cond_24 ++ ++ invoke-virtual {p1}, Landroid/location/Criteria;->getHorizontalAccuracy()I ++ ++ move-result v0 ++ ++ if-eq v0, v2, :cond_24 ++ ++ invoke-virtual {p1}, Landroid/location/Criteria;->getVerticalAccuracy()I ++ ++ move-result v0 ++ ++ if-eq v0, v2, :cond_24 ++ ++ invoke-virtual {p1}, Landroid/location/Criteria;->getSpeedAccuracy()I ++ ++ move-result v0 ++ ++ if-ne v0, v2, :cond_2b ++ ++ :cond_24 ++ const-string v0, "gps" ++ ++ invoke-direct {p0, v0, p2, p3}, Landroid/privacy/surrogate/PrivacyLocationManager;->requestLocationUpdates(Ljava/lang/String;Landroid/location/LocationListener;Landroid/app/PendingIntent;)Z ++ ++ move-result v0 ++ ++ goto :goto_4 ++ ++ :cond_2b ++ const-string/jumbo v0, "network" ++ ++ invoke-direct {p0, v0, p2, p3}, Landroid/privacy/surrogate/PrivacyLocationManager;->requestLocationUpdates(Ljava/lang/String;Landroid/location/LocationListener;Landroid/app/PendingIntent;)Z ++ ++ move-result v0 ++ ++ goto :goto_4 ++.end method ++ ++.method private requestLocationUpdates(Ljava/lang/String;Landroid/location/LocationListener;Landroid/app/PendingIntent;)Z ++ .registers 24 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Landroid/privacy/surrogate/PrivacyLocationManager;->lock:Ljava/lang/Object; ++ ++ move-object/from16 v19, v0 ++ ++ monitor-enter v19 ++ ++ :try_start_7 ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyLocationManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v3 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v1, v2, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ const/16 v18, 0x0 ++ ++ if-eqz v7, :cond_239 ++ ++ const-string v1, "gps" ++ ++ move-object/from16 v0, p1 ++ ++ invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_111 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationGpsSetting()B ++ ++ move-result v1 ++ ++ packed-switch v1, :pswitch_data_25e ++ ++ :cond_30 ++ :goto_30 ++ monitor-exit v19 ++ ++ return v18 ++ ++ :pswitch_32 ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x0 ++ ++ const-string v5, "locationGPS" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_30 ++ ++ :catchall_3e ++ move-exception v1 ++ ++ monitor-exit v19 ++ :try_end_40 ++ .catchall {:try_start_7 .. :try_end_40} :catchall_3e ++ ++ throw v1 ++ ++ :pswitch_41 ++ if-eqz p3, :cond_46 ++ ++ :try_start_43 ++ invoke-virtual/range {p3 .. p3}, Landroid/app/PendingIntent;->cancel()V ++ ++ :cond_46 ++ const/16 v18, 0x1 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x1 ++ ++ const-string v5, "locationGPS" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ :try_end_53 ++ .catchall {:try_start_43 .. :try_end_53} :catchall_3e ++ ++ goto :goto_30 ++ ++ :pswitch_54 ++ :try_start_54 ++ new-instance v8, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater; ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationGpsLat()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D ++ ++ move-result-wide v13 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationGpsLon()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D ++ ++ move-result-wide v15 ++ ++ move-object/from16 v9, p0 ++ ++ move-object/from16 v10, p1 ++ ++ move-object/from16 v11, p2 ++ ++ move-object/from16 v12, p3 ++ ++ invoke-direct/range {v8 .. v16}, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->(Landroid/privacy/surrogate/PrivacyLocationManager;Ljava/lang/String;Landroid/location/LocationListener;Landroid/app/PendingIntent;DD)V ++ ++ invoke-virtual {v8}, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->start()V ++ :try_end_74 ++ .catchall {:try_start_54 .. :try_end_74} :catchall_3e ++ .catch Ljava/lang/NumberFormatException; {:try_start_54 .. :try_end_74} :catch_a6 ++ ++ const/16 v18, 0x1 ++ ++ :goto_76 ++ :try_start_76 ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x2 ++ ++ const-string v5, "locationGPS" ++ ++ new-instance v6, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v8, "Lat: " ++ ++ invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationGpsLat()Ljava/lang/String; ++ ++ move-result-object v8 ++ ++ invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ const-string v8, " Lon: " ++ ++ invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationGpsLon()Ljava/lang/String; ++ ++ move-result-object v8 ++ ++ invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_30 ++ ++ :catch_a6 ++ move-exception v17 ++ ++ const-string v1, "PrivacyLocationManager" ++ ++ const-string/jumbo v4, "requestLocationUpdates: invalid coordinates" ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_af ++ .catchall {:try_start_76 .. :try_end_af} :catchall_3e ++ ++ const/16 v18, 0x1 ++ ++ goto :goto_76 ++ ++ :pswitch_b2 ++ :try_start_b2 ++ new-instance v8, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater; ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationGpsLat()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D ++ ++ move-result-wide v13 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationGpsLon()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D ++ ++ move-result-wide v15 ++ ++ move-object/from16 v9, p0 ++ ++ move-object/from16 v10, p1 ++ ++ move-object/from16 v11, p2 ++ ++ move-object/from16 v12, p3 ++ ++ invoke-direct/range {v8 .. v16}, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->(Landroid/privacy/surrogate/PrivacyLocationManager;Ljava/lang/String;Landroid/location/LocationListener;Landroid/app/PendingIntent;DD)V ++ ++ invoke-virtual {v8}, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->start()V ++ :try_end_d2 ++ .catchall {:try_start_b2 .. :try_end_d2} :catchall_3e ++ .catch Ljava/lang/NumberFormatException; {:try_start_b2 .. :try_end_d2} :catch_105 ++ ++ const/16 v18, 0x1 ++ ++ :goto_d4 ++ :try_start_d4 ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x3 ++ ++ const-string v5, "locationGPS" ++ ++ new-instance v6, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v8, "Lat: " ++ ++ invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationGpsLat()Ljava/lang/String; ++ ++ move-result-object v8 ++ ++ invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ const-string v8, " Lon: " ++ ++ invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationGpsLon()Ljava/lang/String; ++ ++ move-result-object v8 ++ ++ invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_30 ++ ++ :catch_105 ++ move-exception v17 ++ ++ const-string v1, "PrivacyLocationManager" ++ ++ const-string/jumbo v4, "requestLocationUpdates: invalid coordinates" ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/16 v18, 0x1 ++ ++ goto :goto_d4 ++ ++ :cond_111 ++ const-string/jumbo v1, "network" ++ ++ move-object/from16 v0, p1 ++ ++ invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_204 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v1 ++ ++ packed-switch v1, :pswitch_data_26a ++ ++ goto/16 :goto_30 ++ ++ :pswitch_125 ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x0 ++ ++ const-string v5, "locationNetwork" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_30 ++ ++ :pswitch_132 ++ if-eqz p3, :cond_137 ++ ++ invoke-virtual/range {p3 .. p3}, Landroid/app/PendingIntent;->cancel()V ++ ++ :cond_137 ++ const/16 v18, 0x1 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x1 ++ ++ const-string v5, "locationNetwork" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ :try_end_144 ++ .catchall {:try_start_d4 .. :try_end_144} :catchall_3e ++ ++ goto/16 :goto_30 ++ ++ :pswitch_146 ++ :try_start_146 ++ new-instance v8, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater; ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationNetworkLat()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D ++ ++ move-result-wide v13 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationNetworkLon()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D ++ ++ move-result-wide v15 ++ ++ move-object/from16 v9, p0 ++ ++ move-object/from16 v10, p1 ++ ++ move-object/from16 v11, p2 ++ ++ move-object/from16 v12, p3 ++ ++ invoke-direct/range {v8 .. v16}, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->(Landroid/privacy/surrogate/PrivacyLocationManager;Ljava/lang/String;Landroid/location/LocationListener;Landroid/app/PendingIntent;DD)V ++ ++ invoke-virtual {v8}, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->start()V ++ :try_end_166 ++ .catchall {:try_start_146 .. :try_end_166} :catchall_3e ++ .catch Ljava/lang/NumberFormatException; {:try_start_146 .. :try_end_166} :catch_199 ++ ++ const/16 v18, 0x1 ++ ++ :goto_168 ++ :try_start_168 ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x2 ++ ++ const-string v5, "locationNetwork" ++ ++ new-instance v6, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v8, "Lat: " ++ ++ invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationNetworkLat()Ljava/lang/String; ++ ++ move-result-object v8 ++ ++ invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ const-string v8, " Lon: " ++ ++ invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationNetworkLon()Ljava/lang/String; ++ ++ move-result-object v8 ++ ++ invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_30 ++ ++ :catch_199 ++ move-exception v17 ++ ++ const-string v1, "PrivacyLocationManager" ++ ++ const-string/jumbo v4, "requestLocationUpdates: invalid coordinates" ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_1a2 ++ .catchall {:try_start_168 .. :try_end_1a2} :catchall_3e ++ ++ const/16 v18, 0x1 ++ ++ goto :goto_168 ++ ++ :pswitch_1a5 ++ :try_start_1a5 ++ new-instance v8, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater; ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationNetworkLat()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D ++ ++ move-result-wide v13 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationNetworkLon()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D ++ ++ move-result-wide v15 ++ ++ move-object/from16 v9, p0 ++ ++ move-object/from16 v10, p1 ++ ++ move-object/from16 v11, p2 ++ ++ move-object/from16 v12, p3 ++ ++ invoke-direct/range {v8 .. v16}, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->(Landroid/privacy/surrogate/PrivacyLocationManager;Ljava/lang/String;Landroid/location/LocationListener;Landroid/app/PendingIntent;DD)V ++ ++ invoke-virtual {v8}, Landroid/privacy/surrogate/PrivacyLocationManager$PrivacyLocationUpdater;->start()V ++ :try_end_1c5 ++ .catchall {:try_start_1a5 .. :try_end_1c5} :catchall_3e ++ .catch Ljava/lang/NumberFormatException; {:try_start_1a5 .. :try_end_1c5} :catch_1f8 ++ ++ const/16 v18, 0x1 ++ ++ :goto_1c7 ++ :try_start_1c7 ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x3 ++ ++ const-string v5, "locationNetwork" ++ ++ new-instance v6, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v8, "Lat: " ++ ++ invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationNetworkLat()Ljava/lang/String; ++ ++ move-result-object v8 ++ ++ invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ const-string v8, " Lon: " ++ ++ invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationNetworkLon()Ljava/lang/String; ++ ++ move-result-object v8 ++ ++ invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_30 ++ ++ :catch_1f8 ++ move-exception v17 ++ ++ const-string v1, "PrivacyLocationManager" ++ ++ const-string/jumbo v4, "requestLocationUpdates: invalid coordinates" ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/16 v18, 0x1 ++ ++ goto :goto_1c7 ++ ++ :cond_204 ++ const-string/jumbo v1, "passive" ++ ++ move-object/from16 v0, p1 ++ ++ invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_30 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationGpsSetting()B ++ ++ move-result v1 ++ ++ if-nez v1, :cond_22a ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v1 ++ ++ if-nez v1, :cond_22a ++ ++ const/16 v18, 0x0 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x0 ++ ++ const-string v5, "locationGPS" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_30 ++ ++ :cond_22a ++ const/16 v18, 0x1 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x1 ++ ++ const-string v5, "locationGPS" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_30 ++ ++ :cond_239 ++ const-string/jumbo v1, "network" ++ ++ move-object/from16 v0, p1 ++ ++ invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_251 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x0 ++ ++ const-string v5, "locationNetwork" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_30 ++ ++ :cond_251 ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x0 ++ ++ const-string v5, "locationGPS" ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ :try_end_25c ++ .catchall {:try_start_1c7 .. :try_end_25c} :catchall_3e ++ ++ goto/16 :goto_30 ++ ++ :pswitch_data_25e ++ .packed-switch 0x0 ++ :pswitch_32 ++ :pswitch_41 ++ :pswitch_54 ++ :pswitch_b2 ++ .end packed-switch ++ ++ :pswitch_data_26a ++ .packed-switch 0x0 ++ :pswitch_125 ++ :pswitch_132 ++ :pswitch_146 ++ :pswitch_1a5 ++ .end packed-switch ++.end method ++ ++ ++# virtual methods ++.method public addNmeaListener(Landroid/location/GpsStatus$NmeaListener;)Z ++ .registers 10 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v7, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_24 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationGpsSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_24 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x1 ++ ++ const-string v4, "locationGPS" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ move v0, v7 ++ ++ :goto_23 ++ return v0 ++ ++ :cond_24 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "locationGPS" ++ ++ move v3, v7 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1}, Landroid/location/LocationManager;->addNmeaListener(Landroid/location/GpsStatus$NmeaListener;)Z ++ ++ move-result v0 ++ ++ goto :goto_23 ++.end method ++ ++.method public getLastKnownLocation(Ljava/lang/String;)Landroid/location/Location; ++ .registers 14 ++ ++ const/4 v11, 0x3 ++ ++ const/4 v10, 0x2 ++ ++ const/4 v8, 0x1 ++ ++ const/4 v3, 0x0 ++ ++ const/4 v5, 0x0 ++ ++ if-nez p1, :cond_c ++ ++ invoke-super {p0, p1}, Landroid/location/LocationManager;->getLastKnownLocation(Ljava/lang/String;)Landroid/location/Location; ++ ++ move-result-object v7 ++ ++ :cond_b ++ :goto_b ++ return-object v7 ++ ++ :cond_c ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ const/4 v7, 0x0 ++ ++ if-eqz v6, :cond_22c ++ ++ const-string v0, "gps" ++ ++ invoke-virtual {p1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_ff ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationGpsSetting()B ++ ++ move-result v0 ++ ++ packed-switch v0, :pswitch_data_29a ++ ++ goto :goto_b ++ ++ :pswitch_2f ++ invoke-super {p0, p1}, Landroid/location/LocationManager;->getLastKnownLocation(Ljava/lang/String;)Landroid/location/Location; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "locationGPS" ++ ++ if-eqz v7, :cond_5e ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v8, "Lat: " ++ ++ invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v7}, Landroid/location/Location;->getLatitude()D ++ ++ move-result-wide v8 ++ ++ invoke-virtual {v5, v8, v9}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ const-string v8, " Lon: " ++ ++ invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v7}, Landroid/location/Location;->getLongitude()D ++ ++ move-result-wide v8 ++ ++ invoke-virtual {v5, v8, v9}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ :cond_5e ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_b ++ ++ :pswitch_62 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "locationGPS" ++ ++ move v3, v8 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_b ++ ++ :pswitch_6b ++ new-instance v7, Landroid/location/Location; ++ ++ invoke-direct {v7, p1}, Landroid/location/Location;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationGpsLat()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ invoke-static {v0}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D ++ ++ move-result-wide v3 ++ ++ invoke-virtual {v7, v3, v4}, Landroid/location/Location;->setLatitude(D)V ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationGpsLon()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ invoke-static {v0}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D ++ ++ move-result-wide v3 ++ ++ invoke-virtual {v7, v3, v4}, Landroid/location/Location;->setLongitude(D)V ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "locationGPS" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "Lat: " ++ ++ invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v7}, Landroid/location/Location;->getLatitude()D ++ ++ move-result-wide v8 ++ ++ invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v5, " Lon: " ++ ++ invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v7}, Landroid/location/Location;->getLongitude()D ++ ++ move-result-wide v8 ++ ++ invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ move v3, v10 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_b ++ ++ :pswitch_b5 ++ new-instance v7, Landroid/location/Location; ++ ++ invoke-direct {v7, p1}, Landroid/location/Location;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationGpsLat()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ invoke-static {v0}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D ++ ++ move-result-wide v3 ++ ++ invoke-virtual {v7, v3, v4}, Landroid/location/Location;->setLatitude(D)V ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationGpsLon()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ invoke-static {v0}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D ++ ++ move-result-wide v3 ++ ++ invoke-virtual {v7, v3, v4}, Landroid/location/Location;->setLongitude(D)V ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "locationGPS" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "Lat: " ++ ++ invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v7}, Landroid/location/Location;->getLatitude()D ++ ++ move-result-wide v8 ++ ++ invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v5, " Lon: " ++ ++ invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v7}, Landroid/location/Location;->getLongitude()D ++ ++ move-result-wide v8 ++ ++ invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ move v3, v11 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_b ++ ++ :cond_ff ++ const-string/jumbo v0, "network" ++ ++ invoke-virtual {p1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_1e3 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v0 ++ ++ packed-switch v0, :pswitch_data_2a6 ++ ++ goto/16 :goto_b ++ ++ :pswitch_111 ++ invoke-super {p0, p1}, Landroid/location/LocationManager;->getLastKnownLocation(Ljava/lang/String;)Landroid/location/Location; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "locationNetwork" ++ ++ if-eqz v7, :cond_140 ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v8, "Lat: " ++ ++ invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v7}, Landroid/location/Location;->getLatitude()D ++ ++ move-result-wide v8 ++ ++ invoke-virtual {v5, v8, v9}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ const-string v8, " Lon: " ++ ++ invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v7}, Landroid/location/Location;->getLongitude()D ++ ++ move-result-wide v8 ++ ++ invoke-virtual {v5, v8, v9}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ :cond_140 ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_b ++ ++ :pswitch_145 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "locationNetwork" ++ ++ move v3, v8 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_b ++ ++ :pswitch_14f ++ new-instance v7, Landroid/location/Location; ++ ++ invoke-direct {v7, p1}, Landroid/location/Location;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkLat()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ invoke-static {v0}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D ++ ++ move-result-wide v3 ++ ++ invoke-virtual {v7, v3, v4}, Landroid/location/Location;->setLatitude(D)V ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkLon()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ invoke-static {v0}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D ++ ++ move-result-wide v3 ++ ++ invoke-virtual {v7, v3, v4}, Landroid/location/Location;->setLongitude(D)V ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "locationNetwork" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "Lat: " ++ ++ invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v7}, Landroid/location/Location;->getLatitude()D ++ ++ move-result-wide v8 ++ ++ invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v5, " Lon: " ++ ++ invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v7}, Landroid/location/Location;->getLongitude()D ++ ++ move-result-wide v8 ++ ++ invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ move v3, v10 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_b ++ ++ :pswitch_199 ++ new-instance v7, Landroid/location/Location; ++ ++ invoke-direct {v7, p1}, Landroid/location/Location;->(Ljava/lang/String;)V ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkLat()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ invoke-static {v0}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D ++ ++ move-result-wide v3 ++ ++ invoke-virtual {v7, v3, v4}, Landroid/location/Location;->setLatitude(D)V ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkLon()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ invoke-static {v0}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D ++ ++ move-result-wide v3 ++ ++ invoke-virtual {v7, v3, v4}, Landroid/location/Location;->setLongitude(D)V ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "locationNetwork" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "Lat: " ++ ++ invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v7}, Landroid/location/Location;->getLatitude()D ++ ++ move-result-wide v8 ++ ++ invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v5, " Lon: " ++ ++ invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v7}, Landroid/location/Location;->getLongitude()D ++ ++ move-result-wide v8 ++ ++ invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ move v3, v11 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_b ++ ++ :cond_1e3 ++ const-string/jumbo v0, "passive" ++ ++ invoke-virtual {p1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_b ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationGpsSetting()B ++ ++ move-result v0 ++ ++ if-nez v0, :cond_b ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v0 ++ ++ if-nez v0, :cond_b ++ ++ invoke-super {p0, p1}, Landroid/location/LocationManager;->getLastKnownLocation(Ljava/lang/String;)Landroid/location/Location; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "locationGPS" ++ ++ if-eqz v7, :cond_227 ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v8, "Lat: " ++ ++ invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v7}, Landroid/location/Location;->getLatitude()D ++ ++ move-result-wide v8 ++ ++ invoke-virtual {v5, v8, v9}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ const-string v8, " Lon: " ++ ++ invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v7}, Landroid/location/Location;->getLongitude()D ++ ++ move-result-wide v8 ++ ++ invoke-virtual {v5, v8, v9}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ :cond_227 ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_b ++ ++ :cond_22c ++ invoke-super {p0, p1}, Landroid/location/LocationManager;->getLastKnownLocation(Ljava/lang/String;)Landroid/location/Location; ++ ++ move-result-object v7 ++ ++ const-string/jumbo v0, "network" ++ ++ invoke-virtual {p1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_269 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "locationNetwork" ++ ++ if-eqz v7, :cond_264 ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v8, "Lat: " ++ ++ invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v7}, Landroid/location/Location;->getLatitude()D ++ ++ move-result-wide v8 ++ ++ invoke-virtual {v5, v8, v9}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ const-string v8, " Lon: " ++ ++ invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v7}, Landroid/location/Location;->getLongitude()D ++ ++ move-result-wide v8 ++ ++ invoke-virtual {v5, v8, v9}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ :cond_264 ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_b ++ ++ :cond_269 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "locationGPS" ++ ++ if-eqz v7, :cond_294 ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v8, "Lat: " ++ ++ invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v7}, Landroid/location/Location;->getLatitude()D ++ ++ move-result-wide v8 ++ ++ invoke-virtual {v5, v8, v9}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ const-string v8, " Lon: " ++ ++ invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v7}, Landroid/location/Location;->getLongitude()D ++ ++ move-result-wide v8 ++ ++ invoke-virtual {v5, v8, v9}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ :cond_294 ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto/16 :goto_b ++ ++ nop ++ ++ :pswitch_data_29a ++ .packed-switch 0x0 ++ :pswitch_2f ++ :pswitch_62 ++ :pswitch_6b ++ :pswitch_b5 ++ .end packed-switch ++ ++ :pswitch_data_2a6 ++ .packed-switch 0x0 ++ :pswitch_111 ++ :pswitch_145 ++ :pswitch_14f ++ :pswitch_199 ++ .end packed-switch ++.end method ++ ++.method public getProvider(Ljava/lang/String;)Landroid/location/LocationProvider; ++ .registers 7 ++ ++ if-nez p1, :cond_7 ++ ++ invoke-super {p0, p1}, Landroid/location/LocationManager;->getProvider(Ljava/lang/String;)Landroid/location/LocationProvider; ++ ++ move-result-object v0 ++ ++ :cond_6 ++ :goto_6 ++ return-object v0 ++ ++ :cond_7 ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v4 ++ ++ invoke-virtual {v2, v3, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v1 ++ ++ const/4 v0, 0x0 ++ ++ if-eqz v1, :cond_5f ++ ++ const-string v2, "gps" ++ ++ invoke-virtual {p1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_2f ++ ++ invoke-virtual {v1}, Landroid/privacy/PrivacySettings;->getLocationGpsSetting()B ++ ++ move-result v2 ++ ++ packed-switch v2, :pswitch_data_64 ++ ++ :pswitch_29 ++ goto :goto_6 ++ ++ :pswitch_2a ++ invoke-super {p0, p1}, Landroid/location/LocationManager;->getProvider(Ljava/lang/String;)Landroid/location/LocationProvider; ++ ++ move-result-object v0 ++ ++ goto :goto_6 ++ ++ :cond_2f ++ const-string/jumbo v2, "network" ++ ++ invoke-virtual {p1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_45 ++ ++ invoke-virtual {v1}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v2 ++ ++ packed-switch v2, :pswitch_data_70 ++ ++ :pswitch_3f ++ goto :goto_6 ++ ++ :pswitch_40 ++ invoke-super {p0, p1}, Landroid/location/LocationManager;->getProvider(Ljava/lang/String;)Landroid/location/LocationProvider; ++ ++ move-result-object v0 ++ ++ goto :goto_6 ++ ++ :cond_45 ++ const-string/jumbo v2, "passive" ++ ++ invoke-virtual {p1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_6 ++ ++ invoke-virtual {v1}, Landroid/privacy/PrivacySettings;->getLocationGpsSetting()B ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_5a ++ ++ invoke-virtual {v1}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v2 ++ ++ if-nez v2, :cond_6 ++ ++ :cond_5a ++ invoke-super {p0, p1}, Landroid/location/LocationManager;->getProvider(Ljava/lang/String;)Landroid/location/LocationProvider; ++ ++ move-result-object v0 ++ ++ goto :goto_6 ++ ++ :cond_5f ++ invoke-super {p0, p1}, Landroid/location/LocationManager;->getProvider(Ljava/lang/String;)Landroid/location/LocationProvider; ++ ++ move-result-object v0 ++ ++ goto :goto_6 ++ ++ :pswitch_data_64 ++ .packed-switch 0x0 ++ :pswitch_2a ++ :pswitch_29 ++ :pswitch_2a ++ :pswitch_2a ++ .end packed-switch ++ ++ :pswitch_data_70 ++ .packed-switch 0x0 ++ :pswitch_40 ++ :pswitch_3f ++ :pswitch_40 ++ :pswitch_40 ++ .end packed-switch ++.end method ++ ++.method public isProviderEnabled(Ljava/lang/String;)Z ++ .registers 7 ++ ++ if-nez p1, :cond_7 ++ ++ invoke-super {p0, p1}, Landroid/location/LocationManager;->isProviderEnabled(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ :cond_6 ++ :goto_6 ++ :pswitch_6 ++ return v0 ++ ++ :cond_7 ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyLocationManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v4 ++ ++ invoke-virtual {v2, v3, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v1 ++ ++ const/4 v0, 0x0 ++ ++ if-eqz v1, :cond_65 ++ ++ const-string v2, "gps" ++ ++ invoke-virtual {p1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_31 ++ ++ invoke-virtual {v1}, Landroid/privacy/PrivacySettings;->getLocationGpsSetting()B ++ ++ move-result v2 ++ ++ packed-switch v2, :pswitch_data_6a ++ ++ goto :goto_6 ++ ++ :pswitch_2a ++ invoke-super {p0, p1}, Landroid/location/LocationManager;->isProviderEnabled(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ goto :goto_6 ++ ++ :pswitch_2f ++ const/4 v0, 0x1 ++ ++ goto :goto_6 ++ ++ :cond_31 ++ const-string/jumbo v2, "network" ++ ++ invoke-virtual {p1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_49 ++ ++ invoke-virtual {v1}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v2 ++ ++ packed-switch v2, :pswitch_data_76 ++ ++ goto :goto_6 ++ ++ :pswitch_42 ++ invoke-super {p0, p1}, Landroid/location/LocationManager;->isProviderEnabled(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ goto :goto_6 ++ ++ :pswitch_47 ++ const/4 v0, 0x1 ++ ++ goto :goto_6 ++ ++ :cond_49 ++ const-string/jumbo v2, "passive" ++ ++ invoke-virtual {p1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_6 ++ ++ invoke-virtual {v1}, Landroid/privacy/PrivacySettings;->getLocationGpsSetting()B ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_5e ++ ++ invoke-virtual {v1}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v2 ++ ++ if-nez v2, :cond_63 ++ ++ :cond_5e ++ invoke-super {p0, p1}, Landroid/location/LocationManager;->isProviderEnabled(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ goto :goto_6 ++ ++ :cond_63 ++ const/4 v0, 0x0 ++ ++ goto :goto_6 ++ ++ :cond_65 ++ invoke-super {p0, p1}, Landroid/location/LocationManager;->isProviderEnabled(Ljava/lang/String;)Z ++ ++ move-result v0 ++ ++ goto :goto_6 ++ ++ :pswitch_data_6a ++ .packed-switch 0x0 ++ :pswitch_2a ++ :pswitch_6 ++ :pswitch_2f ++ :pswitch_2f ++ .end packed-switch ++ ++ :pswitch_data_76 ++ .packed-switch 0x0 ++ :pswitch_42 ++ :pswitch_6 ++ :pswitch_47 ++ :pswitch_47 ++ .end packed-switch ++.end method ++ ++.method public requestLocationUpdates(JFLandroid/location/Criteria;Landroid/app/PendingIntent;)V ++ .registers 7 ++ ++ if-eqz p4, :cond_4 ++ ++ if-nez p5, :cond_8 ++ ++ :cond_4 ++ invoke-super/range {p0 .. p5}, Landroid/location/LocationManager;->requestLocationUpdates(JFLandroid/location/Criteria;Landroid/app/PendingIntent;)V ++ ++ :cond_7 ++ :goto_7 ++ return-void ++ ++ :cond_8 ++ const/4 v0, 0x0 ++ ++ invoke-direct {p0, p4, v0, p5}, Landroid/privacy/surrogate/PrivacyLocationManager;->requestLocationUpdates(Landroid/location/Criteria;Landroid/location/LocationListener;Landroid/app/PendingIntent;)Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_7 ++ ++ invoke-super/range {p0 .. p5}, Landroid/location/LocationManager;->requestLocationUpdates(JFLandroid/location/Criteria;Landroid/app/PendingIntent;)V ++ ++ goto :goto_7 ++.end method ++ ++.method public requestLocationUpdates(JFLandroid/location/Criteria;Landroid/location/LocationListener;Landroid/os/Looper;)V ++ .registers 8 ++ ++ if-eqz p4, :cond_4 ++ ++ if-nez p5, :cond_8 ++ ++ :cond_4 ++ invoke-super/range {p0 .. p6}, Landroid/location/LocationManager;->requestLocationUpdates(JFLandroid/location/Criteria;Landroid/location/LocationListener;Landroid/os/Looper;)V ++ ++ :cond_7 ++ :goto_7 ++ return-void ++ ++ :cond_8 ++ const/4 v0, 0x0 ++ ++ invoke-direct {p0, p4, p5, v0}, Landroid/privacy/surrogate/PrivacyLocationManager;->requestLocationUpdates(Landroid/location/Criteria;Landroid/location/LocationListener;Landroid/app/PendingIntent;)Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_7 ++ ++ invoke-super/range {p0 .. p6}, Landroid/location/LocationManager;->requestLocationUpdates(JFLandroid/location/Criteria;Landroid/location/LocationListener;Landroid/os/Looper;)V ++ ++ goto :goto_7 ++.end method ++ ++.method public requestLocationUpdates(Ljava/lang/String;JFLandroid/app/PendingIntent;)V ++ .registers 7 ++ ++ if-eqz p1, :cond_4 ++ ++ if-nez p5, :cond_8 ++ ++ :cond_4 ++ invoke-super/range {p0 .. p5}, Landroid/location/LocationManager;->requestLocationUpdates(Ljava/lang/String;JFLandroid/app/PendingIntent;)V ++ ++ :cond_7 ++ :goto_7 ++ return-void ++ ++ :cond_8 ++ const/4 v0, 0x0 ++ ++ invoke-direct {p0, p1, v0, p5}, Landroid/privacy/surrogate/PrivacyLocationManager;->requestLocationUpdates(Ljava/lang/String;Landroid/location/LocationListener;Landroid/app/PendingIntent;)Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_7 ++ ++ invoke-super/range {p0 .. p5}, Landroid/location/LocationManager;->requestLocationUpdates(Ljava/lang/String;JFLandroid/app/PendingIntent;)V ++ ++ goto :goto_7 ++.end method ++ ++.method public requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;)V ++ .registers 7 ++ ++ if-eqz p1, :cond_4 ++ ++ if-nez p5, :cond_8 ++ ++ :cond_4 ++ invoke-super/range {p0 .. p5}, Landroid/location/LocationManager;->requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;)V ++ ++ :cond_7 ++ :goto_7 ++ return-void ++ ++ :cond_8 ++ const/4 v0, 0x0 ++ ++ invoke-direct {p0, p1, p5, v0}, Landroid/privacy/surrogate/PrivacyLocationManager;->requestLocationUpdates(Ljava/lang/String;Landroid/location/LocationListener;Landroid/app/PendingIntent;)Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_7 ++ ++ invoke-super/range {p0 .. p5}, Landroid/location/LocationManager;->requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;)V ++ ++ goto :goto_7 ++.end method ++ ++.method public requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;Landroid/os/Looper;)V ++ .registers 8 ++ ++ if-eqz p1, :cond_4 ++ ++ if-nez p5, :cond_8 ++ ++ :cond_4 ++ invoke-super/range {p0 .. p6}, Landroid/location/LocationManager;->requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;Landroid/os/Looper;)V ++ ++ :cond_7 ++ :goto_7 ++ return-void ++ ++ :cond_8 ++ const/4 v0, 0x0 ++ ++ invoke-direct {p0, p1, p5, v0}, Landroid/privacy/surrogate/PrivacyLocationManager;->requestLocationUpdates(Ljava/lang/String;Landroid/location/LocationListener;Landroid/app/PendingIntent;)Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_7 ++ ++ invoke-super/range {p0 .. p6}, Landroid/location/LocationManager;->requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;Landroid/os/Looper;)V ++ ++ goto :goto_7 ++.end method ++ ++.method public requestSingleUpdate(Landroid/location/Criteria;Landroid/app/PendingIntent;)V ++ .registers 4 ++ ++ if-eqz p1, :cond_4 ++ ++ if-nez p2, :cond_8 ++ ++ :cond_4 ++ invoke-super {p0, p1, p2}, Landroid/location/LocationManager;->requestSingleUpdate(Landroid/location/Criteria;Landroid/app/PendingIntent;)V ++ ++ :cond_7 ++ :goto_7 ++ return-void ++ ++ :cond_8 ++ const/4 v0, 0x0 ++ ++ invoke-direct {p0, p1, v0, p2}, Landroid/privacy/surrogate/PrivacyLocationManager;->requestLocationUpdates(Landroid/location/Criteria;Landroid/location/LocationListener;Landroid/app/PendingIntent;)Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_7 ++ ++ invoke-super {p0, p1, p2}, Landroid/location/LocationManager;->requestSingleUpdate(Landroid/location/Criteria;Landroid/app/PendingIntent;)V ++ ++ goto :goto_7 ++.end method ++ ++.method public requestSingleUpdate(Landroid/location/Criteria;Landroid/location/LocationListener;Landroid/os/Looper;)V ++ .registers 5 ++ ++ if-eqz p1, :cond_4 ++ ++ if-nez p2, :cond_8 ++ ++ :cond_4 ++ invoke-super {p0, p1, p2, p3}, Landroid/location/LocationManager;->requestSingleUpdate(Landroid/location/Criteria;Landroid/location/LocationListener;Landroid/os/Looper;)V ++ ++ :cond_7 ++ :goto_7 ++ return-void ++ ++ :cond_8 ++ const/4 v0, 0x0 ++ ++ invoke-direct {p0, p1, p2, v0}, Landroid/privacy/surrogate/PrivacyLocationManager;->requestLocationUpdates(Landroid/location/Criteria;Landroid/location/LocationListener;Landroid/app/PendingIntent;)Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_7 ++ ++ invoke-super {p0, p1, p2, p3}, Landroid/location/LocationManager;->requestSingleUpdate(Landroid/location/Criteria;Landroid/location/LocationListener;Landroid/os/Looper;)V ++ ++ goto :goto_7 ++.end method ++ ++.method public requestSingleUpdate(Ljava/lang/String;Landroid/app/PendingIntent;)V ++ .registers 4 ++ ++ if-eqz p1, :cond_4 ++ ++ if-nez p2, :cond_8 ++ ++ :cond_4 ++ invoke-super {p0, p1, p2}, Landroid/location/LocationManager;->requestSingleUpdate(Ljava/lang/String;Landroid/app/PendingIntent;)V ++ ++ :cond_7 ++ :goto_7 ++ return-void ++ ++ :cond_8 ++ const/4 v0, 0x0 ++ ++ invoke-direct {p0, p1, v0, p2}, Landroid/privacy/surrogate/PrivacyLocationManager;->requestLocationUpdates(Ljava/lang/String;Landroid/location/LocationListener;Landroid/app/PendingIntent;)Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_7 ++ ++ invoke-super {p0, p1, p2}, Landroid/location/LocationManager;->requestSingleUpdate(Ljava/lang/String;Landroid/app/PendingIntent;)V ++ ++ goto :goto_7 ++.end method ++ ++.method public requestSingleUpdate(Ljava/lang/String;Landroid/location/LocationListener;Landroid/os/Looper;)V ++ .registers 5 ++ ++ if-eqz p1, :cond_4 ++ ++ if-nez p2, :cond_8 ++ ++ :cond_4 ++ invoke-super {p0, p1, p2, p3}, Landroid/location/LocationManager;->requestSingleUpdate(Ljava/lang/String;Landroid/location/LocationListener;Landroid/os/Looper;)V ++ ++ :cond_7 ++ :goto_7 ++ return-void ++ ++ :cond_8 ++ const/4 v0, 0x0 ++ ++ invoke-direct {p0, p1, p2, v0}, Landroid/privacy/surrogate/PrivacyLocationManager;->requestLocationUpdates(Ljava/lang/String;Landroid/location/LocationListener;Landroid/app/PendingIntent;)Z ++ ++ move-result v0 ++ ++ if-nez v0, :cond_7 ++ ++ invoke-super {p0, p1, p2, p3}, Landroid/location/LocationManager;->requestSingleUpdate(Ljava/lang/String;Landroid/location/LocationListener;Landroid/os/Looper;)V ++ ++ goto :goto_7 ++.end method +diff -Npru stock-framework/smali/android/privacy/surrogate/PrivacyTelephonyManager.smali pdroid-framework/smali/android/privacy/surrogate/PrivacyTelephonyManager.smali +--- stock-framework/smali/android/privacy/surrogate/PrivacyTelephonyManager.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/surrogate/PrivacyTelephonyManager.smali 2013-08-10 20:37:42.511213442 -0700 +@@ -0,0 +1,1385 @@ ++.class public final Landroid/privacy/surrogate/PrivacyTelephonyManager; ++.super Landroid/telephony/TelephonyManager; ++.source "PrivacyTelephonyManager.java" ++ ++ ++# static fields ++.field private static final NETWORK_TYPES:[I = null ++ ++.field private static final PHONE_TYPES:[I = null ++ ++.field private static final TAG:Ljava/lang/String; = "PrivacyTelephonyManager" ++ ++ ++# instance fields ++.field private context:Landroid/content/Context; ++ ++.field private pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ ++# direct methods ++.method static constructor ()V ++ .registers 1 ++ ++ const/4 v0, 0x4 ++ ++ new-array v0, v0, [I ++ ++ fill-array-data v0, :array_12 ++ ++ sput-object v0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->PHONE_TYPES:[I ++ ++ const/16 v0, 0x10 ++ ++ new-array v0, v0, [I ++ ++ fill-array-data v0, :array_1e ++ ++ sput-object v0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->NETWORK_TYPES:[I ++ ++ return-void ++ ++ :array_12 ++ .array-data 0x4 ++ 0x0t 0x0t 0x0t 0x0t ++ 0x1t 0x0t 0x0t 0x0t ++ 0x2t 0x0t 0x0t 0x0t ++ 0x3t 0x0t 0x0t 0x0t ++ .end array-data ++ ++ :array_1e ++ .array-data 0x4 ++ 0x0t 0x0t 0x0t 0x0t ++ 0x1t 0x0t 0x0t 0x0t ++ 0x2t 0x0t 0x0t 0x0t ++ 0x3t 0x0t 0x0t 0x0t ++ 0x4t 0x0t 0x0t 0x0t ++ 0x5t 0x0t 0x0t 0x0t ++ 0x6t 0x0t 0x0t 0x0t ++ 0x7t 0x0t 0x0t 0x0t ++ 0x8t 0x0t 0x0t 0x0t ++ 0x9t 0x0t 0x0t 0x0t ++ 0xat 0x0t 0x0t 0x0t ++ 0xbt 0x0t 0x0t 0x0t ++ 0xct 0x0t 0x0t 0x0t ++ 0xdt 0x0t 0x0t 0x0t ++ 0xet 0x0t 0x0t 0x0t ++ 0xft 0x0t 0x0t 0x0t ++ .end array-data ++.end method ++ ++.method public constructor (Landroid/content/Context;)V ++ .registers 4 ++ ++ invoke-direct {p0, p1}, Landroid/telephony/TelephonyManager;->(Landroid/content/Context;)V ++ ++ iput-object p1, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ new-instance v0, Landroid/privacy/PrivacySettingsManager; ++ ++ const-string/jumbo v1, "privacy" ++ ++ invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v1 ++ ++ invoke-direct {v0, p1, v1}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ return-void ++.end method ++ ++.method private getNetworkInfo()Ljava/lang/String; ++ .registers 8 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_25 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_25 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x1 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ const-string v5, "" ++ ++ :goto_24 ++ return-object v5 ++ ++ :cond_25 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string/jumbo v4, "networkInfoCurrent" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_24 ++.end method ++ ++.method private getSimInfo()Ljava/lang/String; ++ .registers 8 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_25 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSimInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_25 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x1 ++ ++ const-string/jumbo v4, "networkInfoSIM" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ const-string v5, "" ++ ++ :goto_24 ++ return-object v5 ++ ++ :cond_25 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string/jumbo v4, "networkInfoSIM" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_24 ++.end method ++ ++ ++# virtual methods ++.method public getAllCellInfo()Ljava/util/List; ++ .registers 6 ++ .annotation system Ldalvik/annotation/Signature; ++ value = { ++ "()", ++ "Ljava/util/List", ++ "<", ++ "Landroid/telephony/CellInfo;", ++ ">;" ++ } ++ .end annotation ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v4 ++ ++ invoke-virtual {v2, v3, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v1 ++ ++ const/4 v0, 0x0 ++ ++ if-eqz v1, :cond_1f ++ ++ invoke-virtual {v1}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v2 ++ ++ const/4 v3, 0x1 ++ ++ if-ne v2, v3, :cond_20 ++ ++ new-instance v0, Ljava/util/ArrayList; ++ ++ invoke-direct {v0}, Ljava/util/ArrayList;->()V ++ ++ :cond_1f ++ :goto_1f ++ return-object v0 ++ ++ :cond_20 ++ invoke-virtual {v1}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_2c ++ ++ new-instance v0, Ljava/util/ArrayList; ++ ++ invoke-direct {v0}, Ljava/util/ArrayList;->()V ++ ++ goto :goto_1f ++ ++ :cond_2c ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getAllCellInfo()Ljava/util/List; ++ ++ move-result-object v0 ++ ++ goto :goto_1f ++.end method ++ ++.method public getCellLocation()Landroid/telephony/CellLocation; ++ .registers 10 ++ ++ const/4 v7, 0x0 ++ ++ :try_start_1 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_2c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v0 ++ ++ if-nez v0, :cond_1f ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationGpsSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_2c ++ ++ :cond_1f ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "locationNetwork" ++ ++ const/4 v5, 0x0 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_2b ++ return-object v7 ++ ++ :cond_2c ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "locationNetwork" ++ ++ const/4 v5, 0x0 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getCellLocation()Landroid/telephony/CellLocation; ++ :try_end_3b ++ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_3b} :catch_3d ++ ++ move-result-object v7 ++ ++ goto :goto_2b ++ ++ :catch_3d ++ move-exception v8 ++ ++ goto :goto_2b ++.end method ++ ++.method public getCompleteVoiceMailNumber()Ljava/lang/String; ++ .registers 9 ++ ++ :try_start_0 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ const-string v5, "" ++ ++ if-eqz v6, :cond_2a ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_2a ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_29 ++ return-object v5 ++ ++ :cond_2a ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getCompleteVoiceMailNumber()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ :try_end_36 ++ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_36} :catch_37 ++ ++ goto :goto_29 ++ ++ :catch_37 ++ move-exception v7 ++ ++ const/4 v5, 0x0 ++ ++ goto :goto_29 ++.end method ++ ++.method public getDeviceId()Ljava/lang/String; ++ .registers 8 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_28 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_28 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_27 ++ return-object v5 ++ ++ :cond_28 ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_27 ++.end method ++ ++.method public getDeviceSoftwareVersion()Ljava/lang/String; ++ .registers 9 ++ ++ :try_start_0 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ const-string v5, "" ++ ++ if-eqz v6, :cond_2a ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_2a ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_29 ++ return-object v5 ++ ++ :cond_2a ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getDeviceSoftwareVersion()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ :try_end_36 ++ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_36} :catch_37 ++ ++ goto :goto_29 ++ ++ :catch_37 ++ move-exception v7 ++ ++ const/4 v5, 0x0 ++ ++ goto :goto_29 ++.end method ++ ++.method public getIsimDomain()Ljava/lang/String; ++ .registers 2 ++ ++ invoke-virtual {p0}, Landroid/privacy/surrogate/PrivacyTelephonyManager;->getNetworkOperatorName()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public getIsimImpi()Ljava/lang/String; ++ .registers 4 ++ ++ const-string v0, "PrivacyTelephonyManager" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "getIsimImpi - " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-virtual {p0}, Landroid/privacy/surrogate/PrivacyTelephonyManager;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public getIsimImpu()[Ljava/lang/String; ++ .registers 10 ++ ++ const/4 v8, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ const-string v0, "PrivacyTelephonyManager" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "getIsimImpu() - " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v0, 0x1 ++ ++ new-array v7, v0, [Ljava/lang/String; ++ ++ if-eqz v6, :cond_4f ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSubscriberIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4f ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ aput-object v0, v7, v8 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSubscriberIdSetting()B ++ ++ move-result v3 ++ ++ const-string/jumbo v4, "subscriberID" ++ ++ aget-object v5, v7, v8 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4e ++ return-object v7 ++ ++ :cond_4f ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getIsimImpu()[Ljava/lang/String; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string/jumbo v4, "subscriberID" ++ ++ aget-object v5, v7, v8 ++ ++ move v3, v8 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4e ++.end method ++ ++.method public getLine1AlphaTag()Ljava/lang/String; ++ .registers 2 ++ ++ invoke-virtual {p0}, Landroid/privacy/surrogate/PrivacyTelephonyManager;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public getLine1Number()Ljava/lang/String; ++ .registers 8 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_28 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_28 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_27 ++ return-object v5 ++ ++ :cond_28 ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_27 ++.end method ++ ++.method public getMsisdn()Ljava/lang/String; ++ .registers 4 ++ ++ const-string v0, "PrivacyTelephonyManager" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "getMsisdn() - " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-virtual {p0}, Landroid/privacy/surrogate/PrivacyTelephonyManager;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public getNeighboringCellInfo()Ljava/util/List; ++ .registers 10 ++ .annotation system Ldalvik/annotation/Signature; ++ value = { ++ "()", ++ "Ljava/util/List", ++ "<", ++ "Landroid/telephony/NeighboringCellInfo;", ++ ">;" ++ } ++ .end annotation ++ ++ iget-object v6, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v7, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v7}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v7 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v8 ++ ++ invoke-virtual {v6, v7, v8}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v5 ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "[null]" ++ ++ if-eqz v5, :cond_1c ++ ++ invoke-virtual {v5}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v6 ++ ++ const/4 v7, 0x1 ++ ++ if-ne v6, v7, :cond_1d ++ ++ :cond_1c ++ :goto_1c ++ return-object v3 ++ ++ :cond_1d ++ invoke-virtual {v5}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v6 ++ ++ if-eqz v6, :cond_2b ++ ++ new-instance v3, Ljava/util/ArrayList; ++ ++ invoke-direct {v3}, Ljava/util/ArrayList;->()V ++ ++ const-string v4, "[empty list of cells]" ++ ++ goto :goto_1c ++ ++ :cond_2b ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getNeighboringCellInfo()Ljava/util/List; ++ ++ move-result-object v3 ++ ++ const-string v0, "" ++ ++ invoke-interface {v3}, Ljava/util/List;->iterator()Ljava/util/Iterator; ++ ++ move-result-object v2 ++ ++ :goto_35 ++ invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z ++ ++ move-result v6 ++ ++ if-eqz v6, :cond_5f ++ ++ invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object; ++ ++ move-result-object v1 ++ ++ check-cast v1, Landroid/telephony/NeighboringCellInfo; ++ ++ new-instance v6, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V ++ ++ invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ const-string v7, "\t" ++ ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v6, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ const-string v7, "\n" ++ ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ goto :goto_35 ++ ++ :cond_5f ++ new-instance v6, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v6}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v7, "[real value]:\n" ++ ++ invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v6 ++ ++ invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ goto :goto_1c ++.end method ++ ++.method public getNetworkCountryIso()Ljava/lang/String; ++ .registers 2 ++ ++ invoke-direct {p0}, Landroid/privacy/surrogate/PrivacyTelephonyManager;->getNetworkInfo()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ if-nez v0, :cond_a ++ ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getNetworkCountryIso()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ :cond_a ++ return-object v0 ++.end method ++ ++.method public getNetworkOperator()Ljava/lang/String; ++ .registers 2 ++ ++ invoke-direct {p0}, Landroid/privacy/surrogate/PrivacyTelephonyManager;->getNetworkInfo()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ if-nez v0, :cond_a ++ ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getNetworkOperator()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ :cond_a ++ return-object v0 ++.end method ++ ++.method public getNetworkOperatorName()Ljava/lang/String; ++ .registers 2 ++ ++ invoke-direct {p0}, Landroid/privacy/surrogate/PrivacyTelephonyManager;->getNetworkInfo()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ if-nez v0, :cond_a ++ ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getNetworkOperatorName()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ :cond_a ++ return-object v0 ++.end method ++ ++.method public getNetworkType()I ++ .registers 7 ++ ++ const/4 v5, 0x0 ++ ++ :try_start_1 ++ invoke-direct {p0}, Landroid/privacy/surrogate/PrivacyTelephonyManager;->getNetworkInfo()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ sget-object v3, Landroid/privacy/surrogate/PrivacyTelephonyManager;->NETWORK_TYPES:[I ++ ++ const/4 v4, 0x0 ++ ++ aget v2, v3, v4 ++ ++ if-nez v1, :cond_10 ++ ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getNetworkType()I ++ :try_end_f ++ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_f} :catch_11 ++ ++ move-result v2 ++ ++ :cond_10 ++ :goto_10 ++ return v2 ++ ++ :catch_11 ++ move-exception v0 ++ ++ sget-object v3, Landroid/privacy/surrogate/PrivacyTelephonyManager;->NETWORK_TYPES:[I ++ ++ aget v2, v3, v5 ++ ++ goto :goto_10 ++.end method ++ ++.method public getPhoneType()I ++ .registers 5 ++ ++ invoke-direct {p0}, Landroid/privacy/surrogate/PrivacyTelephonyManager;->getNetworkInfo()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ sget-object v2, Landroid/privacy/surrogate/PrivacyTelephonyManager;->PHONE_TYPES:[I ++ ++ const/4 v3, 0x0 ++ ++ aget v1, v2, v3 ++ ++ if-nez v0, :cond_f ++ ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getPhoneType()I ++ ++ move-result v1 ++ ++ :cond_f ++ return v1 ++.end method ++ ++.method public getSimCountryIso()Ljava/lang/String; ++ .registers 2 ++ ++ invoke-direct {p0}, Landroid/privacy/surrogate/PrivacyTelephonyManager;->getSimInfo()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ if-nez v0, :cond_a ++ ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getSimCountryIso()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ :cond_a ++ return-object v0 ++.end method ++ ++.method public getSimOperator()Ljava/lang/String; ++ .registers 2 ++ ++ invoke-direct {p0}, Landroid/privacy/surrogate/PrivacyTelephonyManager;->getSimInfo()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ if-nez v0, :cond_a ++ ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getSimOperator()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ :cond_a ++ return-object v0 ++.end method ++ ++.method public getSimOperatorName()Ljava/lang/String; ++ .registers 2 ++ ++ invoke-direct {p0}, Landroid/privacy/surrogate/PrivacyTelephonyManager;->getSimInfo()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ if-nez v0, :cond_a ++ ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getSimOperatorName()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ :cond_a ++ return-object v0 ++.end method ++ ++.method public getSimSerialNumber()Ljava/lang/String; ++ .registers 8 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_29 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSimSerialNumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_29 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSimSerialNumber()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSimSerialNumberSetting()B ++ ++ move-result v3 ++ ++ const-string/jumbo v4, "simSerial" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_28 ++ return-object v5 ++ ++ :cond_29 ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getSimSerialNumber()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string/jumbo v4, "simSerial" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_28 ++.end method ++ ++.method public getSubscriberId()Ljava/lang/String; ++ .registers 8 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ const-string v0, "PrivacyTelephonyManager" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "getSubscriberId() - " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ if-eqz v6, :cond_47 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSubscriberIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_47 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSubscriberIdSetting()B ++ ++ move-result v3 ++ ++ const-string/jumbo v4, "subscriberID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_46 ++ return-object v5 ++ ++ :cond_47 ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string/jumbo v4, "subscriberID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_46 ++.end method ++ ++.method public getVoiceMailAlphaTag()Ljava/lang/String; ++ .registers 2 ++ ++ invoke-virtual {p0}, Landroid/privacy/surrogate/PrivacyTelephonyManager;->getVoiceMailNumber()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public getVoiceMailNumber()Ljava/lang/String; ++ .registers 8 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_28 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_28 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_27 ++ return-object v5 ++ ++ :cond_28 ++ invoke-super {p0}, Landroid/telephony/TelephonyManager;->getVoiceMailNumber()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_27 ++.end method ++ ++.method public listen(Landroid/telephony/PhoneStateListener;I)V ++ .registers 5 ++ ++ and-int/lit8 v1, p2, 0x10 ++ ++ if-nez v1, :cond_8 ++ ++ and-int/lit8 v1, p2, 0x20 ++ ++ if-eqz v1, :cond_29 ++ ++ :cond_8 ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ if-eqz v1, :cond_27 ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ :goto_12 ++ if-eqz v0, :cond_1c ++ ++ invoke-virtual {p1, v0}, Landroid/telephony/PhoneStateListener;->setPackageName(Ljava/lang/String;)V ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyTelephonyManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {p1, v1}, Landroid/telephony/PhoneStateListener;->setContext(Landroid/content/Context;)V ++ ++ :cond_1c ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v1 ++ ++ invoke-virtual {p1, v1}, Landroid/telephony/PhoneStateListener;->setUid(I)V ++ ++ invoke-super {p0, p1, p2}, Landroid/telephony/TelephonyManager;->listen(Landroid/telephony/PhoneStateListener;I)V ++ ++ :goto_26 ++ return-void ++ ++ :cond_27 ++ const/4 v0, 0x0 ++ ++ goto :goto_12 ++ ++ :cond_29 ++ invoke-super {p0, p1, p2}, Landroid/telephony/TelephonyManager;->listen(Landroid/telephony/PhoneStateListener;I)V ++ ++ goto :goto_26 ++.end method +diff -Npru stock-framework/smali/android/privacy/surrogate/PrivacyWifiManager.smali pdroid-framework/smali/android/privacy/surrogate/PrivacyWifiManager.smali +--- stock-framework/smali/android/privacy/surrogate/PrivacyWifiManager.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-framework/smali/android/privacy/surrogate/PrivacyWifiManager.smali 2013-08-10 20:37:42.511213442 -0700 +@@ -0,0 +1,1015 @@ ++.class public Landroid/privacy/surrogate/PrivacyWifiManager; ++.super Landroid/net/wifi/WifiManager; ++.source "PrivacyWifiManager.java" ++ ++ ++# static fields ++.field private static final P_TAG:Ljava/lang/String; = "PrivacyWifiManager" ++ ++ ++# instance fields ++.field private context:Landroid/content/Context; ++ ++.field private pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ ++# direct methods ++.method public constructor (Landroid/content/Context;Landroid/net/wifi/IWifiManager;)V ++ .registers 5 ++ ++ invoke-direct {p0, p1, p2}, Landroid/net/wifi/WifiManager;->(Landroid/content/Context;Landroid/net/wifi/IWifiManager;)V ++ ++ iput-object p1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ new-instance v0, Landroid/privacy/PrivacySettingsManager; ++ ++ const-string/jumbo v1, "privacy" ++ ++ invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v1 ++ ++ invoke-direct {v0, p1, v1}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public getConfigFile()Ljava/lang/String; ++ .registers 9 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_31 ++ ++ if-eqz v7, :cond_31 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getWifiInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_31 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ const-string v0, "" ++ ++ :goto_30 ++ return-object v0 ++ ++ :cond_31 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x0 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Landroid/net/wifi/WifiManager;->getConfigFile()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ goto :goto_30 ++.end method ++ ++.method public getConfiguredNetworks()Ljava/util/List; ++ .registers 10 ++ .annotation system Ldalvik/annotation/Signature; ++ value = { ++ "()", ++ "Ljava/util/List", ++ "<", ++ "Landroid/net/wifi/WifiConfiguration;", ++ ">;" ++ } ++ .end annotation ++ ++ const/4 v2, -0x1 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v8 ++ ++ new-instance v7, Ljava/util/ArrayList; ++ ++ invoke-direct {v7}, Ljava/util/ArrayList;->()V ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_34 ++ ++ if-eqz v8, :cond_34 ++ ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getWifiInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_34 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_33 ++ return-object v7 ++ ++ :cond_34 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x0 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Landroid/net/wifi/WifiManager;->getConfiguredNetworks()Ljava/util/List; ++ ++ move-result-object v7 ++ ++ goto :goto_33 ++.end method ++ ++.method public getConnectionInfo()Landroid/net/wifi/WifiInfo; ++ .registers 10 ++ ++ const/4 v3, 0x1 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v4 ++ ++ invoke-virtual {v0, v1, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v8 ++ ++ new-instance v7, Landroid/net/wifi/WifiInfo; ++ ++ invoke-direct {v7, v3}, Landroid/net/wifi/WifiInfo;->(Z)V ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_34 ++ ++ if-eqz v8, :cond_34 ++ ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getWifiInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_34 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_33 ++ return-object v7 ++ ++ :cond_34 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x0 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Landroid/net/wifi/WifiManager;->getConnectionInfo()Landroid/net/wifi/WifiInfo; ++ ++ move-result-object v7 ++ ++ goto :goto_33 ++.end method ++ ++.method public getDhcpInfo()Landroid/net/DhcpInfo; ++ .registers 9 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_34 ++ ++ if-eqz v7, :cond_34 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getWifiInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_34 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ new-instance v0, Landroid/net/DhcpInfo; ++ ++ invoke-direct {v0}, Landroid/net/DhcpInfo;->()V ++ ++ :goto_33 ++ return-object v0 ++ ++ :cond_34 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x0 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Landroid/net/wifi/WifiManager;->getDhcpInfo()Landroid/net/DhcpInfo; ++ ++ move-result-object v0 ++ ++ goto :goto_33 ++.end method ++ ++.method public getFrequencyBand()I ++ .registers 9 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_2f ++ ++ if-eqz v7, :cond_2f ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getWifiInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_2f ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_2e ++ return v2 ++ ++ :cond_2f ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x0 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Landroid/net/wifi/WifiManager;->getFrequencyBand()I ++ ++ move-result v2 ++ ++ goto :goto_2e ++.end method ++ ++.method public getScanResults()Ljava/util/List; ++ .registers 10 ++ .annotation system Ldalvik/annotation/Signature; ++ value = { ++ "()", ++ "Ljava/util/List", ++ "<", ++ "Landroid/net/wifi/ScanResult;", ++ ">;" ++ } ++ .end annotation ++ ++ const/4 v2, -0x1 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v8 ++ ++ new-instance v7, Ljava/util/ArrayList; ++ ++ invoke-direct {v7}, Ljava/util/ArrayList;->()V ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_34 ++ ++ if-eqz v8, :cond_34 ++ ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getWifiInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_34 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_33 ++ return-object v7 ++ ++ :cond_34 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x0 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Landroid/net/wifi/WifiManager;->getScanResults()Ljava/util/List; ++ ++ move-result-object v7 ++ ++ goto :goto_33 ++.end method ++ ++.method public getWifiApConfiguration()Landroid/net/wifi/WifiConfiguration; ++ .registers 9 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_34 ++ ++ if-eqz v7, :cond_34 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getWifiInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_34 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ new-instance v0, Landroid/net/wifi/WifiConfiguration; ++ ++ invoke-direct {v0}, Landroid/net/wifi/WifiConfiguration;->()V ++ ++ :goto_33 ++ return-object v0 ++ ++ :cond_34 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x0 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Landroid/net/wifi/WifiManager;->getWifiApConfiguration()Landroid/net/wifi/WifiConfiguration; ++ ++ move-result-object v0 ++ ++ goto :goto_33 ++.end method ++ ++.method public getWifiState()I ++ .registers 9 ++ ++ const/4 v3, 0x1 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v4 ++ ++ invoke-virtual {v0, v1, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_30 ++ ++ if-eqz v7, :cond_30 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getForceOnlineState()B ++ ++ move-result v0 ++ ++ if-nez v0, :cond_30 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ const/4 v0, 0x3 ++ ++ :goto_2f ++ return v0 ++ ++ :cond_30 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_4d ++ ++ if-eqz v7, :cond_4d ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getWifiInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4d ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ const/4 v0, 0x4 ++ ++ goto :goto_2f ++ ++ :cond_4d ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x0 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Landroid/net/wifi/WifiManager;->getWifiState()I ++ ++ move-result v0 ++ ++ goto :goto_2f ++.end method ++ ++.method public isWifiEnabled()Z ++ .registers 10 ++ ++ const/4 v8, 0x0 ++ ++ const/4 v3, 0x1 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v4 ++ ++ invoke-virtual {v0, v1, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_30 ++ ++ if-eqz v7, :cond_30 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getForceOnlineState()B ++ ++ move-result v0 ++ ++ if-nez v0, :cond_30 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_2f ++ return v3 ++ ++ :cond_30 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_4d ++ ++ if-eqz v7, :cond_4d ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getWifiInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4d ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ move v3, v8 ++ ++ goto :goto_2f ++ ++ :cond_4d ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move v3, v8 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Landroid/net/wifi/WifiManager;->isWifiEnabled()Z ++ ++ move-result v3 ++ ++ goto :goto_2f ++.end method ++ ++.method public setWifiEnabled(Z)Z ++ .registers 11 ++ ++ const/4 v8, 0x0 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_31 ++ ++ if-eqz v7, :cond_31 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getSwitchWifiStateSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_31 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string/jumbo v4, "switchWifiState" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ move v0, v8 ++ ++ :goto_30 ++ return v0 ++ ++ :cond_31 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "switchWifiState" ++ ++ move v3, v8 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1}, Landroid/net/wifi/WifiManager;->setWifiEnabled(Z)Z ++ ++ move-result v0 ++ ++ goto :goto_30 ++.end method ++ ++.method public startScan()Z ++ .registers 10 ++ ++ const/4 v8, 0x0 ++ ++ const/4 v2, -0x1 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_31 ++ ++ if-eqz v7, :cond_31 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getWifiInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_31 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ move v0, v8 ++ ++ :goto_30 ++ return v0 ++ ++ :cond_31 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyWifiManager;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v4, "wifiInfo" ++ ++ move v3, v8 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Landroid/net/wifi/WifiManager;->startScan()Z ++ ++ move-result v0 ++ ++ goto :goto_30 ++.end method +diff -Npru stock-framework/smali/android/provider/Settings$Secure.smali pdroid-framework/smali/android/provider/Settings$Secure.smali +--- stock-framework/smali/android/provider/Settings$Secure.smali 2013-08-10 20:37:48.023213671 -0700 ++++ pdroid-framework/smali/android/provider/Settings$Secure.smali 2013-08-10 20:37:42.567213444 -0700 +@@ -199,6 +199,8 @@ + + .field public static final PREFERRED_TTY_MODE:Ljava/lang/String; = "preferred_tty_mode" + ++.field private static final PRIVACY_TAG:Ljava/lang/String; = "PM,SecureSettings" ++ + .field public static final SCREENSAVER_ACTIVATE_ON_DOCK:Ljava/lang/String; = "screensaver_activate_on_dock" + + .field public static final SCREENSAVER_ACTIVATE_ON_SLEEP:Ljava/lang/String; = "screensaver_activate_on_sleep" +@@ -410,6 +412,14 @@ + + .field public static final WIMAX_ON:Ljava/lang/String; = "wimax_on" + ++.field private static context:Landroid/content/Context; ++ ++.field private static mPm:Landroid/content/pm/IPackageManager; ++ ++.field private static pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++.field private static privacyMode:Z ++ + .field private static sIsSystemProcess:Z + + .field private static sLockSettings:Lcom/android/internal/widget/ILockSettings; +@@ -419,9 +429,11 @@ + + # direct methods + .method static constructor ()V +- .registers 6 ++ .registers 7 ++ ++ const/4 v6, 0x3 + +- const/4 v5, 0x3 ++ const/4 v5, 0x0 + + const-string v0, "content://settings/secure" + +@@ -451,7 +463,7 @@ + + new-instance v0, Ljava/util/HashSet; + +- invoke-direct {v0, v5}, Ljava/util/HashSet;->(I)V ++ invoke-direct {v0, v6}, Ljava/util/HashSet;->(I)V + + sput-object v0, Landroid/provider/Settings$Secure;->MOVED_TO_LOCK_SETTINGS:Ljava/util/HashSet; + +@@ -1157,15 +1169,15 @@ + + invoke-virtual {v0, v1}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z + ++ sput-boolean v5, Landroid/provider/Settings$Secure;->privacyMode:Z ++ + const/16 v0, 0x20 + + new-array v0, v0, [Ljava/lang/String; + +- const/4 v1, 0x0 +- +- const-string v2, "bugreport_in_power_menu" ++ const-string v1, "bugreport_in_power_menu" + +- aput-object v2, v0, v1 ++ aput-object v1, v0, v5 + + const/4 v1, 0x1 + +@@ -1181,7 +1193,7 @@ + + const-string/jumbo v1, "parental_control_redirect_url" + +- aput-object v1, v0, v5 ++ aput-object v1, v0, v6 + + const/4 v1, 0x4 + +@@ -1668,6 +1680,70 @@ + return-void + .end method + ++.method private static getPackageName()[Ljava/lang/String; ++ .registers 5 ++ ++ :try_start_0 ++ sget-object v3, Landroid/provider/Settings$Secure;->mPm:Landroid/content/pm/IPackageManager; ++ ++ if-eqz v3, :cond_f ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v2 ++ ++ sget-object v3, Landroid/provider/Settings$Secure;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-interface {v3, v2}, Landroid/content/pm/IPackageManager;->getPackagesForUid(I)[Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ :goto_e ++ return-object v1 ++ ++ :cond_f ++ const-string/jumbo v3, "package" ++ ++ invoke-static {v3}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v3 ++ ++ invoke-static {v3}, Landroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager; ++ ++ move-result-object v3 ++ ++ sput-object v3, Landroid/provider/Settings$Secure;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v2 ++ ++ sget-object v3, Landroid/provider/Settings$Secure;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-interface {v3, v2}, Landroid/content/pm/IPackageManager;->getPackagesForUid(I)[Ljava/lang/String; ++ :try_end_25 ++ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_25} :catch_27 ++ ++ move-result-object v1 ++ ++ goto :goto_e ++ ++ :catch_27 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v3, "PM,SecureSettings" ++ ++ const-string/jumbo v4, "something went wrong with getting package name" ++ ++ invoke-static {v3, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v1, 0x0 ++ ++ goto :goto_e ++.end method ++ + .method public static getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String; + .registers 3 + +@@ -1683,152 +1759,392 @@ + .end method + + .method public static getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String; +- .registers 6 ++ .registers 23 + +- sget-object v0, Landroid/provider/Settings$Secure;->MOVED_TO_GLOBAL:Ljava/util/HashSet; ++ sget-object v3, Landroid/provider/Settings$Secure;->MOVED_TO_GLOBAL:Ljava/util/HashSet; + +- invoke-virtual {v0, p1}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z ++ move-object/from16 v0, p1 + +- move-result v0 ++ invoke-virtual {v3, v0}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z + +- if-eqz v0, :cond_31 ++ move-result v3 + +- const-string v0, "Settings" ++ if-eqz v3, :cond_35 + +- new-instance v1, Ljava/lang/StringBuilder; ++ const-string v3, "Settings" + +- invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ new-instance v4, Ljava/lang/StringBuilder; + +- const-string v2, "Setting " ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V + +- invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ const-string v5, "Setting " + +- move-result-object v1 ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ move-result-object v4 + +- move-result-object v1 ++ move-object/from16 v0, p1 + +- const-string v2, " has moved from android.provider.Settings.Secure" ++ invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ move-result-object v4 + +- move-result-object v1 ++ const-string v5, " has moved from android.provider.Settings.Secure" + +- const-string v2, " to android.provider.Settings.Global." ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ move-result-object v4 + +- move-result-object v1 ++ const-string v5, " to android.provider.Settings.Global." + +- invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v1 ++ move-result-object v4 + +- invoke-static {v0, v1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- invoke-static {p0, p1, p2}, Landroid/provider/Settings$Global;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String; ++ move-result-object v4 + +- move-result-object v0 ++ invoke-static {v3, v4}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I + +- :goto_30 +- return-object v0 ++ invoke-static/range {p0 .. p2}, Landroid/provider/Settings$Global;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String; + +- :cond_31 +- sget-object v0, Landroid/provider/Settings$Secure;->MOVED_TO_LOCK_SETTINGS:Ljava/util/HashSet; ++ move-result-object v8 + +- invoke-virtual {v0, p1}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z ++ :goto_34 ++ return-object v8 + +- move-result v0 ++ :cond_35 ++ sget-object v3, Landroid/provider/Settings$Secure;->MOVED_TO_LOCK_SETTINGS:Ljava/util/HashSet; + +- if-eqz v0, :cond_6f ++ move-object/from16 v0, p1 + +- const-class v1, Landroid/provider/Settings$Secure; ++ invoke-virtual {v3, v0}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z + +- monitor-enter v1 ++ move-result v3 + +- :try_start_3c +- sget-object v0, Landroid/provider/Settings$Secure;->sLockSettings:Lcom/android/internal/widget/ILockSettings; ++ if-eqz v3, :cond_79 + +- if-nez v0, :cond_57 ++ const-class v4, Landroid/provider/Settings$Secure; + +- const-string v0, "lock_settings" ++ monitor-enter v4 + +- invoke-static {v0}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ :try_start_42 ++ sget-object v3, Landroid/provider/Settings$Secure;->sLockSettings:Lcom/android/internal/widget/ILockSettings; + +- move-result-object v0 ++ if-nez v3, :cond_5d + +- invoke-static {v0}, Lcom/android/internal/widget/ILockSettings$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/widget/ILockSettings; ++ const-string v3, "lock_settings" + +- move-result-object v0 ++ invoke-static {v3}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; + +- sput-object v0, Landroid/provider/Settings$Secure;->sLockSettings:Lcom/android/internal/widget/ILockSettings; ++ move-result-object v3 ++ ++ invoke-static {v3}, Lcom/android/internal/widget/ILockSettings$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/widget/ILockSettings; ++ ++ move-result-object v3 ++ ++ sput-object v3, Landroid/provider/Settings$Secure;->sLockSettings:Lcom/android/internal/widget/ILockSettings; + + invoke-static {}, Landroid/os/Process;->myUid()I + +- move-result v0 ++ move-result v3 + +- const/16 v2, 0x3e8 ++ const/16 v5, 0x3e8 + +- if-ne v0, v2, :cond_69 ++ if-ne v3, v5, :cond_73 + +- const/4 v0, 0x1 ++ const/4 v3, 0x1 + +- :goto_55 +- sput-boolean v0, Landroid/provider/Settings$Secure;->sIsSystemProcess:Z ++ :goto_5b ++ sput-boolean v3, Landroid/provider/Settings$Secure;->sIsSystemProcess:Z + +- :cond_57 +- monitor-exit v1 +- :try_end_58 +- .catchall {:try_start_3c .. :try_end_58} :catchall_6b ++ :cond_5d ++ monitor-exit v4 ++ :try_end_5e ++ .catchall {:try_start_42 .. :try_end_5e} :catchall_75 + +- sget-object v0, Landroid/provider/Settings$Secure;->sLockSettings:Lcom/android/internal/widget/ILockSettings; ++ sget-object v3, Landroid/provider/Settings$Secure;->sLockSettings:Lcom/android/internal/widget/ILockSettings; + +- if-eqz v0, :cond_6f ++ if-eqz v3, :cond_79 + +- sget-boolean v0, Landroid/provider/Settings$Secure;->sIsSystemProcess:Z ++ sget-boolean v3, Landroid/provider/Settings$Secure;->sIsSystemProcess:Z + +- if-nez v0, :cond_6f ++ if-nez v3, :cond_79 + +- :try_start_60 +- sget-object v0, Landroid/provider/Settings$Secure;->sLockSettings:Lcom/android/internal/widget/ILockSettings; ++ :try_start_66 ++ sget-object v3, Landroid/provider/Settings$Secure;->sLockSettings:Lcom/android/internal/widget/ILockSettings; + +- const-string v1, "0" ++ const-string v4, "0" + +- invoke-interface {v0, p1, v1, p2}, Lcom/android/internal/widget/ILockSettings;->getString(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; +- :try_end_67 +- .catch Landroid/os/RemoteException; {:try_start_60 .. :try_end_67} :catch_6e ++ move-object/from16 v0, p1 + +- move-result-object v0 ++ move/from16 v1, p2 + +- goto :goto_30 ++ invoke-interface {v3, v0, v4, v1}, Lcom/android/internal/widget/ILockSettings;->getString(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; ++ :try_end_71 ++ .catch Landroid/os/RemoteException; {:try_start_66 .. :try_end_71} :catch_78 + +- :cond_69 +- const/4 v0, 0x0 ++ move-result-object v8 + +- goto :goto_55 ++ goto :goto_34 + +- :catchall_6b +- move-exception v0 ++ :cond_73 ++ const/4 v3, 0x0 + +- :try_start_6c +- monitor-exit v1 +- :try_end_6d +- .catchall {:try_start_6c .. :try_end_6d} :catchall_6b ++ goto :goto_5b + +- throw v0 ++ :catchall_75 ++ move-exception v3 + +- :catch_6e +- move-exception v0 ++ :try_start_76 ++ monitor-exit v4 ++ :try_end_77 ++ .catchall {:try_start_76 .. :try_end_77} :catchall_75 + +- :cond_6f +- sget-object v0, Landroid/provider/Settings$Secure;->sNameValueCache:Landroid/provider/Settings$NameValueCache; ++ throw v3 + +- invoke-virtual {v0, p0, p1, p2}, Landroid/provider/Settings$NameValueCache;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String; ++ :catch_78 ++ move-exception v3 + +- move-result-object v0 ++ :cond_79 ++ const-string v3, "android_id" ++ ++ move-object/from16 v0, p1 ++ ++ invoke-virtual {v0, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_f7 ++ ++ invoke-static {}, Landroid/provider/Settings$Secure;->initiate()V ++ ++ :try_start_86 ++ sget-object v3, Landroid/provider/Settings$Secure;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-nez v3, :cond_9e ++ ++ new-instance v3, Landroid/privacy/PrivacySettingsManager; ++ ++ sget-object v4, Landroid/provider/Settings$Secure;->context:Landroid/content/Context; ++ ++ const-string/jumbo v5, "privacy" ++ ++ invoke-static {v5}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v5 ++ ++ invoke-static {v5}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v5 ++ ++ invoke-direct {v3, v4, v5}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ sput-object v3, Landroid/provider/Settings$Secure;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ :cond_9e ++ sget-object v3, Landroid/provider/Settings$Secure;->mPm:Landroid/content/pm/IPackageManager; ++ ++ if-nez v3, :cond_af ++ ++ const-string/jumbo v3, "package" ++ ++ invoke-static {v3}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v3 ++ ++ invoke-static {v3}, Landroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager; ++ ++ move-result-object v3 ++ ++ sput-object v3, Landroid/provider/Settings$Secure;->mPm:Landroid/content/pm/IPackageManager; ++ ++ :cond_af ++ const/16 v19, 0x0 ++ ++ invoke-static {}, Landroid/provider/Settings$Secure;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v18 ++ ++ if-eqz v18, :cond_13c ++ ++ move-object/from16 v0, v18 ++ ++ array-length v3, v0 ++ ++ if-lez v3, :cond_13c + +- goto :goto_30 ++ const/16 v17, 0x0 ++ ++ :goto_be ++ move-object/from16 v0, v18 ++ ++ array-length v3, v0 ++ ++ move/from16 v0, v17 ++ ++ if-ge v0, v3, :cond_f7 ++ ++ sget-object v3, Landroid/provider/Settings$Secure;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v4, v18, v17 ++ ++ invoke-virtual {v3, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v19 ++ ++ if-eqz v19, :cond_11c ++ ++ invoke-virtual/range {v19 .. v19}, Landroid/privacy/PrivacySettings;->getAndroidIdSetting()B ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_11c ++ ++ invoke-virtual/range {v19 .. v19}, Landroid/privacy/PrivacySettings;->getAndroidID()Ljava/lang/String; ++ ++ move-result-object v8 ++ ++ if-eqz v8, :cond_105 ++ ++ sget-object v3, Landroid/provider/Settings$Secure;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v4, v18, v17 ++ ++ const/4 v5, 0x0 ++ ++ invoke-virtual/range {v19 .. v19}, Landroid/privacy/PrivacySettings;->getAndroidIdSetting()B ++ ++ move-result v6 ++ ++ const-string v7, "android_id" ++ ++ const/4 v9, 0x0 ++ ++ invoke-virtual/range {v3 .. v9}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ :try_end_ea ++ .catch Ljava/lang/Exception; {:try_start_86 .. :try_end_ea} :catch_ec ++ ++ goto/16 :goto_34 ++ ++ :catch_ec ++ move-exception v16 ++ ++ invoke-virtual/range {v16 .. v16}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v3, "PM,SecureSettings" ++ ++ const-string v4, "Got exception in getString()" ++ ++ invoke-static {v3, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :cond_f7 ++ :goto_f7 ++ sget-object v3, Landroid/provider/Settings$Secure;->sNameValueCache:Landroid/provider/Settings$NameValueCache; ++ ++ move-object/from16 v0, p0 ++ ++ move-object/from16 v1, p1 ++ ++ move/from16 v2, p2 ++ ++ invoke-virtual {v3, v0, v1, v2}, Landroid/provider/Settings$NameValueCache;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String; ++ ++ move-result-object v8 ++ ++ goto/16 :goto_34 ++ ++ :cond_105 ++ :try_start_105 ++ sget-object v9, Landroid/provider/Settings$Secure;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v10, v18, v17 ++ ++ const/4 v11, 0x0 ++ ++ invoke-virtual/range {v19 .. v19}, Landroid/privacy/PrivacySettings;->getAndroidIdSetting()B ++ ++ move-result v12 ++ ++ const-string v13, "android_id" ++ ++ const-string/jumbo v14, "q4a5w896ay21dr46" ++ ++ const/4 v15, 0x0 ++ ++ invoke-virtual/range {v9 .. v15}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ const-string/jumbo v8, "q4a5w896ay21dr46" ++ ++ goto/16 :goto_34 ++ ++ :cond_11c ++ move-object/from16 v0, v18 ++ ++ array-length v3, v0 ++ ++ add-int/lit8 v3, v3, -0x1 ++ ++ move/from16 v0, v17 ++ ++ if-ne v0, v3, :cond_137 ++ ++ sget-object v9, Landroid/provider/Settings$Secure;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ move-object/from16 v0, v18 ++ ++ array-length v3, v0 ++ ++ add-int/lit8 v3, v3, -0x1 ++ ++ aget-object v10, v18, v3 ++ ++ const/4 v11, 0x0 ++ ++ const/4 v12, 0x0 ++ ++ const-string v13, "android_id" ++ ++ const/4 v14, 0x0 ++ ++ const/4 v15, 0x0 ++ ++ invoke-virtual/range {v9 .. v15}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_137 ++ const/16 v19, 0x0 ++ ++ add-int/lit8 v17, v17, 0x1 ++ ++ goto :goto_be ++ ++ :cond_13c ++ sget-object v9, Landroid/provider/Settings$Secure;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ move-object/from16 v0, v18 ++ ++ array-length v3, v0 ++ ++ add-int/lit8 v3, v3, -0x1 ++ ++ aget-object v10, v18, v3 ++ ++ const/4 v11, 0x0 ++ ++ const/4 v12, 0x0 ++ ++ const-string v13, "android_id" ++ ++ const/4 v14, 0x0 ++ ++ const/4 v15, 0x0 ++ ++ invoke-virtual/range {v9 .. v15}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ :try_end_14e ++ .catch Ljava/lang/Exception; {:try_start_105 .. :try_end_14e} :catch_ec ++ ++ goto :goto_f7 + .end method + + .method public static getUriFor(Ljava/lang/String;)Landroid/net/Uri; +@@ -1895,6 +2211,71 @@ + goto :goto_32 + .end method + ++.method private static initiate()V ++ .registers 4 ++ ++ const/4 v1, 0x0 ++ ++ :try_start_1 ++ sput-object v1, Landroid/provider/Settings$Secure;->context:Landroid/content/Context; ++ ++ new-instance v1, Landroid/privacy/PrivacySettingsManager; ++ ++ sget-object v2, Landroid/provider/Settings$Secure;->context:Landroid/content/Context; ++ ++ const-string/jumbo v3, "privacy" ++ ++ invoke-static {v3}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v3 ++ ++ invoke-static {v3}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v3 ++ ++ invoke-direct {v1, v2, v3}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ sput-object v1, Landroid/provider/Settings$Secure;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string/jumbo v1, "package" ++ ++ invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Landroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager; ++ ++ move-result-object v1 ++ ++ sput-object v1, Landroid/provider/Settings$Secure;->mPm:Landroid/content/pm/IPackageManager; ++ ++ const/4 v1, 0x1 ++ ++ sput-boolean v1, Landroid/provider/Settings$Secure;->privacyMode:Z ++ :try_end_27 ++ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_27} :catch_28 ++ ++ :goto_27 ++ return-void ++ ++ :catch_28 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v1, "PM,SecureSettings" ++ ++ const-string v2, "Something went wrong with initalize variables" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v1, 0x0 ++ ++ sput-boolean v1, Landroid/provider/Settings$Secure;->privacyMode:Z ++ ++ goto :goto_27 ++.end method ++ + .method public static final isLocationProviderEnabled(Landroid/content/ContentResolver;Ljava/lang/String;)Z + .registers 3 + +diff -Npru stock-framework/smali/android/speech/srec/MicrophoneInputStream.smali pdroid-framework/smali/android/speech/srec/MicrophoneInputStream.smali +--- stock-framework/smali/android/speech/srec/MicrophoneInputStream.smali 2013-08-10 20:37:48.127213675 -0700 ++++ pdroid-framework/smali/android/speech/srec/MicrophoneInputStream.smali 2013-08-10 20:37:42.635213447 -0700 +@@ -4,14 +4,30 @@ + + + # static fields ++.field private static final GOT_ERROR:I = -0x3 ++ ++.field private static final IS_ALLOWED:I = -0x1 ++ ++.field private static final IS_NOT_ALLOWED:I = -0x2 ++ ++.field private static final PRIVACY_TAG:Ljava/lang/String; = "PM,MicrophoneInputStream" ++ + .field private static final TAG:Ljava/lang/String; = "MicrophoneInputStream" + + + # instance fields ++.field private context:Landroid/content/Context; ++ + .field private mAudioRecord:I + + .field private mOneByte:[B + ++.field private mPm:Landroid/content/pm/IPackageManager; ++ ++.field private pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++.field private privacyMode:Z ++ + + # direct methods + .method static constructor ()V +@@ -25,79 +41,167 @@ + .end method + + .method public constructor (II)V +- .registers 7 ++ .registers 14 + .annotation system Ldalvik/annotation/Throws; + value = { + Ljava/io/IOException; + } + .end annotation + ++ const/4 v5, 0x0 ++ ++ const/4 v3, 0x1 ++ ++ const/4 v2, 0x0 ++ + invoke-direct {p0}, Ljava/io/InputStream;->()V + +- const/4 v1, 0x0 ++ iput-boolean v2, p0, Landroid/speech/srec/MicrophoneInputStream;->privacyMode:Z + +- iput v1, p0, Landroid/speech/srec/MicrophoneInputStream;->mAudioRecord:I ++ iput v2, p0, Landroid/speech/srec/MicrophoneInputStream;->mAudioRecord:I + +- const/4 v1, 0x1 ++ new-array v0, v3, [B + +- new-array v1, v1, [B ++ iput-object v0, p0, Landroid/speech/srec/MicrophoneInputStream;->mOneByte:[B + +- iput-object v1, p0, Landroid/speech/srec/MicrophoneInputStream;->mOneByte:[B ++ iget-boolean v0, p0, Landroid/speech/srec/MicrophoneInputStream;->privacyMode:Z + +- invoke-static {p1, p2}, Landroid/speech/srec/MicrophoneInputStream;->AudioRecordNew(II)I ++ if-nez v0, :cond_15 ++ ++ invoke-direct {p0}, Landroid/speech/srec/MicrophoneInputStream;->initiate()V ++ ++ :cond_15 ++ invoke-direct {p0}, Landroid/speech/srec/MicrophoneInputStream;->checkIfPackagesAllowed()I ++ ++ move-result v0 ++ ++ const/4 v1, -0x2 ++ ++ if-ne v0, v1, :cond_43 ++ ++ invoke-direct {p0, v2}, Landroid/speech/srec/MicrophoneInputStream;->dataAccess(Z)V ++ ++ invoke-direct {p0}, Landroid/speech/srec/MicrophoneInputStream;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v7 ++ ++ if-eqz v7, :cond_3b ++ ++ iget-object v0, p0, Landroid/speech/srec/MicrophoneInputStream;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v7, v2 ++ ++ const-string/jumbo v4, "recordAudio" + +- move-result v1 ++ iget-object v6, p0, Landroid/speech/srec/MicrophoneInputStream;->pSetMan:Landroid/privacy/PrivacySettingsManager; + +- iput v1, p0, Landroid/speech/srec/MicrophoneInputStream;->mAudioRecord:I ++ aget-object v9, v7, v2 + +- iget v1, p0, Landroid/speech/srec/MicrophoneInputStream;->mAudioRecord:I ++ invoke-static {}, Landroid/os/Process;->myUid()I + +- if-nez v1, :cond_1d ++ move-result v10 + +- new-instance v1, Ljava/io/IOException; ++ invoke-virtual {v6, v9, v10}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; + +- const-string v2, "AudioRecord constructor failed - busy?" ++ move-result-object v6 + +- invoke-direct {v1, v2}, Ljava/io/IOException;->(Ljava/lang/String;)V ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V + +- throw v1 ++ :cond_3b ++ new-instance v0, Ljava/io/IOException; + +- :cond_1d +- iget v1, p0, Landroid/speech/srec/MicrophoneInputStream;->mAudioRecord:I ++ const-string v1, "AudioRecord constructor failed - busy?" + +- invoke-static {v1}, Landroid/speech/srec/MicrophoneInputStream;->AudioRecordStart(I)I ++ invoke-direct {v0, v1}, Ljava/io/IOException;->(Ljava/lang/String;)V ++ ++ throw v0 ++ ++ :cond_43 ++ invoke-direct {p0, v3}, Landroid/speech/srec/MicrophoneInputStream;->dataAccess(Z)V ++ ++ invoke-direct {p0}, Landroid/speech/srec/MicrophoneInputStream;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v7 ++ ++ if-eqz v7, :cond_63 ++ ++ iget-object v0, p0, Landroid/speech/srec/MicrophoneInputStream;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v7, v2 ++ ++ const-string/jumbo v4, "recordAudio" ++ ++ iget-object v3, p0, Landroid/speech/srec/MicrophoneInputStream;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v6, v7, v2 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v9 ++ ++ invoke-virtual {v3, v6, v9}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_63 ++ invoke-static {p1, p2}, Landroid/speech/srec/MicrophoneInputStream;->AudioRecordNew(II)I + + move-result v0 + +- if-eqz v0, :cond_41 ++ iput v0, p0, Landroid/speech/srec/MicrophoneInputStream;->mAudioRecord:I ++ ++ iget v0, p0, Landroid/speech/srec/MicrophoneInputStream;->mAudioRecord:I ++ ++ if-nez v0, :cond_75 ++ ++ new-instance v0, Ljava/io/IOException; ++ ++ const-string v1, "AudioRecord constructor failed - busy?" ++ ++ invoke-direct {v0, v1}, Ljava/io/IOException;->(Ljava/lang/String;)V ++ ++ throw v0 ++ ++ :cond_75 ++ iget v0, p0, Landroid/speech/srec/MicrophoneInputStream;->mAudioRecord:I ++ ++ invoke-static {v0}, Landroid/speech/srec/MicrophoneInputStream;->AudioRecordStart(I)I ++ ++ move-result v8 ++ ++ if-eqz v8, :cond_99 + + invoke-virtual {p0}, Landroid/speech/srec/MicrophoneInputStream;->close()V + +- new-instance v1, Ljava/io/IOException; ++ new-instance v0, Ljava/io/IOException; + +- new-instance v2, Ljava/lang/StringBuilder; ++ new-instance v1, Ljava/lang/StringBuilder; + +- invoke-direct {v2}, Ljava/lang/StringBuilder;->()V ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V + +- const-string v3, "AudioRecord start failed: " ++ const-string v2, "AudioRecord start failed: " + +- invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v2 ++ move-result-object v1 + +- invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ invoke-virtual {v1, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + +- move-result-object v2 ++ move-result-object v1 + +- invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v2 ++ move-result-object v1 + +- invoke-direct {v1, v2}, Ljava/io/IOException;->(Ljava/lang/String;)V ++ invoke-direct {v0, v1}, Ljava/io/IOException;->(Ljava/lang/String;)V + +- throw v1 ++ throw v0 + +- :cond_41 ++ :cond_99 + return-void + .end method + +@@ -131,6 +235,334 @@ + .end annotation + .end method + ++.method private checkIfPackagesAllowed()I ++ .registers 9 ++ ++ const/4 v5, -0x3 ++ ++ :try_start_1 ++ iget-object v6, p0, Landroid/speech/srec/MicrophoneInputStream;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v6, :cond_41 ++ ++ const/4 v2, 0x0 ++ ++ invoke-direct {p0}, Landroid/speech/srec/MicrophoneInputStream;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v4 ++ ++ if-eqz v3, :cond_2c ++ ++ const/4 v1, 0x0 ++ ++ :goto_11 ++ array-length v6, v3 ++ ++ if-ge v1, v6, :cond_2a ++ ++ iget-object v6, p0, Landroid/speech/srec/MicrophoneInputStream;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v7, v3, v1 ++ ++ invoke-virtual {v6, v7, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v2 ++ ++ if-eqz v2, :cond_26 ++ ++ invoke-virtual {v2}, Landroid/privacy/PrivacySettings;->getRecordAudioSetting()B ++ ++ move-result v6 ++ ++ if-eqz v6, :cond_26 ++ ++ const/4 v5, -0x2 ++ ++ :goto_25 ++ return v5 ++ ++ :cond_26 ++ const/4 v2, 0x0 ++ ++ add-int/lit8 v1, v1, 0x1 ++ ++ goto :goto_11 ++ ++ :cond_2a ++ const/4 v5, -0x1 ++ ++ goto :goto_25 ++ ++ :cond_2c ++ const-string v6, "PM,MicrophoneInputStream" ++ ++ const-string/jumbo v7, "return GOT_ERROR, because package_names are NULL" ++ ++ invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_34 ++ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_34} :catch_35 ++ ++ goto :goto_25 ++ ++ :catch_35 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v6, "PM,MicrophoneInputStream" ++ ++ const-string v7, "Got exception in checkIfPackagesAllowed" ++ ++ invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto :goto_25 ++ ++ :cond_41 ++ :try_start_41 ++ const-string v6, "PM,MicrophoneInputStream" ++ ++ const-string/jumbo v7, "return GOT_ERROR, because pSetMan is NULL" ++ ++ invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_49 ++ .catch Ljava/lang/Exception; {:try_start_41 .. :try_end_49} :catch_35 ++ ++ goto :goto_25 ++.end method ++ ++.method private dataAccess(Z)V ++ .registers 7 ++ ++ invoke-direct {p0}, Landroid/speech/srec/MicrophoneInputStream;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ if-eqz p1, :cond_2f ++ ++ if-eqz v1, :cond_2f ++ ++ const/4 v0, 0x0 ++ ++ :goto_9 ++ array-length v2, v1 ++ ++ if-ge v0, v2, :cond_58 ++ ++ const-string v2, "PM,MicrophoneInputStream" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Allowed Package: -" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ aget-object v4, v1, v0 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, "- accessing microphone." ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_9 ++ ++ :cond_2f ++ if-eqz v1, :cond_58 ++ ++ const/4 v0, 0x0 ++ ++ :goto_32 ++ array-length v2, v1 ++ ++ if-ge v0, v2, :cond_58 ++ ++ const-string v2, "PM,MicrophoneInputStream" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Blocked Package: -" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ aget-object v4, v1, v0 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, "- accessing microphone." ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v2, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_32 ++ ++ :cond_58 ++ return-void ++.end method ++ ++.method private getPackageName()[Ljava/lang/String; ++ .registers 6 ++ ++ :try_start_0 ++ iget-object v3, p0, Landroid/speech/srec/MicrophoneInputStream;->mPm:Landroid/content/pm/IPackageManager; ++ ++ if-eqz v3, :cond_f ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v2 ++ ++ iget-object v3, p0, Landroid/speech/srec/MicrophoneInputStream;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-interface {v3, v2}, Landroid/content/pm/IPackageManager;->getPackagesForUid(I)[Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ :goto_e ++ return-object v1 ++ ++ :cond_f ++ const-string/jumbo v3, "package" ++ ++ invoke-static {v3}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v3 ++ ++ invoke-static {v3}, Landroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager; ++ ++ move-result-object v3 ++ ++ iput-object v3, p0, Landroid/speech/srec/MicrophoneInputStream;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v2 ++ ++ iget-object v3, p0, Landroid/speech/srec/MicrophoneInputStream;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-interface {v3, v2}, Landroid/content/pm/IPackageManager;->getPackagesForUid(I)[Ljava/lang/String; ++ :try_end_25 ++ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_25} :catch_27 ++ ++ move-result-object v1 ++ ++ goto :goto_e ++ ++ :catch_27 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v3, "PM,MicrophoneInputStream" ++ ++ const-string/jumbo v4, "something went wrong with getting package name" ++ ++ invoke-static {v3, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v1, 0x0 ++ ++ goto :goto_e ++.end method ++ ++.method private initiate()V ++ .registers 5 ++ ++ const/4 v1, 0x0 ++ ++ :try_start_1 ++ iput-object v1, p0, Landroid/speech/srec/MicrophoneInputStream;->context:Landroid/content/Context; ++ ++ new-instance v1, Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v2, p0, Landroid/speech/srec/MicrophoneInputStream;->context:Landroid/content/Context; ++ ++ const-string/jumbo v3, "privacy" ++ ++ invoke-static {v3}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v3 ++ ++ invoke-static {v3}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v3 ++ ++ invoke-direct {v1, v2, v3}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v1, p0, Landroid/speech/srec/MicrophoneInputStream;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string/jumbo v1, "package" ++ ++ invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Landroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager; ++ ++ move-result-object v1 ++ ++ iput-object v1, p0, Landroid/speech/srec/MicrophoneInputStream;->mPm:Landroid/content/pm/IPackageManager; ++ ++ const/4 v1, 0x1 ++ ++ iput-boolean v1, p0, Landroid/speech/srec/MicrophoneInputStream;->privacyMode:Z ++ :try_end_27 ++ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_27} :catch_28 ++ ++ :goto_27 ++ return-void ++ ++ :catch_28 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v1, "PM,MicrophoneInputStream" ++ ++ const-string v2, "Something went wrong with initalize variables" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v1, 0x0 ++ ++ iput-boolean v1, p0, Landroid/speech/srec/MicrophoneInputStream;->privacyMode:Z ++ ++ goto :goto_27 ++.end method ++ + + # virtual methods + .method public close()V +diff -Npru stock-framework/smali/android/telephony/PhoneStateListener$1.smali pdroid-framework/smali/android/telephony/PhoneStateListener$1.smali +--- stock-framework/smali/android/telephony/PhoneStateListener$1.smali 2013-08-10 20:37:48.159213676 -0700 ++++ pdroid-framework/smali/android/telephony/PhoneStateListener$1.smali 2013-08-10 20:37:42.667213449 -0700 +@@ -64,23 +64,196 @@ + .end method + + .method public onCallStateChanged(ILjava/lang/String;)V +- .registers 6 ++ .registers 19 + +- iget-object v0, p0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ move-object/from16 v0, p0 + +- iget-object v0, v0, Landroid/telephony/PhoneStateListener;->mHandler:Landroid/os/Handler; ++ iget-object v3, v0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; + +- const/16 v1, 0x20 ++ #getter for: Landroid/telephony/PhoneStateListener;->context:Landroid/content/Context; ++ invoke-static {v3}, Landroid/telephony/PhoneStateListener;->access$000(Landroid/telephony/PhoneStateListener;)Landroid/content/Context; + +- const/4 v2, 0x0 ++ move-result-object v3 + +- invoke-static {v0, v1, p1, v2, p2}, Landroid/os/Message;->obtain(Landroid/os/Handler;IIILjava/lang/Object;)Landroid/os/Message; ++ if-eqz v3, :cond_99 + +- move-result-object v0 ++ if-eqz p2, :cond_99 + +- invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V ++ invoke-virtual/range {p2 .. p2}, Ljava/lang/String;->isEmpty()Z ++ ++ move-result v3 ++ ++ if-nez v3, :cond_99 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ ++ #getter for: Landroid/telephony/PhoneStateListener;->context:Landroid/content/Context; ++ invoke-static {v3}, Landroid/telephony/PhoneStateListener;->access$000(Landroid/telephony/PhoneStateListener;)Landroid/content/Context; ++ ++ move-result-object v3 ++ ++ const-string/jumbo v4, "privacy" ++ ++ invoke-virtual {v3, v4}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; ++ ++ move-result-object v2 ++ ++ check-cast v2, Landroid/privacy/PrivacySettingsManager; ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ ++ #getter for: Landroid/telephony/PhoneStateListener;->packageName:Ljava/lang/String; ++ invoke-static {v3}, Landroid/telephony/PhoneStateListener;->access$100(Landroid/telephony/PhoneStateListener;)Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v4, v0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ ++ #getter for: Landroid/telephony/PhoneStateListener;->uid:I ++ invoke-static {v4}, Landroid/telephony/PhoneStateListener;->access$200(Landroid/telephony/PhoneStateListener;)I ++ ++ move-result v4 ++ ++ invoke-virtual {v2, v3, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v8 ++ ++ if-eqz v8, :cond_6a ++ ++ invoke-virtual {v8}, Landroid/privacy/PrivacySettings;->getIncomingCallsSetting()B ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_6a ++ ++ const-string v7, "" ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ ++ iget-object v3, v3, Landroid/telephony/PhoneStateListener;->mHandler:Landroid/os/Handler; ++ ++ const/16 v4, 0x20 ++ ++ const/4 v5, 0x0 ++ ++ move/from16 v0, p1 + ++ invoke-static {v3, v4, v0, v5, v7}, Landroid/os/Message;->obtain(Landroid/os/Handler;IIILjava/lang/Object;)Landroid/os/Message; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Landroid/os/Message;->sendToTarget()V ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ ++ #getter for: Landroid/telephony/PhoneStateListener;->packageName:Ljava/lang/String; ++ invoke-static {v3}, Landroid/telephony/PhoneStateListener;->access$100(Landroid/telephony/PhoneStateListener;)Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v4, v0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ ++ #getter for: Landroid/telephony/PhoneStateListener;->uid:I ++ invoke-static {v4}, Landroid/telephony/PhoneStateListener;->access$200(Landroid/telephony/PhoneStateListener;)I ++ ++ move-result v4 ++ ++ const/4 v5, 0x1 ++ ++ const-string v6, "incomingCall" ++ ++ invoke-virtual/range {v2 .. v8}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_69 + return-void ++ ++ :cond_6a ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ ++ iget-object v3, v3, Landroid/telephony/PhoneStateListener;->mHandler:Landroid/os/Handler; ++ ++ const/16 v4, 0x20 ++ ++ const/4 v5, 0x0 ++ ++ move/from16 v0, p1 ++ ++ move-object/from16 v1, p2 ++ ++ invoke-static {v3, v4, v0, v5, v1}, Landroid/os/Message;->obtain(Landroid/os/Handler;IIILjava/lang/Object;)Landroid/os/Message; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Landroid/os/Message;->sendToTarget()V ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ ++ #getter for: Landroid/telephony/PhoneStateListener;->packageName:Ljava/lang/String; ++ invoke-static {v3}, Landroid/telephony/PhoneStateListener;->access$100(Landroid/telephony/PhoneStateListener;)Ljava/lang/String; ++ ++ move-result-object v10 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ ++ #getter for: Landroid/telephony/PhoneStateListener;->uid:I ++ invoke-static {v3}, Landroid/telephony/PhoneStateListener;->access$200(Landroid/telephony/PhoneStateListener;)I ++ ++ move-result v11 ++ ++ const/4 v12, 0x0 ++ ++ const-string v13, "incomingCall" ++ ++ move-object v9, v2 ++ ++ move-object/from16 v14, p2 ++ ++ move-object v15, v8 ++ ++ invoke-virtual/range {v9 .. v15}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_69 ++ ++ :cond_99 ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ ++ iget-object v3, v3, Landroid/telephony/PhoneStateListener;->mHandler:Landroid/os/Handler; ++ ++ const/16 v4, 0x20 ++ ++ const/4 v5, 0x0 ++ ++ move/from16 v0, p1 ++ ++ move-object/from16 v1, p2 ++ ++ invoke-static {v3, v4, v0, v5, v1}, Landroid/os/Message;->obtain(Landroid/os/Handler;IIILjava/lang/Object;)Landroid/os/Message; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Landroid/os/Message;->sendToTarget()V ++ ++ goto :goto_69 + .end method + + .method public onCellInfoChanged(Ljava/util/List;)V +@@ -113,27 +286,124 @@ + .end method + + .method public onCellLocationChanged(Landroid/os/Bundle;)V +- .registers 6 ++ .registers 10 ++ ++ const/4 v5, 0x0 + + const/4 v3, 0x0 + + invoke-static {p1}, Landroid/telephony/CellLocation;->newFromBundle(Landroid/os/Bundle;)Landroid/telephony/CellLocation; + ++ move-result-object v7 ++ ++ iget-object v1, p0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ ++ #getter for: Landroid/telephony/PhoneStateListener;->context:Landroid/content/Context; ++ invoke-static {v1}, Landroid/telephony/PhoneStateListener;->access$000(Landroid/telephony/PhoneStateListener;)Landroid/content/Context; ++ ++ move-result-object v1 ++ ++ if-eqz v1, :cond_4a ++ ++ iget-object v1, p0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ ++ #getter for: Landroid/telephony/PhoneStateListener;->context:Landroid/content/Context; ++ invoke-static {v1}, Landroid/telephony/PhoneStateListener;->access$000(Landroid/telephony/PhoneStateListener;)Landroid/content/Context; ++ ++ move-result-object v1 ++ ++ const-string/jumbo v2, "privacy" ++ ++ invoke-virtual {v1, v2}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; ++ + move-result-object v0 + ++ check-cast v0, Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ ++ #getter for: Landroid/telephony/PhoneStateListener;->packageName:Ljava/lang/String; ++ invoke-static {v1}, Landroid/telephony/PhoneStateListener;->access$100(Landroid/telephony/PhoneStateListener;)Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ ++ #getter for: Landroid/telephony/PhoneStateListener;->uid:I ++ invoke-static {v2}, Landroid/telephony/PhoneStateListener;->access$200(Landroid/telephony/PhoneStateListener;)I ++ ++ move-result v2 ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4b ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_4b ++ ++ iget-object v1, p0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ ++ #getter for: Landroid/telephony/PhoneStateListener;->packageName:Ljava/lang/String; ++ invoke-static {v1}, Landroid/telephony/PhoneStateListener;->access$100(Landroid/telephony/PhoneStateListener;)Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ ++ #getter for: Landroid/telephony/PhoneStateListener;->uid:I ++ invoke-static {v2}, Landroid/telephony/PhoneStateListener;->access$200(Landroid/telephony/PhoneStateListener;)I ++ ++ move-result v2 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "locationNetwork" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_4a ++ :goto_4a ++ return-void ++ ++ :cond_4b + iget-object v1, p0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; + + iget-object v1, v1, Landroid/telephony/PhoneStateListener;->mHandler:Landroid/os/Handler; + + const/16 v2, 0x10 + +- invoke-static {v1, v2, v3, v3, v0}, Landroid/os/Message;->obtain(Landroid/os/Handler;IIILjava/lang/Object;)Landroid/os/Message; ++ invoke-static {v1, v2, v3, v3, v7}, Landroid/os/Message;->obtain(Landroid/os/Handler;IIILjava/lang/Object;)Landroid/os/Message; + + move-result-object v1 + + invoke-virtual {v1}, Landroid/os/Message;->sendToTarget()V + +- return-void ++ iget-object v1, p0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ ++ #getter for: Landroid/telephony/PhoneStateListener;->packageName:Ljava/lang/String; ++ invoke-static {v1}, Landroid/telephony/PhoneStateListener;->access$100(Landroid/telephony/PhoneStateListener;)Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/telephony/PhoneStateListener$1;->this$0:Landroid/telephony/PhoneStateListener; ++ ++ #getter for: Landroid/telephony/PhoneStateListener;->uid:I ++ invoke-static {v2}, Landroid/telephony/PhoneStateListener;->access$200(Landroid/telephony/PhoneStateListener;)I ++ ++ move-result v2 ++ ++ const-string v4, "locationNetwork" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4a + .end method + + .method public onDataActivity(I)V +diff -Npru stock-framework/smali/android/telephony/PhoneStateListener.smali pdroid-framework/smali/android/telephony/PhoneStateListener.smali +--- stock-framework/smali/android/telephony/PhoneStateListener.smali 2013-08-10 20:37:47.355213643 -0700 ++++ pdroid-framework/smali/android/telephony/PhoneStateListener.smali 2013-08-10 20:37:41.899213417 -0700 +@@ -31,12 +31,20 @@ + + .field public static final LISTEN_SIGNAL_STRENGTHS:I = 0x100 + ++.field private static final TAG:Ljava/lang/String; = "PhoneStateListener" ++ + + # instance fields + .field callback:Lcom/android/internal/telephony/IPhoneStateListener; + ++.field private context:Landroid/content/Context; ++ + .field mHandler:Landroid/os/Handler; + ++.field private packageName:Ljava/lang/String; ++ ++.field private uid:I ++ + + # direct methods + .method public constructor ()V +@@ -59,6 +67,30 @@ + return-void + .end method + ++.method static synthetic access$000(Landroid/telephony/PhoneStateListener;)Landroid/content/Context; ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/telephony/PhoneStateListener;->context:Landroid/content/Context; ++ ++ return-object v0 ++.end method ++ ++.method static synthetic access$100(Landroid/telephony/PhoneStateListener;)Ljava/lang/String; ++ .registers 2 ++ ++ iget-object v0, p0, Landroid/telephony/PhoneStateListener;->packageName:Ljava/lang/String; ++ ++ return-object v0 ++.end method ++ ++.method static synthetic access$200(Landroid/telephony/PhoneStateListener;)I ++ .registers 2 ++ ++ iget v0, p0, Landroid/telephony/PhoneStateListener;->uid:I ++ ++ return v0 ++.end method ++ + + # virtual methods + .method public onCallForwardingIndicatorChanged(Z)V +@@ -143,3 +175,27 @@ + + return-void + .end method ++ ++.method public setContext(Landroid/content/Context;)V ++ .registers 2 ++ ++ iput-object p1, p0, Landroid/telephony/PhoneStateListener;->context:Landroid/content/Context; ++ ++ return-void ++.end method ++ ++.method public setPackageName(Ljava/lang/String;)V ++ .registers 2 ++ ++ iput-object p1, p0, Landroid/telephony/PhoneStateListener;->packageName:Ljava/lang/String; ++ ++ return-void ++.end method ++ ++.method public setUid(I)V ++ .registers 2 ++ ++ iput p1, p0, Landroid/telephony/PhoneStateListener;->uid:I ++ ++ return-void ++.end method +diff -Npru stock-framework/smali/android/telephony/ServiceState.smali pdroid-framework/smali/android/telephony/ServiceState.smali +--- stock-framework/smali/android/telephony/ServiceState.smali 2013-08-10 20:37:48.159213676 -0700 ++++ pdroid-framework/smali/android/telephony/ServiceState.smali 2013-08-10 20:37:42.667213449 -0700 +@@ -875,74 +875,6 @@ + return-void + .end method + +-.method private setNullState(I)V +- .registers 8 +- +- const/4 v5, 0x0 +- +- const/4 v4, 0x0 +- +- const/4 v3, -0x1 +- +- const-string v0, "PHONE" +- +- new-instance v1, Ljava/lang/StringBuilder; +- +- invoke-direct {v1}, Ljava/lang/StringBuilder;->()V +- +- const-string v2, "[ServiceState] setNullState=" +- +- invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +- +- move-result-object v1 +- +- invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; +- +- move-result-object v1 +- +- invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; +- +- move-result-object v1 +- +- invoke-static {v0, v1}, Landroid/telephony/Rlog;->d(Ljava/lang/String;Ljava/lang/String;)I +- +- iput p1, p0, Landroid/telephony/ServiceState;->mVoiceRegState:I +- +- iput p1, p0, Landroid/telephony/ServiceState;->mDataRegState:I +- +- iput-boolean v4, p0, Landroid/telephony/ServiceState;->mRoaming:Z +- +- iput-object v5, p0, Landroid/telephony/ServiceState;->mOperatorAlphaLong:Ljava/lang/String; +- +- iput-object v5, p0, Landroid/telephony/ServiceState;->mOperatorAlphaShort:Ljava/lang/String; +- +- iput-object v5, p0, Landroid/telephony/ServiceState;->mOperatorNumeric:Ljava/lang/String; +- +- iput-boolean v4, p0, Landroid/telephony/ServiceState;->mIsManualNetworkSelection:Z +- +- iput v4, p0, Landroid/telephony/ServiceState;->mRilVoiceRadioTechnology:I +- +- iput v4, p0, Landroid/telephony/ServiceState;->mRilDataRadioTechnology:I +- +- iput-boolean v4, p0, Landroid/telephony/ServiceState;->mCssIndicator:Z +- +- iput v3, p0, Landroid/telephony/ServiceState;->mNetworkId:I +- +- iput v3, p0, Landroid/telephony/ServiceState;->mSystemId:I +- +- iput v3, p0, Landroid/telephony/ServiceState;->mCdmaRoamingIndicator:I +- +- iput v3, p0, Landroid/telephony/ServiceState;->mCdmaDefaultRoamingIndicator:I +- +- iput v3, p0, Landroid/telephony/ServiceState;->mCdmaEriIconIndex:I +- +- iput v3, p0, Landroid/telephony/ServiceState;->mCdmaEriIconMode:I +- +- iput-boolean v4, p0, Landroid/telephony/ServiceState;->mIsEmergencyOnly:Z +- +- return-void +-.end method +- + + # virtual methods + .method protected copyFrom(Landroid/telephony/ServiceState;)V +@@ -1798,6 +1730,74 @@ + return-void + .end method + ++.method setNullState(I)V ++ .registers 8 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v4, 0x0 ++ ++ const/4 v3, -0x1 ++ ++ const-string v0, "PHONE" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "[ServiceState] setNullState=" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/telephony/Rlog;->d(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iput p1, p0, Landroid/telephony/ServiceState;->mVoiceRegState:I ++ ++ iput p1, p0, Landroid/telephony/ServiceState;->mDataRegState:I ++ ++ iput-boolean v4, p0, Landroid/telephony/ServiceState;->mRoaming:Z ++ ++ iput-object v5, p0, Landroid/telephony/ServiceState;->mOperatorAlphaLong:Ljava/lang/String; ++ ++ iput-object v5, p0, Landroid/telephony/ServiceState;->mOperatorAlphaShort:Ljava/lang/String; ++ ++ iput-object v5, p0, Landroid/telephony/ServiceState;->mOperatorNumeric:Ljava/lang/String; ++ ++ iput-boolean v4, p0, Landroid/telephony/ServiceState;->mIsManualNetworkSelection:Z ++ ++ iput v4, p0, Landroid/telephony/ServiceState;->mRilVoiceRadioTechnology:I ++ ++ iput v4, p0, Landroid/telephony/ServiceState;->mRilDataRadioTechnology:I ++ ++ iput-boolean v4, p0, Landroid/telephony/ServiceState;->mCssIndicator:Z ++ ++ iput v3, p0, Landroid/telephony/ServiceState;->mNetworkId:I ++ ++ iput v3, p0, Landroid/telephony/ServiceState;->mSystemId:I ++ ++ iput v3, p0, Landroid/telephony/ServiceState;->mCdmaRoamingIndicator:I ++ ++ iput v3, p0, Landroid/telephony/ServiceState;->mCdmaDefaultRoamingIndicator:I ++ ++ iput v3, p0, Landroid/telephony/ServiceState;->mCdmaEriIconIndex:I ++ ++ iput v3, p0, Landroid/telephony/ServiceState;->mCdmaEriIconMode:I ++ ++ iput-boolean v4, p0, Landroid/telephony/ServiceState;->mIsEmergencyOnly:Z ++ ++ return-void ++.end method ++ + .method public setOperatorAlphaLong(Ljava/lang/String;)V + .registers 2 + +@@ -1885,7 +1885,7 @@ + + const/4 v0, 0x3 + +- invoke-direct {p0, v0}, Landroid/telephony/ServiceState;->setNullState(I)V ++ invoke-virtual {p0, v0}, Landroid/telephony/ServiceState;->setNullState(I)V + + return-void + .end method +@@ -1895,7 +1895,7 @@ + + const/4 v0, 0x1 + +- invoke-direct {p0, v0}, Landroid/telephony/ServiceState;->setNullState(I)V ++ invoke-virtual {p0, v0}, Landroid/telephony/ServiceState;->setNullState(I)V + + return-void + .end method diff --git a/patches/openpdroid/4.3/.aosp-ever/20130810/preloaded.patch b/patches/openpdroid/4.3/.aosp-ever/20130810/preloaded.patch new file mode 120000 index 0000000..0f12f40 --- /dev/null +++ b/patches/openpdroid/4.3/.aosp-ever/20130810/preloaded.patch @@ -0,0 +1 @@ +../../../common/preloaded.patch \ No newline at end of file diff --git a/patches/openpdroid/4.3/.aosp-ever/20130810/services-gps_fix.patch b/patches/openpdroid/4.3/.aosp-ever/20130810/services-gps_fix.patch new file mode 120000 index 0000000..d8f3b8e --- /dev/null +++ b/patches/openpdroid/4.3/.aosp-ever/20130810/services-gps_fix.patch @@ -0,0 +1 @@ +../../../common/services-gps_fix.patch \ No newline at end of file diff --git a/patches/openpdroid/4.3/.aosp-ever/20130810/services.patch b/patches/openpdroid/4.3/.aosp-ever/20130810/services.patch new file mode 100644 index 0000000..5f658da --- /dev/null +++ b/patches/openpdroid/4.3/.aosp-ever/20130810/services.patch @@ -0,0 +1,7571 @@ +diff -Npru stock-services/smali/com/android/server/am/BroadcastQueue.smali pdroid-services/smali/com/android/server/am/BroadcastQueue.smali +--- stock-services/smali/com/android/server/am/BroadcastQueue.smali 2013-08-10 20:37:59.683214155 -0700 ++++ pdroid-services/smali/com/android/server/am/BroadcastQueue.smali 2013-08-10 20:37:57.243214052 -0700 +@@ -624,6 +624,118 @@ + goto :goto_170 + .end method + ++.method private enforcePrivacyPermission(Ljava/lang/Object;Lcom/android/server/am/BroadcastRecord;)V ++ .registers 10 ++ ++ if-eqz p2, :cond_3b ++ ++ iget-object v4, p2, Lcom/android/server/am/BroadcastRecord;->intent:Landroid/content/Intent; ++ ++ if-eqz v4, :cond_3b ++ ++ iget-object v4, p2, Lcom/android/server/am/BroadcastRecord;->intent:Landroid/content/Intent; ++ ++ invoke-virtual {v4}, Landroid/content/Intent;->getAction()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ if-eqz v4, :cond_3b ++ ++ const/4 v2, 0x0 ++ ++ const/4 v3, -0x1 ++ ++ :try_start_10 ++ instance-of v4, p1, Lcom/android/server/am/BroadcastFilter; ++ ++ if-eqz v4, :cond_3c ++ ++ move-object v0, p1 ++ ++ check-cast v0, Lcom/android/server/am/BroadcastFilter; ++ ++ move-object v4, v0 ++ ++ iget-object v4, v4, Lcom/android/server/am/BroadcastFilter;->receiverList:Lcom/android/server/am/ReceiverList; ++ ++ iget-object v4, v4, Lcom/android/server/am/ReceiverList;->app:Lcom/android/server/am/ProcessRecord; ++ ++ iget-object v4, v4, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo; ++ ++ iget-object v2, v4, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String; ++ ++ check-cast p1, Lcom/android/server/am/BroadcastFilter; ++ ++ iget-object v4, p1, Lcom/android/server/am/BroadcastFilter;->receiverList:Lcom/android/server/am/ReceiverList; ++ ++ iget-object v4, v4, Lcom/android/server/am/ReceiverList;->app:Lcom/android/server/am/ProcessRecord; ++ ++ iget-object v4, v4, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo; ++ ++ iget v3, v4, Landroid/content/pm/ApplicationInfo;->uid:I ++ :try_end_2a ++ .catch Ljava/lang/Exception; {:try_start_10 .. :try_end_2a} :catch_53 ++ ++ :cond_2a ++ :goto_2a ++ if-eqz v2, :cond_3b ++ ++ const/4 v4, -0x1 ++ ++ if-eq v3, v4, :cond_3b ++ ++ iget-object v4, p2, Lcom/android/server/am/BroadcastRecord;->intent:Landroid/content/Intent; ++ ++ const/4 v5, 0x0 ++ ++ iget-object v6, p2, Lcom/android/server/am/BroadcastRecord;->receivers:Ljava/util/List; ++ ++ invoke-interface {v6}, Ljava/util/List;->size()I ++ ++ move-result v6 ++ ++ invoke-static {v2, v3, v4, v5, v6}, Landroid/privacy/surrogate/PrivacyActivityManagerService;->enforcePrivacyPermission(Ljava/lang/String;ILandroid/content/Intent;Landroid/content/Context;I)V ++ ++ :cond_3b ++ :goto_3b ++ return-void ++ ++ :cond_3c ++ :try_start_3c ++ instance-of v4, p1, Landroid/content/pm/ResolveInfo; ++ ++ if-eqz v4, :cond_2a ++ ++ move-object v0, p1 ++ ++ check-cast v0, Landroid/content/pm/ResolveInfo; ++ ++ move-object v4, v0 ++ ++ iget-object v4, v4, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; ++ ++ iget-object v4, v4, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo; ++ ++ iget-object v2, v4, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String; ++ ++ check-cast p1, Landroid/content/pm/ResolveInfo; ++ ++ iget-object v4, p1, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; ++ ++ iget-object v4, v4, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo; ++ ++ iget v3, v4, Landroid/content/pm/ApplicationInfo;->uid:I ++ :try_end_52 ++ .catch Ljava/lang/Exception; {:try_start_3c .. :try_end_52} :catch_53 ++ ++ goto :goto_2a ++ ++ :catch_53 ++ move-exception v1 ++ ++ goto :goto_3b ++.end method ++ + .method private static performReceiveLocked(Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V + .registers 18 + .annotation system Ldalvik/annotation/Throws; +@@ -2273,15 +2385,15 @@ + .end method + + .method final processNextBroadcast(Z)V +- .registers 38 ++ .registers 39 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/server/am/BroadcastQueue;->mService:Lcom/android/server/am/ActivityManagerService; + +- move-object/from16 v35, v0 ++ move-object/from16 v36, v0 + +- monitor-enter v35 ++ monitor-enter v36 + + :try_start_7 + move-object/from16 v0, p0 +@@ -2318,15 +2430,15 @@ + + invoke-virtual {v3, v5}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object; + +- move-result-object v29 ++ move-result-object v30 + +- check-cast v29, Lcom/android/server/am/BroadcastRecord; ++ check-cast v30, Lcom/android/server/am/BroadcastRecord; + + invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J + + move-result-wide v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iput-wide v5, v0, Lcom/android/server/am/BroadcastRecord;->dispatchTime:J + +@@ -2334,11 +2446,11 @@ + + move-result-wide v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iput-wide v5, v0, Lcom/android/server/am/BroadcastRecord;->dispatchClockTime:J + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v3, v0, Lcom/android/server/am/BroadcastRecord;->receivers:Ljava/util/List; + +@@ -2346,43 +2458,43 @@ + + move-result v12 + +- const/16 v18, 0x0 ++ const/16 v19, 0x0 + + :goto_44 +- move/from16 v0, v18 ++ move/from16 v0, v19 + + if-ge v0, v12, :cond_61 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v3, v0, Lcom/android/server/am/BroadcastRecord;->receivers:Ljava/util/List; + +- move/from16 v0, v18 ++ move/from16 v0, v19 + + invoke-interface {v3, v0}, Ljava/util/List;->get(I)Ljava/lang/Object; + +- move-result-object v32 ++ move-result-object v33 + +- check-cast v32, Lcom/android/server/am/BroadcastFilter; ++ check-cast v33, Lcom/android/server/am/BroadcastFilter; + + const/4 v3, 0x0 + + move-object/from16 v0, p0 + +- move-object/from16 v1, v29 ++ move-object/from16 v1, v30 + +- move-object/from16 v2, v32 ++ move-object/from16 v2, v33 + + invoke-direct {v0, v1, v2, v3}, Lcom/android/server/am/BroadcastQueue;->deliverToRegisteredReceiverLocked(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastFilter;Z)V + +- add-int/lit8 v18, v18, 0x1 ++ add-int/lit8 v19, v19, 0x1 + + goto :goto_44 + + :cond_61 + move-object/from16 v0, p0 + +- move-object/from16 v1, v29 ++ move-object/from16 v1, v30 + + invoke-direct {v0, v1}, Lcom/android/server/am/BroadcastQueue;->addBroadcastToHistoryLocked(Lcom/android/server/am/BroadcastRecord;)V + +@@ -2391,7 +2503,7 @@ + :catchall_69 + move-exception v3 + +- monitor-exit v35 ++ monitor-exit v36 + :try_end_6b + .catchall {:try_start_7 .. :try_end_6b} :catchall_69 + +@@ -2436,17 +2548,17 @@ + + if-nez v3, :cond_94 + +- const/16 v20, 0x1 ++ const/16 v21, 0x1 + + :goto_8f + monitor-exit v5 + :try_end_90 + .catchall {:try_start_79 .. :try_end_90} :catchall_97 + +- if-nez v20, :cond_9a ++ if-nez v21, :cond_9a + + :try_start_92 +- monitor-exit v35 ++ monitor-exit v36 + :try_end_93 + .catchall {:try_start_92 .. :try_end_93} :catchall_69 + +@@ -2454,7 +2566,7 @@ + return-void + + :cond_94 +- const/16 v20, 0x0 ++ const/16 v21, 0x0 + + goto :goto_8f + +@@ -2543,7 +2655,7 @@ + iput-object v3, v0, Lcom/android/server/am/BroadcastQueue;->mPendingBroadcast:Lcom/android/server/am/BroadcastRecord; + + :cond_e2 +- const/16 v22, 0x0 ++ const/16 v23, 0x0 + + :cond_e4 + move-object/from16 v0, p0 +@@ -2562,7 +2674,7 @@ + + invoke-virtual {v3}, Lcom/android/server/am/ActivityManagerService;->scheduleAppGcsLocked()V + +- if-eqz v22, :cond_fe ++ if-eqz v23, :cond_fe + + move-object/from16 v0, p0 + +@@ -2571,7 +2683,7 @@ + invoke-virtual {v3}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V + + :cond_fe +- monitor-exit v35 ++ monitor-exit v36 + + goto :goto_93 + +@@ -2584,25 +2696,25 @@ + + invoke-virtual {v3, v5}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object; + +- move-result-object v29 ++ move-result-object v30 + +- check-cast v29, Lcom/android/server/am/BroadcastRecord; ++ check-cast v30, Lcom/android/server/am/BroadcastRecord; + +- const/16 v17, 0x0 ++ const/16 v18, 0x0 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v3, v0, Lcom/android/server/am/BroadcastRecord;->receivers:Ljava/util/List; + + if-eqz v3, :cond_1dd + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v3, v0, Lcom/android/server/am/BroadcastRecord;->receivers:Ljava/util/List; + + invoke-interface {v3}, Ljava/util/List;->size()I + +- move-result v27 ++ move-result v28 + + :goto_11b + move-object/from16 v0, p0 +@@ -2613,7 +2725,7 @@ + + if-eqz v3, :cond_1d4 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-wide v5, v0, Lcom/android/server/am/BroadcastRecord;->dispatchTime:J + +@@ -2625,11 +2737,11 @@ + + invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J + +- move-result-wide v25 ++ move-result-wide v26 + +- if-lez v27, :cond_1d4 ++ if-lez v28, :cond_1d4 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-wide v5, v0, Lcom/android/server/am/BroadcastRecord;->dispatchTime:J + +@@ -2641,7 +2753,7 @@ + + mul-long/2addr v7, v9 + +- move/from16 v0, v27 ++ move/from16 v0, v28 + + int-to-long v9, v0 + +@@ -2649,7 +2761,7 @@ + + add-long/2addr v5, v7 + +- cmp-long v3, v25, v5 ++ cmp-long v3, v26, v5 + + if-lez v3, :cond_1d4 + +@@ -2685,7 +2797,7 @@ + + move-result-object v5 + +- move-wide/from16 v0, v25 ++ move-wide/from16 v0, v26 + + invoke-virtual {v5, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; + +@@ -2697,7 +2809,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-wide v6, v0, Lcom/android/server/am/BroadcastRecord;->dispatchTime:J + +@@ -2711,7 +2823,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-wide v6, v0, Lcom/android/server/am/BroadcastRecord;->receiverTime:J + +@@ -2725,7 +2837,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v6, v0, Lcom/android/server/am/BroadcastRecord;->intent:Landroid/content/Intent; + +@@ -2739,7 +2851,7 @@ + + move-result-object v5 + +- move/from16 v0, v27 ++ move/from16 v0, v28 + + invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + +@@ -2751,7 +2863,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v6, v0, Lcom/android/server/am/BroadcastRecord;->nextReceiver:I + +@@ -2765,7 +2877,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v6, v0, Lcom/android/server/am/BroadcastRecord;->state:I + +@@ -2785,55 +2897,55 @@ + + invoke-virtual {v0, v3}, Lcom/android/server/am/BroadcastQueue;->broadcastTimeoutLocked(Z)V + +- const/16 v17, 0x1 ++ const/16 v18, 0x1 + + const/4 v3, 0x0 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iput v3, v0, Lcom/android/server/am/BroadcastRecord;->state:I + + :cond_1d4 +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v3, v0, Lcom/android/server/am/BroadcastRecord;->state:I + + if-eqz v3, :cond_1e1 + +- monitor-exit v35 ++ monitor-exit v36 + + goto/16 :goto_93 + + :cond_1dd +- const/16 v27, 0x0 ++ const/16 v28, 0x0 + + goto/16 :goto_11b + + :cond_1e1 +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v3, v0, Lcom/android/server/am/BroadcastRecord;->receivers:Ljava/util/List; + + if-eqz v3, :cond_1f7 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v3, v0, Lcom/android/server/am/BroadcastRecord;->nextReceiver:I + +- move/from16 v0, v27 ++ move/from16 v0, v28 + + if-ge v3, v0, :cond_1f7 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-boolean v3, v0, Lcom/android/server/am/BroadcastRecord;->resultAbort:Z + + if-nez v3, :cond_1f7 + +- if-eqz v17, :cond_23e ++ if-eqz v18, :cond_23e + + :cond_1f7 +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v3, v0, Lcom/android/server/am/BroadcastRecord;->resultTo:Landroid/content/IIntentReceiver; + :try_end_1fb +@@ -2842,31 +2954,31 @@ + if-eqz v3, :cond_228 + + :try_start_1fd +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v3, v0, Lcom/android/server/am/BroadcastRecord;->callerApp:Lcom/android/server/am/ProcessRecord; + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v4, v0, Lcom/android/server/am/BroadcastRecord;->resultTo:Landroid/content/IIntentReceiver; + + new-instance v5, Landroid/content/Intent; + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v6, v0, Lcom/android/server/am/BroadcastRecord;->intent:Landroid/content/Intent; + + invoke-direct {v5, v6}, Landroid/content/Intent;->(Landroid/content/Intent;)V + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v6, v0, Lcom/android/server/am/BroadcastRecord;->resultCode:I + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v7, v0, Lcom/android/server/am/BroadcastRecord;->resultData:Ljava/lang/String; + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v8, v0, Lcom/android/server/am/BroadcastRecord;->resultExtras:Landroid/os/Bundle; + +@@ -2874,7 +2986,7 @@ + + const/4 v10, 0x0 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v11, v0, Lcom/android/server/am/BroadcastRecord;->userId:I + +@@ -2882,12 +2994,12 @@ + + const/4 v3, 0x0 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iput-object v3, v0, Lcom/android/server/am/BroadcastRecord;->resultTo:Landroid/content/IIntentReceiver; + :try_end_228 + .catchall {:try_start_1fd .. :try_end_228} :catchall_69 +- .catch Landroid/os/RemoteException; {:try_start_1fd .. :try_end_228} :catch_2b7 ++ .catch Landroid/os/RemoteException; {:try_start_1fd .. :try_end_228} :catch_2e8 + + :cond_228 + :goto_228 +@@ -2896,7 +3008,7 @@ + + move-object/from16 v0, p0 + +- move-object/from16 v1, v29 ++ move-object/from16 v1, v30 + + invoke-direct {v0, v1}, Lcom/android/server/am/BroadcastQueue;->addBroadcastToHistoryLocked(Lcom/android/server/am/BroadcastRecord;)V + +@@ -2908,22 +3020,22 @@ + + invoke-virtual {v3, v5}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object; + +- const/16 v29, 0x0 ++ const/16 v30, 0x0 + +- const/16 v22, 0x1 ++ const/16 v23, 0x1 + + :cond_23e +- if-eqz v29, :cond_e4 ++ if-eqz v30, :cond_e4 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v0, v0, Lcom/android/server/am/BroadcastRecord;->nextReceiver:I + +- move/from16 v30, v0 ++ move/from16 v31, v0 + +- add-int/lit8 v3, v30, 0x1 ++ add-int/lit8 v3, v31, 0x1 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iput v3, v0, Lcom/android/server/am/BroadcastRecord;->nextReceiver:I + +@@ -2931,17 +3043,17 @@ + + move-result-wide v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iput-wide v5, v0, Lcom/android/server/am/BroadcastRecord;->receiverTime:J + +- if-nez v30, :cond_266 ++ if-nez v31, :cond_266 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-wide v5, v0, Lcom/android/server/am/BroadcastRecord;->receiverTime:J + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iput-wide v5, v0, Lcom/android/server/am/BroadcastRecord;->dispatchTime:J + +@@ -2949,7 +3061,7 @@ + + move-result-wide v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iput-wide v5, v0, Lcom/android/server/am/BroadcastRecord;->dispatchClockTime:J + +@@ -2960,7 +3072,7 @@ + + if-nez v3, :cond_27d + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-wide v5, v0, Lcom/android/server/am/BroadcastRecord;->receiverTime:J + +@@ -2968,76 +3080,126 @@ + + iget-wide v7, v0, Lcom/android/server/am/BroadcastQueue;->mTimeoutPeriod:J + +- add-long v33, v5, v7 ++ add-long v34, v5, v7 + + move-object/from16 v0, p0 + +- move-wide/from16 v1, v33 ++ move-wide/from16 v1, v34 + + invoke-virtual {v0, v1, v2}, Lcom/android/server/am/BroadcastQueue;->setBroadcastTimeoutLocked(J)V + + :cond_27d +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v3, v0, Lcom/android/server/am/BroadcastRecord;->receivers:Ljava/util/List; + +- move/from16 v0, v30 ++ move/from16 v0, v31 + + invoke-interface {v3, v0}, Ljava/util/List;->get(I)Ljava/lang/Object; + +- move-result-object v24 ++ move-result-object v25 ++ ++ move-object/from16 v0, p0 ++ ++ move-object/from16 v1, v25 ++ ++ move-object/from16 v2, v30 ++ ++ invoke-direct {v0, v1, v2}, Lcom/android/server/am/BroadcastQueue;->enforcePrivacyPermission(Ljava/lang/Object;Lcom/android/server/am/BroadcastRecord;)V ++ ++ const/16 v16, 0x0 ++ ++ if-eqz v30, :cond_2b6 ++ ++ move-object/from16 v0, v30 ++ ++ iget-object v3, v0, Lcom/android/server/am/BroadcastRecord;->intent:Landroid/content/Intent; ++ ++ if-eqz v3, :cond_2b6 ++ ++ move-object/from16 v0, v30 ++ ++ iget-object v3, v0, Lcom/android/server/am/BroadcastRecord;->intent:Landroid/content/Intent; ++ ++ invoke-virtual {v3}, Landroid/content/Intent;->getAction()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ if-eqz v3, :cond_2b6 ++ ++ move-object/from16 v0, v30 ++ ++ iget-object v3, v0, Lcom/android/server/am/BroadcastRecord;->intent:Landroid/content/Intent; ++ ++ invoke-virtual {v3}, Landroid/content/Intent;->getAction()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ const-string v5, "catchBootComplete" ++ ++ invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_2b6 + +- move-object/from16 v0, v24 ++ const/16 v16, 0x1 ++ ++ :cond_2b6 ++ move-object/from16 v0, v25 + + instance-of v3, v0, Lcom/android/server/am/BroadcastFilter; + +- if-eqz v3, :cond_2e4 ++ if-eqz v3, :cond_329 + +- move-object/from16 v0, v24 ++ move-object/from16 v0, v25 + + check-cast v0, Lcom/android/server/am/BroadcastFilter; + +- move-object/from16 v16, v0 ++ move-object/from16 v17, v0 ++ ++ if-nez v16, :cond_315 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-boolean v3, v0, Lcom/android/server/am/BroadcastRecord;->ordered:Z + + move-object/from16 v0, p0 + +- move-object/from16 v1, v29 ++ move-object/from16 v1, v30 + +- move-object/from16 v2, v16 ++ move-object/from16 v2, v17 + + invoke-direct {v0, v1, v2, v3}, Lcom/android/server/am/BroadcastQueue;->deliverToRegisteredReceiverLocked(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastFilter;Z)V + +- move-object/from16 v0, v29 ++ :goto_2d1 ++ move-object/from16 v0, v30 + + iget-object v3, v0, Lcom/android/server/am/BroadcastRecord;->receiver:Landroid/os/IBinder; + +- if-eqz v3, :cond_2ac ++ if-eqz v3, :cond_2dd + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-boolean v3, v0, Lcom/android/server/am/BroadcastRecord;->ordered:Z + +- if-nez v3, :cond_2b4 ++ if-nez v3, :cond_2e5 + +- :cond_2ac ++ :cond_2dd + const/4 v3, 0x0 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iput v3, v0, Lcom/android/server/am/BroadcastRecord;->state:I + + invoke-virtual/range {p0 .. p0}, Lcom/android/server/am/BroadcastQueue;->scheduleBroadcastsLocked()V + +- :cond_2b4 +- monitor-exit v35 ++ :cond_2e5 ++ monitor-exit v36 + + goto/16 :goto_93 + +- :catch_2b7 ++ :catch_2e8 + move-exception v15 + + const-string v3, "BroadcastQueue" +@@ -3066,7 +3228,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v6, v0, Lcom/android/server/am/BroadcastRecord;->intent:Landroid/content/Intent; + +@@ -3082,16 +3244,39 @@ + + goto/16 :goto_228 + +- :cond_2e4 +- move-object/from16 v0, v24 ++ :cond_315 ++ const/4 v3, 0x0 ++ ++ move-object/from16 v0, v30 ++ ++ iput-object v3, v0, Lcom/android/server/am/BroadcastRecord;->receiver:Landroid/os/IBinder; ++ ++ const/4 v3, 0x0 ++ ++ move-object/from16 v0, v30 ++ ++ iput-object v3, v0, Lcom/android/server/am/BroadcastRecord;->curFilter:Lcom/android/server/am/BroadcastFilter; ++ ++ move-object/from16 v0, v30 ++ ++ iget-object v3, v0, Lcom/android/server/am/BroadcastRecord;->intent:Landroid/content/Intent; ++ ++ const-string v5, "android.intent.action.BOOT_COMPLETED" ++ ++ invoke-virtual {v3, v5}, Landroid/content/Intent;->setAction(Ljava/lang/String;)Landroid/content/Intent; ++ ++ goto :goto_2d1 ++ ++ :cond_329 ++ move-object/from16 v0, v25 + + check-cast v0, Landroid/content/pm/ResolveInfo; + +- move-object/from16 v19, v0 ++ move-object/from16 v20, v0 + + new-instance v14, Landroid/content/ComponentName; + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v3, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +@@ -3099,7 +3284,7 @@ + + iget-object v3, v3, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String; + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v5, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +@@ -3107,27 +3292,27 @@ + + invoke-direct {v14, v3, v5}, Landroid/content/ComponentName;->(Ljava/lang/String;Ljava/lang/String;)V + +- const/16 v31, 0x0 ++ const/16 v32, 0x0 + + move-object/from16 v0, p0 + + iget-object v3, v0, Lcom/android/server/am/BroadcastQueue;->mService:Lcom/android/server/am/ActivityManagerService; + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v5, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + + iget-object v4, v5, Landroid/content/pm/ActivityInfo;->permission:Ljava/lang/String; + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v5, v0, Lcom/android/server/am/BroadcastRecord;->callingPid:I + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v6, v0, Lcom/android/server/am/BroadcastRecord;->callingUid:I + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v7, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +@@ -3135,7 +3320,7 @@ + + iget v7, v7, Landroid/content/pm/ApplicationInfo;->uid:I + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v8, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +@@ -3143,17 +3328,17 @@ + + invoke-virtual/range {v3 .. v8}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I + +- move-result v28 ++ move-result v29 + +- if-eqz v28, :cond_39f ++ if-eqz v29, :cond_3e4 + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v3, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + + iget-boolean v3, v3, Landroid/content/pm/ActivityInfo;->exported:Z + +- if-nez v3, :cond_4d8 ++ if-nez v3, :cond_52a + + const-string v3, "BroadcastQueue" + +@@ -3167,7 +3352,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v6, v0, Lcom/android/server/am/BroadcastRecord;->intent:Landroid/content/Intent; + +@@ -3185,7 +3370,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v6, v0, Lcom/android/server/am/BroadcastRecord;->callerPackage:Ljava/lang/String; + +@@ -3199,7 +3384,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v6, v0, Lcom/android/server/am/BroadcastRecord;->callingPid:I + +@@ -3213,7 +3398,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v6, v0, Lcom/android/server/am/BroadcastRecord;->callingUid:I + +@@ -3233,7 +3418,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v6, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +@@ -3265,11 +3450,11 @@ + + invoke-static {v3, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I + +- :goto_39d +- const/16 v31, 0x1 ++ :goto_3e2 ++ const/16 v32, 0x1 + +- :cond_39f +- move-object/from16 v0, v19 ++ :cond_3e4 ++ move-object/from16 v0, v20 + + iget-object v3, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +@@ -3279,26 +3464,26 @@ + + const/16 v5, 0x3e8 + +- if-eq v3, v5, :cond_423 ++ if-eq v3, v5, :cond_468 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v3, v0, Lcom/android/server/am/BroadcastRecord;->requiredPermission:Ljava/lang/String; +- :try_end_3af +- .catchall {:try_start_228 .. :try_end_3af} :catchall_69 ++ :try_end_3f4 ++ .catchall {:try_start_228 .. :try_end_3f4} :catchall_69 + +- if-eqz v3, :cond_423 ++ if-eqz v3, :cond_468 + +- :try_start_3b1 ++ :try_start_3f6 + invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager; + + move-result-object v3 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v5, v0, Lcom/android/server/am/BroadcastRecord;->requiredPermission:Ljava/lang/String; + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v6, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +@@ -3307,16 +3492,16 @@ + iget-object v6, v6, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String; + + invoke-interface {v3, v5, v6}, Landroid/content/pm/IPackageManager;->checkPermission(Ljava/lang/String;Ljava/lang/String;)I +- :try_end_3c4 +- .catchall {:try_start_3b1 .. :try_end_3c4} :catchall_69 +- .catch Landroid/os/RemoteException; {:try_start_3b1 .. :try_end_3c4} :catch_548 ++ :try_end_409 ++ .catchall {:try_start_3f6 .. :try_end_409} :catchall_69 ++ .catch Landroid/os/RemoteException; {:try_start_3f6 .. :try_end_409} :catch_59a + +- move-result v28 ++ move-result v29 + +- :goto_3c5 +- if-eqz v28, :cond_423 ++ :goto_40a ++ if-eqz v29, :cond_468 + +- :try_start_3c7 ++ :try_start_40c + const-string v3, "BroadcastQueue" + + new-instance v5, Ljava/lang/StringBuilder; +@@ -3329,7 +3514,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v6, v0, Lcom/android/server/am/BroadcastRecord;->intent:Landroid/content/Intent; + +@@ -3357,7 +3542,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v6, v0, Lcom/android/server/am/BroadcastRecord;->requiredPermission:Ljava/lang/String; + +@@ -3371,7 +3556,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v6, v0, Lcom/android/server/am/BroadcastRecord;->callerPackage:Ljava/lang/String; + +@@ -3385,7 +3570,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v6, v0, Lcom/android/server/am/BroadcastRecord;->callingUid:I + +@@ -3405,16 +3590,16 @@ + + invoke-static {v3, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I + +- const/16 v31, 0x1 ++ const/16 v32, 0x1 + +- :cond_423 +- move-object/from16 v0, v29 ++ :cond_468 ++ move-object/from16 v0, v30 + + iget v3, v0, Lcom/android/server/am/BroadcastRecord;->appOp:I + + const/4 v5, -0x1 + +- if-eq v3, v5, :cond_44a ++ if-eq v3, v5, :cond_48f + + move-object/from16 v0, p0 + +@@ -3422,11 +3607,11 @@ + + iget-object v3, v3, Lcom/android/server/am/ActivityManagerService;->mAppOpsService:Lcom/android/server/AppOpsService; + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v5, v0, Lcom/android/server/am/BroadcastRecord;->appOp:I + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v6, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +@@ -3434,64 +3619,64 @@ + + iget v6, v6, Landroid/content/pm/ApplicationInfo;->uid:I + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v7, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + + iget-object v7, v7, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String; + + invoke-virtual {v3, v5, v6, v7}, Lcom/android/server/AppOpsService;->checkOperation(IILjava/lang/String;)I +- :try_end_445 +- .catchall {:try_start_3c7 .. :try_end_445} :catchall_69 ++ :try_end_48a ++ .catchall {:try_start_40c .. :try_end_48a} :catchall_69 + +- move-result v23 ++ move-result v24 + +- if-eqz v23, :cond_44a ++ if-eqz v24, :cond_48f + +- const/16 v31, 0x1 ++ const/16 v32, 0x1 + +- :cond_44a +- const/16 v21, 0x0 ++ :cond_48f ++ const/16 v22, 0x0 + +- :try_start_44c ++ :try_start_491 + move-object/from16 v0, p0 + + iget-object v3, v0, Lcom/android/server/am/BroadcastQueue;->mService:Lcom/android/server/am/ActivityManagerService; + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v5, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + + iget-object v5, v5, Landroid/content/pm/ActivityInfo;->processName:Ljava/lang/String; + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v6, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + + iget-object v6, v6, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo; + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v7, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + + iget-object v7, v7, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String; + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v8, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + + iget v8, v8, Landroid/content/pm/ActivityInfo;->flags:I + + invoke-virtual {v3, v5, v6, v7, v8}, Lcom/android/server/am/ActivityManagerService;->isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Z +- :try_end_46b +- .catchall {:try_start_44c .. :try_end_46b} :catchall_69 +- .catch Ljava/lang/SecurityException; {:try_start_44c .. :try_end_46b} :catch_54d +- +- move-result v21 +- +- :goto_46c +- :try_start_46c +- move-object/from16 v0, v19 ++ :try_end_4b0 ++ .catchall {:try_start_491 .. :try_end_4b0} :catchall_69 ++ .catch Ljava/lang/SecurityException; {:try_start_491 .. :try_end_4b0} :catch_59f ++ ++ move-result v22 ++ ++ :goto_4b1 ++ :try_start_4b1 ++ move-object/from16 v0, v20 + + iget-object v3, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +@@ -3501,11 +3686,11 @@ + + and-int/2addr v3, v5 + +- if-eqz v3, :cond_4b1 ++ if-eqz v3, :cond_4f6 + + const-string v3, "android.permission.INTERACT_ACROSS_USERS" + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v5, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +@@ -3517,7 +3702,7 @@ + + move-result v3 + +- if-eqz v3, :cond_4b1 ++ if-eqz v3, :cond_4f6 + + const-string v3, "BroadcastQueue" + +@@ -3557,53 +3742,66 @@ + + invoke-static {v3, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I + +- const/16 v31, 0x1 ++ const/16 v32, 0x1 + +- :cond_4b1 +- move-object/from16 v0, v29 ++ :cond_4f6 ++ move-object/from16 v0, v30 + + iget-object v3, v0, Lcom/android/server/am/BroadcastRecord;->curApp:Lcom/android/server/am/ProcessRecord; + +- if-eqz v3, :cond_4c1 ++ if-eqz v3, :cond_506 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v3, v0, Lcom/android/server/am/BroadcastRecord;->curApp:Lcom/android/server/am/ProcessRecord; + + iget-boolean v3, v3, Lcom/android/server/am/ProcessRecord;->crashing:Z + +- if-eqz v3, :cond_4c1 ++ if-eqz v3, :cond_506 ++ ++ const/16 v32, 0x1 ++ ++ :cond_506 ++ if-eqz v16, :cond_513 ++ ++ const/16 v32, 0x1 ++ ++ move-object/from16 v0, v30 ++ ++ iget-object v3, v0, Lcom/android/server/am/BroadcastRecord;->intent:Landroid/content/Intent; ++ ++ const-string v5, "android.intent.action.BOOT_COMPLETED" + +- const/16 v31, 0x1 ++ invoke-virtual {v3, v5}, Landroid/content/Intent;->setAction(Ljava/lang/String;)Landroid/content/Intent; + +- :cond_4c1 +- if-eqz v31, :cond_55b ++ :cond_513 ++ if-eqz v32, :cond_5ad + + const/4 v3, 0x0 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iput-object v3, v0, Lcom/android/server/am/BroadcastRecord;->receiver:Landroid/os/IBinder; + + const/4 v3, 0x0 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iput-object v3, v0, Lcom/android/server/am/BroadcastRecord;->curFilter:Lcom/android/server/am/BroadcastFilter; + + const/4 v3, 0x0 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iput v3, v0, Lcom/android/server/am/BroadcastRecord;->state:I + + invoke-virtual/range {p0 .. p0}, Lcom/android/server/am/BroadcastQueue;->scheduleBroadcastsLocked()V + +- monitor-exit v35 ++ monitor-exit v36 + + goto/16 :goto_93 + +- :cond_4d8 ++ :cond_52a + const-string v3, "BroadcastQueue" + + new-instance v5, Ljava/lang/StringBuilder; +@@ -3616,7 +3814,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v6, v0, Lcom/android/server/am/BroadcastRecord;->intent:Landroid/content/Intent; + +@@ -3634,7 +3832,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v6, v0, Lcom/android/server/am/BroadcastRecord;->callerPackage:Ljava/lang/String; + +@@ -3648,7 +3846,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v6, v0, Lcom/android/server/am/BroadcastRecord;->callingPid:I + +@@ -3662,7 +3860,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v6, v0, Lcom/android/server/am/BroadcastRecord;->callingUid:I + +@@ -3682,7 +3880,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v6, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +@@ -3712,16 +3910,16 @@ + + invoke-static {v3, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I + +- goto/16 :goto_39d ++ goto/16 :goto_3e2 + +- :catch_548 ++ :catch_59a + move-exception v15 + +- const/16 v28, -0x1 ++ const/16 v29, -0x1 + +- goto/16 :goto_3c5 ++ goto/16 :goto_40a + +- :catch_54d ++ :catch_59f + move-exception v15 + + const-string v3, "BroadcastQueue" +@@ -3732,42 +3930,42 @@ + + invoke-static {v3, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I + +- const/16 v31, 0x1 ++ const/16 v32, 0x1 + +- goto/16 :goto_46c ++ goto/16 :goto_4b1 + +- :cond_55b ++ :cond_5ad + const/4 v3, 0x1 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iput v3, v0, Lcom/android/server/am/BroadcastRecord;->state:I + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v3, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + + iget-object v4, v3, Landroid/content/pm/ActivityInfo;->processName:Ljava/lang/String; + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iput-object v14, v0, Lcom/android/server/am/BroadcastRecord;->curComponent:Landroid/content/ComponentName; + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v3, v0, Lcom/android/server/am/BroadcastRecord;->callingUid:I + + const/16 v5, 0x3e8 + +- if-eq v3, v5, :cond_585 ++ if-eq v3, v5, :cond_5d7 + +- if-eqz v21, :cond_585 ++ if-eqz v22, :cond_5d7 + + move-object/from16 v0, p0 + + iget-object v3, v0, Lcom/android/server/am/BroadcastQueue;->mService:Lcom/android/server/am/ActivityManagerService; + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v5, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +@@ -3777,27 +3975,27 @@ + + move-result-object v3 + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iput-object v3, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +- :cond_585 +- move-object/from16 v0, v19 ++ :cond_5d7 ++ move-object/from16 v0, v20 + + iget-object v3, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iput-object v3, v0, Lcom/android/server/am/BroadcastRecord;->curReceiver:Landroid/content/pm/ActivityInfo; +- :try_end_58d +- .catchall {:try_start_46c .. :try_end_58d} :catchall_69 ++ :try_end_5df ++ .catchall {:try_start_4b1 .. :try_end_5df} :catchall_69 + +- :try_start_58d ++ :try_start_5df + invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager; + + move-result-object v3 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v5, v0, Lcom/android/server/am/BroadcastRecord;->curComponent:Landroid/content/ComponentName; + +@@ -3807,7 +4005,7 @@ + + const/4 v6, 0x0 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v7, v0, Lcom/android/server/am/BroadcastRecord;->callingUid:I + +@@ -3816,18 +4014,18 @@ + move-result v7 + + invoke-interface {v3, v5, v6, v7}, Landroid/content/pm/IPackageManager;->setPackageStoppedState(Ljava/lang/String;ZI)V +- :try_end_5a5 +- .catchall {:try_start_58d .. :try_end_5a5} :catchall_69 +- .catch Landroid/os/RemoteException; {:try_start_58d .. :try_end_5a5} :catch_722 +- .catch Ljava/lang/IllegalArgumentException; {:try_start_58d .. :try_end_5a5} :catch_5ce ++ :try_end_5f7 ++ .catchall {:try_start_5df .. :try_end_5f7} :catchall_69 ++ .catch Landroid/os/RemoteException; {:try_start_5df .. :try_end_5f7} :catch_774 ++ .catch Ljava/lang/IllegalArgumentException; {:try_start_5df .. :try_end_5f7} :catch_620 + +- :goto_5a5 +- :try_start_5a5 ++ :goto_5f7 ++ :try_start_5f7 + move-object/from16 v0, p0 + + iget-object v3, v0, Lcom/android/server/am/BroadcastQueue;->mService:Lcom/android/server/am/ActivityManagerService; + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v5, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +@@ -3839,16 +4037,16 @@ + + move-result-object v13 + +- if-eqz v13, :cond_617 ++ if-eqz v13, :cond_669 + + iget-object v3, v13, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread; +- :try_end_5b9 +- .catchall {:try_start_5a5 .. :try_end_5b9} :catchall_69 ++ :try_end_60b ++ .catchall {:try_start_5f7 .. :try_end_60b} :catchall_69 + +- if-eqz v3, :cond_617 ++ if-eqz v3, :cond_669 + +- :try_start_5bb +- move-object/from16 v0, v19 ++ :try_start_60d ++ move-object/from16 v0, v20 + + iget-object v3, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +@@ -3858,20 +4056,20 @@ + + move-object/from16 v0, p0 + +- move-object/from16 v1, v29 ++ move-object/from16 v1, v30 + + invoke-direct {v0, v1, v13}, Lcom/android/server/am/BroadcastQueue;->processCurBroadcastLocked(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/ProcessRecord;)V +- :try_end_5cb +- .catchall {:try_start_5bb .. :try_end_5cb} :catchall_69 +- .catch Landroid/os/RemoteException; {:try_start_5bb .. :try_end_5cb} :catch_5fa +- .catch Ljava/lang/RuntimeException; {:try_start_5bb .. :try_end_5cb} :catch_6bb ++ :try_end_61d ++ .catchall {:try_start_60d .. :try_end_61d} :catchall_69 ++ .catch Landroid/os/RemoteException; {:try_start_60d .. :try_end_61d} :catch_64c ++ .catch Ljava/lang/RuntimeException; {:try_start_60d .. :try_end_61d} :catch_70d + +- :try_start_5cb +- monitor-exit v35 ++ :try_start_61d ++ monitor-exit v36 + + goto/16 :goto_93 + +- :catch_5ce ++ :catch_620 + move-exception v15 + + const-string v3, "BroadcastQueue" +@@ -3886,7 +4084,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v6, v0, Lcom/android/server/am/BroadcastRecord;->curComponent:Landroid/content/ComponentName; + +@@ -3914,9 +4112,9 @@ + + invoke-static {v3, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I + +- goto :goto_5a5 ++ goto :goto_5f7 + +- :catch_5fa ++ :catch_64c + move-exception v15 + + const-string v3, "BroadcastQueue" +@@ -3931,7 +4129,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v6, v0, Lcom/android/server/am/BroadcastRecord;->curComponent:Landroid/content/ComponentName; + +@@ -3945,12 +4143,12 @@ + + invoke-static {v3, v5, v15}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I + +- :cond_617 ++ :cond_669 + move-object/from16 v0, p0 + + iget-object v3, v0, Lcom/android/server/am/BroadcastQueue;->mService:Lcom/android/server/am/ActivityManagerService; + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v5, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +@@ -3958,7 +4156,7 @@ + + const/4 v6, 0x1 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v7, v0, Lcom/android/server/am/BroadcastRecord;->intent:Landroid/content/Intent; + +@@ -3970,11 +4168,11 @@ + + const-string v8, "broadcast" + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v9, v0, Lcom/android/server/am/BroadcastRecord;->curComponent:Landroid/content/ComponentName; + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v10, v0, Lcom/android/server/am/BroadcastRecord;->intent:Landroid/content/Intent; + +@@ -3986,22 +4184,22 @@ + + and-int/2addr v10, v11 + +- if-eqz v10, :cond_710 ++ if-eqz v10, :cond_762 + + const/4 v10, 0x1 + +- :goto_640 ++ :goto_692 + const/4 v11, 0x0 + + invoke-virtual/range {v3 .. v11}, Lcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZ)Lcom/android/server/am/ProcessRecord; + + move-result-object v3 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iput-object v3, v0, Lcom/android/server/am/BroadcastRecord;->curApp:Lcom/android/server/am/ProcessRecord; + +- if-nez v3, :cond_713 ++ if-nez v3, :cond_765 + + const-string v3, "BroadcastQueue" + +@@ -4015,7 +4213,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v6, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +@@ -4033,7 +4231,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v19 ++ move-object/from16 v0, v20 + + iget-object v6, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo; + +@@ -4051,7 +4249,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v6, v0, Lcom/android/server/am/BroadcastRecord;->intent:Landroid/content/Intent; + +@@ -4073,23 +4271,23 @@ + + move-object/from16 v0, p0 + +- move-object/from16 v1, v29 ++ move-object/from16 v1, v30 + + invoke-virtual {v0, v1}, Lcom/android/server/am/BroadcastQueue;->logBroadcastReceiverDiscardLocked(Lcom/android/server/am/BroadcastRecord;)V + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v7, v0, Lcom/android/server/am/BroadcastRecord;->resultCode:I + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v8, v0, Lcom/android/server/am/BroadcastRecord;->resultData:Ljava/lang/String; + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v9, v0, Lcom/android/server/am/BroadcastRecord;->resultExtras:Landroid/os/Bundle; + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-boolean v10, v0, Lcom/android/server/am/BroadcastRecord;->resultAbort:Z + +@@ -4097,7 +4295,7 @@ + + move-object/from16 v5, p0 + +- move-object/from16 v6, v29 ++ move-object/from16 v6, v30 + + invoke-virtual/range {v5 .. v11}, Lcom/android/server/am/BroadcastQueue;->finishReceiverLocked(Lcom/android/server/am/BroadcastRecord;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z + +@@ -4105,15 +4303,15 @@ + + const/4 v3, 0x0 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iput v3, v0, Lcom/android/server/am/BroadcastRecord;->state:I + +- monitor-exit v35 ++ monitor-exit v36 + + goto/16 :goto_93 + +- :catch_6bb ++ :catch_70d + move-exception v15 + + const-string v3, "BroadcastQueue" +@@ -4128,7 +4326,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v6, v0, Lcom/android/server/am/BroadcastRecord;->curComponent:Landroid/content/ComponentName; + +@@ -4142,7 +4340,7 @@ + + move-result-object v5 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v6, v0, Lcom/android/server/am/BroadcastRecord;->intent:Landroid/content/Intent; + +@@ -4158,23 +4356,23 @@ + + move-object/from16 v0, p0 + +- move-object/from16 v1, v29 ++ move-object/from16 v1, v30 + + invoke-virtual {v0, v1}, Lcom/android/server/am/BroadcastQueue;->logBroadcastReceiverDiscardLocked(Lcom/android/server/am/BroadcastRecord;)V + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget v5, v0, Lcom/android/server/am/BroadcastRecord;->resultCode:I + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v6, v0, Lcom/android/server/am/BroadcastRecord;->resultData:Ljava/lang/String; + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-object v7, v0, Lcom/android/server/am/BroadcastRecord;->resultExtras:Landroid/os/Bundle; + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iget-boolean v8, v0, Lcom/android/server/am/BroadcastRecord;->resultAbort:Z + +@@ -4182,7 +4380,7 @@ + + move-object/from16 v3, p0 + +- move-object/from16 v4, v29 ++ move-object/from16 v4, v30 + + invoke-virtual/range {v3 .. v9}, Lcom/android/server/am/BroadcastQueue;->finishReceiverLocked(Lcom/android/server/am/BroadcastRecord;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z + +@@ -4190,42 +4388,42 @@ + + const/4 v3, 0x0 + +- move-object/from16 v0, v29 ++ move-object/from16 v0, v30 + + iput v3, v0, Lcom/android/server/am/BroadcastRecord;->state:I + +- monitor-exit v35 ++ monitor-exit v36 + + goto/16 :goto_93 + +- :cond_710 ++ :cond_762 + const/4 v10, 0x0 + +- goto/16 :goto_640 ++ goto/16 :goto_692 + +- :cond_713 +- move-object/from16 v0, v29 ++ :cond_765 ++ move-object/from16 v0, v30 + + move-object/from16 v1, p0 + + iput-object v0, v1, Lcom/android/server/am/BroadcastQueue;->mPendingBroadcast:Lcom/android/server/am/BroadcastRecord; + +- move/from16 v0, v30 ++ move/from16 v0, v31 + + move-object/from16 v1, p0 + + iput v0, v1, Lcom/android/server/am/BroadcastQueue;->mPendingBroadcastRecvIndex:I + +- monitor-exit v35 +- :try_end_720 +- .catchall {:try_start_5cb .. :try_end_720} :catchall_69 ++ monitor-exit v36 ++ :try_end_772 ++ .catchall {:try_start_61d .. :try_end_772} :catchall_69 + + goto/16 :goto_93 + +- :catch_722 ++ :catch_774 + move-exception v3 + +- goto/16 :goto_5a5 ++ goto/16 :goto_5f7 + .end method + + .method public final replaceOrderedBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)Z +diff -Npru stock-services/smali/com/android/server/PrivacyTelephonyRegistry$1.smali pdroid-services/smali/com/android/server/PrivacyTelephonyRegistry$1.smali +--- stock-services/smali/com/android/server/PrivacyTelephonyRegistry$1.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-services/smali/com/android/server/PrivacyTelephonyRegistry$1.smali 2013-08-10 20:37:56.839214036 -0700 +@@ -0,0 +1,180 @@ ++.class Lcom/android/server/PrivacyTelephonyRegistry$1; ++.super Landroid/content/BroadcastReceiver; ++.source "PrivacyTelephonyRegistry.java" ++ ++ ++# annotations ++.annotation system Ldalvik/annotation/EnclosingClass; ++ value = Lcom/android/server/PrivacyTelephonyRegistry; ++.end annotation ++ ++.annotation system Ldalvik/annotation/InnerClass; ++ accessFlags = 0x0 ++ name = null ++.end annotation ++ ++ ++# instance fields ++.field final synthetic this$0:Lcom/android/server/PrivacyTelephonyRegistry; ++ ++ ++# direct methods ++.method constructor (Lcom/android/server/PrivacyTelephonyRegistry;)V ++ .registers 2 ++ ++ iput-object p1, p0, Lcom/android/server/PrivacyTelephonyRegistry$1;->this$0:Lcom/android/server/PrivacyTelephonyRegistry; ++ ++ invoke-direct {p0}, Landroid/content/BroadcastReceiver;->()V ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public onReceive(Landroid/content/Context;Landroid/content/Intent;)V ++ .registers 10 ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual {p2}, Landroid/content/Intent;->getAction()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ const-string v4, "android.privacy.BLOCKED_PHONE_CALL" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_44 ++ ++ new-instance v0, Landroid/os/Bundle; ++ ++ invoke-direct {v0}, Landroid/os/Bundle;->()V ++ ++ invoke-virtual {p2}, Landroid/content/Intent;->getExtras()Landroid/os/Bundle; ++ ++ move-result-object v0 ++ ++ const-string v3, "packageName" ++ ++ invoke-virtual {v0, v3}, Landroid/os/Bundle;->getString(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v3, "packageName" ++ ++ invoke-virtual {v0, v3}, Landroid/os/Bundle;->containsKey(Ljava/lang/String;)Z ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_45 ++ ++ const-string v3, "PrivacyTelephonyRegistry" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "got blocked phone call INTENT from package: " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ const-string v5, "packageName" ++ ++ invoke-virtual {v0, v5}, Landroid/os/Bundle;->getString(Ljava/lang/String;)Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v3, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :goto_42 ++ if-nez v1, :cond_4d ++ ++ :cond_44 ++ :goto_44 ++ return-void ++ ++ :cond_45 ++ const-string v3, "PrivacyTelephonyRegistry" ++ ++ const-string v4, "got blocked phone call INTENT without package information" ++ ++ invoke-static {v3, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto :goto_42 ++ ++ :cond_4d ++ const-string v3, "phoneState" ++ ++ invoke-virtual {v0, v3}, Landroid/os/Bundle;->containsKey(Ljava/lang/String;)Z ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_76 ++ ++ const-string v3, "phoneState" ++ ++ invoke-virtual {v0, v3}, Landroid/os/Bundle;->getInt(Ljava/lang/String;)I ++ ++ move-result v2 ++ ++ packed-switch v2, :pswitch_data_7e ++ ++ goto :goto_44 ++ ++ :pswitch_5f ++ iget-object v3, p0, Lcom/android/server/PrivacyTelephonyRegistry$1;->this$0:Lcom/android/server/PrivacyTelephonyRegistry; ++ ++ const/4 v4, 0x0 ++ ++ invoke-virtual {v3, v4, v6, v1}, Lcom/android/server/PrivacyTelephonyRegistry;->notifyPrivacyCallState(ILjava/lang/String;Ljava/lang/String;)V ++ ++ goto :goto_44 ++ ++ :pswitch_66 ++ iget-object v3, p0, Lcom/android/server/PrivacyTelephonyRegistry$1;->this$0:Lcom/android/server/PrivacyTelephonyRegistry; ++ ++ const/4 v4, 0x2 ++ ++ invoke-virtual {v3, v4, v6, v1}, Lcom/android/server/PrivacyTelephonyRegistry;->notifyPrivacyCallState(ILjava/lang/String;Ljava/lang/String;)V ++ ++ goto :goto_44 ++ ++ :pswitch_6d ++ iget-object v3, p0, Lcom/android/server/PrivacyTelephonyRegistry$1;->this$0:Lcom/android/server/PrivacyTelephonyRegistry; ++ ++ const/4 v4, 0x1 ++ ++ const-string v5, "12345" ++ ++ invoke-virtual {v3, v4, v5, v1}, Lcom/android/server/PrivacyTelephonyRegistry;->notifyPrivacyCallState(ILjava/lang/String;Ljava/lang/String;)V ++ ++ goto :goto_44 ++ ++ :cond_76 ++ const-string v3, "PrivacyTelephonyRegistry" ++ ++ const-string v4, "we forgot to put phoneState in Intent?" ++ ++ invoke-static {v3, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto :goto_44 ++ ++ :pswitch_data_7e ++ .packed-switch 0x0 ++ :pswitch_5f ++ :pswitch_6d ++ :pswitch_66 ++ .end packed-switch ++.end method +diff -Npru stock-services/smali/com/android/server/PrivacyTelephonyRegistry.smali pdroid-services/smali/com/android/server/PrivacyTelephonyRegistry.smali +--- stock-services/smali/com/android/server/PrivacyTelephonyRegistry.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-services/smali/com/android/server/PrivacyTelephonyRegistry.smali 2013-08-10 20:37:56.851214037 -0700 +@@ -0,0 +1,1393 @@ ++.class public Lcom/android/server/PrivacyTelephonyRegistry; ++.super Lcom/android/server/TelephonyRegistry; ++.source "PrivacyTelephonyRegistry.java" ++ ++ ++# static fields ++.field private static final PERMISSION_CALL_STATE:I = 0x3 ++ ++.field private static final PERMISSION_CELL_INFO:I = 0x1 ++ ++.field private static final PERMISSION_CELL_LOCATION:I = 0x0 ++ ++.field private static final PERMISSION_SERVICE_STATE:I = 0x4 ++ ++.field private static final PERMISSION_SIGNAL_STRENGTH:I = 0x2 ++ ++.field private static final P_TAG:Ljava/lang/String; = "PrivacyTelephonyRegistry" ++ ++ ++# instance fields ++.field private pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++.field private final privacyReceiver:Landroid/content/BroadcastReceiver; ++ ++ ++# direct methods ++.method public constructor (Landroid/content/Context;)V ++ .registers 5 ++ ++ invoke-direct {p0, p1}, Lcom/android/server/TelephonyRegistry;->(Landroid/content/Context;)V ++ ++ new-instance v1, Lcom/android/server/PrivacyTelephonyRegistry$1; ++ ++ invoke-direct {v1, p0}, Lcom/android/server/PrivacyTelephonyRegistry$1;->(Lcom/android/server/PrivacyTelephonyRegistry;)V ++ ++ iput-object v1, p0, Lcom/android/server/PrivacyTelephonyRegistry;->privacyReceiver:Landroid/content/BroadcastReceiver; ++ ++ new-instance v1, Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v2, "privacy" ++ ++ invoke-static {v2}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v2 ++ ++ invoke-static {v2}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v2 ++ ++ invoke-direct {v1, p1, v2}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v1, p0, Lcom/android/server/PrivacyTelephonyRegistry;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ :try_start_1b ++ invoke-direct {p0}, Lcom/android/server/PrivacyTelephonyRegistry;->registerPrivacy()V ++ :try_end_1e ++ .catch Ljava/lang/Exception; {:try_start_1b .. :try_end_1e} :catch_26 ++ ++ :goto_1e ++ const-string v1, "PrivacyTelephonyRegistry" ++ ++ const-string v2, "constructor ready" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ return-void ++ ++ :catch_26 ++ move-exception v0 ++ ++ const-string v1, "PrivacyTelephonyRegistry" ++ ++ const-string v2, "failed to register privacy broadcastreceiver" ++ ++ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto :goto_1e ++.end method ++ ++.method private isPackageAllowed(ILjava/lang/String;)Z ++ .registers 8 ++ ++ const/4 v2, 0x1 ++ ++ const/4 v1, 0x0 ++ ++ iget-object v3, p0, Lcom/android/server/PrivacyTelephonyRegistry;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v4 ++ ++ invoke-virtual {v3, p2, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v0 ++ ++ if-nez v0, :cond_f ++ ++ :cond_e ++ :goto_e ++ return v1 ++ ++ :cond_f ++ packed-switch p1, :pswitch_data_42 ++ ++ goto :goto_e ++ ++ :pswitch_13 ++ invoke-virtual {v0}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ if-nez v3, :cond_e ++ ++ invoke-virtual {v0}, Landroid/privacy/PrivacySettings;->getLocationGpsSetting()B ++ ++ move-result v3 ++ ++ if-nez v3, :cond_e ++ ++ move v1, v2 ++ ++ goto :goto_e ++ ++ :pswitch_21 ++ invoke-virtual {v0}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ if-nez v3, :cond_e ++ ++ move v1, v2 ++ ++ goto :goto_e ++ ++ :pswitch_29 ++ invoke-virtual {v0}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ if-nez v3, :cond_e ++ ++ move v1, v2 ++ ++ goto :goto_e ++ ++ :pswitch_31 ++ invoke-virtual {v0}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ if-nez v3, :cond_e ++ ++ move v1, v2 ++ ++ goto :goto_e ++ ++ :pswitch_39 ++ invoke-virtual {v0}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ if-nez v3, :cond_e ++ ++ move v1, v2 ++ ++ goto :goto_e ++ ++ nop ++ ++ :pswitch_data_42 ++ .packed-switch 0x0 ++ :pswitch_13 ++ :pswitch_21 ++ :pswitch_29 ++ :pswitch_31 ++ :pswitch_39 ++ .end packed-switch ++.end method ++ ++.method private registerPrivacy()V ++ .registers 4 ++ ++ new-instance v0, Landroid/content/IntentFilter; ++ ++ const-string v1, "android.privacy.BLOCKED_PHONE_CALL" ++ ++ invoke-direct {v0, v1}, Landroid/content/IntentFilter;->(Ljava/lang/String;)V ++ ++ iget-object v1, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mContext:Landroid/content/Context; ++ ++ iget-object v2, p0, Lcom/android/server/PrivacyTelephonyRegistry;->privacyReceiver:Landroid/content/BroadcastReceiver; ++ ++ invoke-virtual {v1, v2, v0}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public bridge synthetic dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V ++ .registers 4 ++ ++ invoke-super {p0, p1, p2, p3}, Lcom/android/server/TelephonyRegistry;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V ++ ++ return-void ++.end method ++ ++.method public listen(Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZ)V ++ .registers 19 ++ ++ :try_start_0 ++ invoke-direct {p0}, Lcom/android/server/PrivacyTelephonyRegistry;->registerPrivacy()V ++ :try_end_3 ++ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_3} :catch_af ++ ++ :goto_3 ++ if-eqz p3, :cond_110 ++ ++ move/from16 v0, p3 ++ ++ invoke-virtual {p0, v0}, Lcom/android/server/PrivacyTelephonyRegistry;->checkListenerPermission(I)V ++ ++ iget-object v11, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mRecords:Ljava/util/ArrayList; ++ ++ monitor-enter v11 ++ ++ const/4 v7, 0x0 ++ ++ :try_start_e ++ invoke-interface/range {p2 .. p2}, Lcom/android/internal/telephony/IPhoneStateListener;->asBinder()Landroid/os/IBinder; ++ ++ move-result-object v2 ++ ++ iget-object v10, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mRecords:Ljava/util/ArrayList; ++ ++ invoke-virtual {v10}, Ljava/util/ArrayList;->size()I ++ :try_end_17 ++ .catchall {:try_start_e .. :try_end_17} :catchall_d2 ++ ++ move-result v1 ++ ++ const/4 v6, 0x0 ++ ++ move-object v8, v7 ++ ++ :goto_1a ++ if-ge v6, v1, :cond_be ++ ++ :try_start_1c ++ iget-object v10, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mRecords:Ljava/util/ArrayList; ++ ++ invoke-virtual {v10, v6}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object; ++ ++ move-result-object v7 ++ ++ check-cast v7, Lcom/android/server/TelephonyRegistry$Record; ++ :try_end_24 ++ .catchall {:try_start_1c .. :try_end_24} :catchall_118 ++ ++ :try_start_24 ++ iget-object v10, v7, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; ++ ++ if-ne v2, v10, :cond_b9 ++ ++ :goto_28 ++ iget v10, v7, Lcom/android/server/TelephonyRegistry$Record;->events:I ++ ++ xor-int v10, v10, p3 ++ ++ and-int v9, p3, v10 ++ ++ move/from16 v0, p3 ++ ++ iput v0, v7, Lcom/android/server/TelephonyRegistry$Record;->events:I ++ :try_end_32 ++ .catchall {:try_start_24 .. :try_end_32} :catchall_d2 ++ ++ if-eqz p4, :cond_ad ++ ++ and-int/lit8 v10, p3, 0x1 ++ ++ if-eqz v10, :cond_38 ++ ++ :cond_38 ++ and-int/lit8 v10, p3, 0x2 ++ ++ if-eqz v10, :cond_4c ++ ++ :try_start_3c ++ iget-object v10, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mSignalStrength:Landroid/telephony/SignalStrength; ++ ++ invoke-virtual {v10}, Landroid/telephony/SignalStrength;->getGsmSignalStrength()I ++ ++ move-result v5 ++ ++ iget-object v10, v7, Lcom/android/server/TelephonyRegistry$Record;->callback:Lcom/android/internal/telephony/IPhoneStateListener; ++ ++ const/16 v12, 0x63 ++ ++ if-ne v5, v12, :cond_49 ++ ++ const/4 v5, -0x1 ++ ++ :cond_49 ++ invoke-interface {v10, v5}, Lcom/android/internal/telephony/IPhoneStateListener;->onSignalStrengthChanged(I)V ++ :try_end_4c ++ .catchall {:try_start_3c .. :try_end_4c} :catchall_d2 ++ .catch Landroid/os/RemoteException; {:try_start_3c .. :try_end_4c} :catch_d5 ++ ++ :cond_4c ++ :goto_4c ++ and-int/lit8 v10, p3, 0x4 ++ ++ if-eqz v10, :cond_57 ++ ++ :try_start_50 ++ iget-object v10, v7, Lcom/android/server/TelephonyRegistry$Record;->callback:Lcom/android/internal/telephony/IPhoneStateListener; ++ ++ iget-boolean v12, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mMessageWaiting:Z ++ ++ invoke-interface {v10, v12}, Lcom/android/internal/telephony/IPhoneStateListener;->onMessageWaitingIndicatorChanged(Z)V ++ :try_end_57 ++ .catchall {:try_start_50 .. :try_end_57} :catchall_d2 ++ .catch Landroid/os/RemoteException; {:try_start_50 .. :try_end_57} :catch_dd ++ ++ :cond_57 ++ :goto_57 ++ and-int/lit8 v10, p3, 0x8 ++ ++ if-eqz v10, :cond_62 ++ ++ :try_start_5b ++ iget-object v10, v7, Lcom/android/server/TelephonyRegistry$Record;->callback:Lcom/android/internal/telephony/IPhoneStateListener; ++ ++ iget-boolean v12, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mCallForwarding:Z ++ ++ invoke-interface {v10, v12}, Lcom/android/internal/telephony/IPhoneStateListener;->onCallForwardingIndicatorChanged(Z)V ++ :try_end_62 ++ .catchall {:try_start_5b .. :try_end_62} :catchall_d2 ++ .catch Landroid/os/RemoteException; {:try_start_5b .. :try_end_62} :catch_e5 ++ ++ :cond_62 ++ :goto_62 ++ and-int/lit8 v10, p3, 0x10 ++ ++ if-eqz v10, :cond_66 ++ ++ :cond_66 ++ and-int/lit8 v10, p3, 0x20 ++ ++ if-eqz v10, :cond_73 ++ ++ :try_start_6a ++ iget-object v10, v7, Lcom/android/server/TelephonyRegistry$Record;->callback:Lcom/android/internal/telephony/IPhoneStateListener; ++ ++ iget v12, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mCallState:I ++ ++ iget-object v13, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mCallIncomingNumber:Ljava/lang/String; ++ ++ invoke-interface {v10, v12, v13}, Lcom/android/internal/telephony/IPhoneStateListener;->onCallStateChanged(ILjava/lang/String;)V ++ :try_end_73 ++ .catchall {:try_start_6a .. :try_end_73} :catchall_d2 ++ .catch Landroid/os/RemoteException; {:try_start_6a .. :try_end_73} :catch_ed ++ ++ :cond_73 ++ :goto_73 ++ and-int/lit8 v10, p3, 0x40 ++ ++ if-eqz v10, :cond_80 ++ ++ :try_start_77 ++ iget-object v10, v7, Lcom/android/server/TelephonyRegistry$Record;->callback:Lcom/android/internal/telephony/IPhoneStateListener; ++ ++ iget v12, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mDataConnectionState:I ++ ++ iget v13, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mDataConnectionNetworkType:I ++ ++ invoke-interface {v10, v12, v13}, Lcom/android/internal/telephony/IPhoneStateListener;->onDataConnectionStateChanged(II)V ++ :try_end_80 ++ .catchall {:try_start_77 .. :try_end_80} :catchall_d2 ++ .catch Landroid/os/RemoteException; {:try_start_77 .. :try_end_80} :catch_f4 ++ ++ :cond_80 ++ :goto_80 ++ move/from16 v0, p3 ++ ++ and-int/lit16 v10, v0, 0x80 ++ ++ if-eqz v10, :cond_8d ++ ++ :try_start_86 ++ iget-object v10, v7, Lcom/android/server/TelephonyRegistry$Record;->callback:Lcom/android/internal/telephony/IPhoneStateListener; ++ ++ iget v12, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mDataActivity:I ++ ++ invoke-interface {v10, v12}, Lcom/android/internal/telephony/IPhoneStateListener;->onDataActivity(I)V ++ :try_end_8d ++ .catchall {:try_start_86 .. :try_end_8d} :catchall_d2 ++ .catch Landroid/os/RemoteException; {:try_start_86 .. :try_end_8d} :catch_fb ++ ++ :cond_8d ++ :goto_8d ++ move/from16 v0, p3 ++ ++ and-int/lit16 v10, v0, 0x100 ++ ++ if-eqz v10, :cond_9a ++ ++ :try_start_93 ++ iget-object v10, v7, Lcom/android/server/TelephonyRegistry$Record;->callback:Lcom/android/internal/telephony/IPhoneStateListener; ++ ++ iget-object v12, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mSignalStrength:Landroid/telephony/SignalStrength; ++ ++ invoke-interface {v10, v12}, Lcom/android/internal/telephony/IPhoneStateListener;->onSignalStrengthsChanged(Landroid/telephony/SignalStrength;)V ++ :try_end_9a ++ .catchall {:try_start_93 .. :try_end_9a} :catchall_d2 ++ .catch Landroid/os/RemoteException; {:try_start_93 .. :try_end_9a} :catch_102 ++ ++ :cond_9a ++ :goto_9a ++ move/from16 v0, p3 ++ ++ and-int/lit16 v10, v0, 0x200 ++ ++ if-eqz v10, :cond_a7 ++ ++ :try_start_a0 ++ iget-object v10, v7, Lcom/android/server/TelephonyRegistry$Record;->callback:Lcom/android/internal/telephony/IPhoneStateListener; ++ ++ iget v12, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mOtaspMode:I ++ ++ invoke-interface {v10, v12}, Lcom/android/internal/telephony/IPhoneStateListener;->onOtaspChanged(I)V ++ :try_end_a7 ++ .catchall {:try_start_a0 .. :try_end_a7} :catchall_d2 ++ .catch Landroid/os/RemoteException; {:try_start_a0 .. :try_end_a7} :catch_109 ++ ++ :cond_a7 ++ :goto_a7 ++ move/from16 v0, p3 ++ ++ and-int/lit16 v10, v0, 0x400 ++ ++ if-eqz v10, :cond_ad ++ ++ :cond_ad ++ :try_start_ad ++ monitor-exit v11 ++ :try_end_ae ++ .catchall {:try_start_ad .. :try_end_ae} :catchall_d2 ++ ++ :goto_ae ++ return-void ++ ++ :catch_af ++ move-exception v3 ++ ++ const-string v10, "PrivacyTelephonyRegistry" ++ ++ const-string v11, "failed to register privacy broadcastreceiver" ++ ++ invoke-static {v10, v11}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto/16 :goto_3 ++ ++ :cond_b9 ++ add-int/lit8 v6, v6, 0x1 ++ ++ move-object v8, v7 ++ ++ goto/16 :goto_1a ++ ++ :cond_be ++ :try_start_be ++ new-instance v7, Lcom/android/server/TelephonyRegistry$Record; ++ ++ invoke-direct {v7}, Lcom/android/server/TelephonyRegistry$Record;->()V ++ :try_end_c3 ++ .catchall {:try_start_be .. :try_end_c3} :catchall_118 ++ ++ :try_start_c3 ++ iput-object v2, v7, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; ++ ++ move-object/from16 v0, p2 ++ ++ iput-object v0, v7, Lcom/android/server/TelephonyRegistry$Record;->callback:Lcom/android/internal/telephony/IPhoneStateListener; ++ ++ iput-object p1, v7, Lcom/android/server/TelephonyRegistry$Record;->pkgForDebug:Ljava/lang/String; ++ ++ iget-object v10, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mRecords:Ljava/util/ArrayList; ++ ++ invoke-virtual {v10, v7}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z ++ ++ goto/16 :goto_28 ++ ++ :catchall_d2 ++ move-exception v10 ++ ++ :goto_d3 ++ monitor-exit v11 ++ :try_end_d4 ++ .catchall {:try_start_c3 .. :try_end_d4} :catchall_d2 ++ ++ throw v10 ++ ++ :catch_d5 ++ move-exception v4 ++ ++ :try_start_d6 ++ iget-object v10, v7, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; ++ ++ invoke-virtual {p0, v10}, Lcom/android/server/PrivacyTelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ ++ goto/16 :goto_4c ++ ++ :catch_dd ++ move-exception v4 ++ ++ iget-object v10, v7, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; ++ ++ invoke-virtual {p0, v10}, Lcom/android/server/PrivacyTelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ ++ goto/16 :goto_57 ++ ++ :catch_e5 ++ move-exception v4 ++ ++ iget-object v10, v7, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; ++ ++ invoke-virtual {p0, v10}, Lcom/android/server/PrivacyTelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ ++ goto/16 :goto_62 ++ ++ :catch_ed ++ move-exception v4 ++ ++ iget-object v10, v7, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; ++ ++ invoke-virtual {p0, v10}, Lcom/android/server/PrivacyTelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ ++ goto :goto_73 ++ ++ :catch_f4 ++ move-exception v4 ++ ++ iget-object v10, v7, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; ++ ++ invoke-virtual {p0, v10}, Lcom/android/server/PrivacyTelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ ++ goto :goto_80 ++ ++ :catch_fb ++ move-exception v4 ++ ++ iget-object v10, v7, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; ++ ++ invoke-virtual {p0, v10}, Lcom/android/server/PrivacyTelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ ++ goto :goto_8d ++ ++ :catch_102 ++ move-exception v4 ++ ++ iget-object v10, v7, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; ++ ++ invoke-virtual {p0, v10}, Lcom/android/server/PrivacyTelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ ++ goto :goto_9a ++ ++ :catch_109 ++ move-exception v4 ++ ++ iget-object v10, v7, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; ++ ++ invoke-virtual {p0, v10}, Lcom/android/server/PrivacyTelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ :try_end_10f ++ .catchall {:try_start_d6 .. :try_end_10f} :catchall_d2 ++ ++ goto :goto_a7 ++ ++ :cond_110 ++ invoke-interface/range {p2 .. p2}, Lcom/android/internal/telephony/IPhoneStateListener;->asBinder()Landroid/os/IBinder; ++ ++ move-result-object v10 ++ ++ invoke-virtual {p0, v10}, Lcom/android/server/PrivacyTelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ ++ goto :goto_ae ++ ++ :catchall_118 ++ move-exception v10 ++ ++ move-object v7, v8 ++ ++ goto :goto_d3 ++.end method ++ ++.method public bridge synthetic notifyCallForwardingChanged(Z)V ++ .registers 2 ++ ++ invoke-super {p0, p1}, Lcom/android/server/TelephonyRegistry;->notifyCallForwardingChanged(Z)V ++ ++ return-void ++.end method ++ ++.method public bridge synthetic notifyCallState(ILjava/lang/String;)V ++ .registers 3 ++ ++ invoke-super {p0, p1, p2}, Lcom/android/server/TelephonyRegistry;->notifyCallState(ILjava/lang/String;)V ++ ++ return-void ++.end method ++ ++.method public notifyCellInfo(Ljava/util/List;)V ++ .registers 12 ++ .annotation system Ldalvik/annotation/Signature; ++ value = { ++ "(", ++ "Ljava/util/List", ++ "<", ++ "Landroid/telephony/CellInfo;", ++ ">;)V" ++ } ++ .end annotation ++ ++ const-string v5, "notifyCellInfo()" ++ ++ invoke-virtual {p0, v5}, Lcom/android/server/PrivacyTelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z ++ ++ move-result v5 ++ ++ if-nez v5, :cond_9 ++ ++ :goto_8 ++ return-void ++ ++ :cond_9 ++ iget-object v6, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mRecords:Ljava/util/ArrayList; ++ ++ monitor-enter v6 ++ ++ :try_start_c ++ iput-object p1, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mCellInfo:Ljava/util/List; ++ ++ iget-object v5, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mRecords:Ljava/util/ArrayList; ++ ++ invoke-virtual {v5}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator; ++ ++ move-result-object v3 ++ ++ :cond_14 ++ :goto_14 ++ invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z ++ ++ move-result v5 ++ ++ if-eqz v5, :cond_ac ++ ++ invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object; ++ ++ move-result-object v4 ++ ++ check-cast v4, Lcom/android/server/TelephonyRegistry$Record; ++ ++ iget v5, v4, Lcom/android/server/TelephonyRegistry$Record;->events:I ++ :try_end_22 ++ .catchall {:try_start_c .. :try_end_22} :catchall_82 ++ ++ and-int/lit16 v5, v5, 0x400 ++ ++ if-eqz v5, :cond_14 ++ ++ const/4 v5, 0x1 ++ ++ :try_start_27 ++ iget-object v7, v4, Lcom/android/server/TelephonyRegistry$Record;->pkgForDebug:Ljava/lang/String; ++ ++ invoke-direct {p0, v5, v7}, Lcom/android/server/PrivacyTelephonyRegistry;->isPackageAllowed(ILjava/lang/String;)Z ++ ++ move-result v5 ++ ++ if-nez v5, :cond_85 ++ ++ new-instance v2, Landroid/telephony/CellInfoGsm; ++ ++ invoke-direct {v2}, Landroid/telephony/CellInfoGsm;->()V ++ ++ new-instance v1, Landroid/telephony/CellIdentityGsm; ++ ++ const/16 v5, 0xb ++ ++ const/16 v7, 0xb ++ ++ const/16 v8, 0x225 ++ ++ const/16 v9, 0x20d ++ ++ invoke-direct {v1, v5, v7, v8, v9}, Landroid/telephony/CellIdentityGsm;->(IIII)V ++ ++ invoke-virtual {v2, v1}, Landroid/telephony/CellInfoGsm;->setCellIdentity(Landroid/telephony/CellIdentityGsm;)V ++ ++ iget-object v5, v4, Lcom/android/server/TelephonyRegistry$Record;->callback:Lcom/android/internal/telephony/IPhoneStateListener; ++ ++ new-instance v7, Ljava/util/ArrayList; ++ ++ const/4 v8, 0x1 ++ ++ new-array v8, v8, [Landroid/telephony/CellInfoGsm; ++ ++ const/4 v9, 0x0 ++ ++ aput-object v2, v8, v9 ++ ++ invoke-static {v8}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List; ++ ++ move-result-object v8 ++ ++ invoke-direct {v7, v8}, Ljava/util/ArrayList;->(Ljava/util/Collection;)V ++ ++ invoke-interface {v5, v7}, Lcom/android/internal/telephony/IPhoneStateListener;->onCellInfoChanged(Ljava/util/List;)V ++ ++ const-string v5, "PrivacyTelephonyRegistry" ++ ++ new-instance v7, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v7}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v8, "package: " ++ ++ invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v7 ++ ++ iget-object v8, v4, Lcom/android/server/TelephonyRegistry$Record;->pkgForDebug:Ljava/lang/String; ++ ++ invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v7 ++ ++ const-string v8, " blocked for Cellinfo" ++ ++ invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v7 ++ ++ invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v7 ++ ++ invoke-static {v5, v7}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_78 ++ .catchall {:try_start_27 .. :try_end_78} :catchall_82 ++ .catch Landroid/os/RemoteException; {:try_start_27 .. :try_end_78} :catch_79 ++ ++ goto :goto_14 ++ ++ :catch_79 ++ move-exception v0 ++ ++ :try_start_7a ++ iget-object v5, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mRemoveList:Ljava/util/ArrayList; ++ ++ iget-object v7, v4, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; ++ ++ invoke-virtual {v5, v7}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z ++ ++ goto :goto_14 ++ ++ :catchall_82 ++ move-exception v5 ++ ++ monitor-exit v6 ++ :try_end_84 ++ .catchall {:try_start_7a .. :try_end_84} :catchall_82 ++ ++ throw v5 ++ ++ :cond_85 ++ :try_start_85 ++ iget-object v5, v4, Lcom/android/server/TelephonyRegistry$Record;->callback:Lcom/android/internal/telephony/IPhoneStateListener; ++ ++ invoke-interface {v5, p1}, Lcom/android/internal/telephony/IPhoneStateListener;->onCellInfoChanged(Ljava/util/List;)V ++ ++ const-string v5, "PrivacyTelephonyRegistry" ++ ++ new-instance v7, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v7}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v8, "package: " ++ ++ invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v7 ++ ++ iget-object v8, v4, Lcom/android/server/TelephonyRegistry$Record;->pkgForDebug:Ljava/lang/String; ++ ++ invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v7 ++ ++ const-string v8, " allowed for Cellinfo" ++ ++ invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v7 ++ ++ invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v7 ++ ++ invoke-static {v5, v7}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_aa ++ .catchall {:try_start_85 .. :try_end_aa} :catchall_82 ++ .catch Landroid/os/RemoteException; {:try_start_85 .. :try_end_aa} :catch_79 ++ ++ goto/16 :goto_14 ++ ++ :cond_ac ++ :try_start_ac ++ invoke-virtual {p0}, Lcom/android/server/PrivacyTelephonyRegistry;->handleRemoveListLocked()V ++ ++ monitor-exit v6 ++ :try_end_b0 ++ .catchall {:try_start_ac .. :try_end_b0} :catchall_82 ++ ++ goto/16 :goto_8 ++.end method ++ ++.method public notifyCellLocation(Landroid/os/Bundle;)V ++ .registers 14 ++ ++ const-string v8, "notifyCellLocation()" ++ ++ invoke-virtual {p0, v8}, Lcom/android/server/PrivacyTelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z ++ ++ move-result v8 ++ ++ if-nez v8, :cond_9 ++ ++ :goto_8 ++ return-void ++ ++ :cond_9 ++ iget-object v9, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mRecords:Ljava/util/ArrayList; ++ ++ monitor-enter v9 ++ ++ :try_start_c ++ iput-object p1, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mCellLocation:Landroid/os/Bundle; ++ :try_end_e ++ .catchall {:try_start_c .. :try_end_e} :catchall_7f ++ ++ const/4 v4, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ :try_start_10 ++ const-string v8, "lac" ++ ++ invoke-virtual {p1, v8}, Landroid/os/Bundle;->containsKey(Ljava/lang/String;)Z ++ :try_end_15 ++ .catchall {:try_start_10 .. :try_end_15} :catchall_7f ++ .catch Ljava/lang/Exception; {:try_start_10 .. :try_end_15} :catch_84 ++ ++ move-result v8 ++ ++ if-eqz v8, :cond_82 ++ ++ const/4 v4, 0x0 ++ ++ :goto_19 ++ :try_start_19 ++ iget-object v8, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mRecords:Ljava/util/ArrayList; ++ ++ invoke-virtual {v8}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator; ++ ++ move-result-object v3 ++ ++ :cond_1f ++ :goto_1f ++ invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z ++ ++ move-result v8 ++ ++ if-eqz v8, :cond_bc ++ ++ invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object; ++ ++ move-result-object v6 ++ ++ check-cast v6, Lcom/android/server/TelephonyRegistry$Record; ++ ++ iget v8, v6, Lcom/android/server/TelephonyRegistry$Record;->events:I ++ :try_end_2d ++ .catchall {:try_start_19 .. :try_end_2d} :catchall_7f ++ ++ and-int/lit8 v8, v8, 0x10 ++ ++ if-eqz v8, :cond_1f ++ ++ const/4 v8, 0x0 ++ ++ :try_start_32 ++ iget-object v10, v6, Lcom/android/server/TelephonyRegistry$Record;->pkgForDebug:Ljava/lang/String; ++ ++ invoke-direct {p0, v8, v10}, Lcom/android/server/PrivacyTelephonyRegistry;->isPackageAllowed(ILjava/lang/String;)Z ++ ++ move-result v8 ++ ++ if-nez v8, :cond_90 ++ ++ if-nez v2, :cond_90 ++ ++ new-instance v5, Landroid/os/Bundle; ++ ++ invoke-direct {v5}, Landroid/os/Bundle;->()V ++ ++ if-eqz v4, :cond_87 ++ ++ new-instance v7, Landroid/telephony/cdma/CdmaCellLocation; ++ ++ invoke-direct {v7}, Landroid/telephony/cdma/CdmaCellLocation;->()V ++ ++ invoke-virtual {v7, v5}, Landroid/telephony/cdma/CdmaCellLocation;->fillInNotifierBundle(Landroid/os/Bundle;)V ++ ++ :goto_4b ++ iget-object v8, v6, Lcom/android/server/TelephonyRegistry$Record;->callback:Lcom/android/internal/telephony/IPhoneStateListener; ++ ++ new-instance v10, Landroid/os/Bundle; ++ ++ invoke-direct {v10, v5}, Landroid/os/Bundle;->(Landroid/os/Bundle;)V ++ ++ invoke-interface {v8, v10}, Lcom/android/internal/telephony/IPhoneStateListener;->onCellLocationChanged(Landroid/os/Bundle;)V ++ ++ const-string v8, "PrivacyTelephonyRegistry" ++ ++ new-instance v10, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v10}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v11, "package: " ++ ++ invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v10 ++ ++ iget-object v11, v6, Lcom/android/server/TelephonyRegistry$Record;->pkgForDebug:Ljava/lang/String; ++ ++ invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v10 ++ ++ const-string v11, " blocked for CellLocation" ++ ++ invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v10 ++ ++ invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v10 ++ ++ invoke-static {v8, v10}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_75 ++ .catchall {:try_start_32 .. :try_end_75} :catchall_7f ++ .catch Landroid/os/RemoteException; {:try_start_32 .. :try_end_75} :catch_76 ++ ++ goto :goto_1f ++ ++ :catch_76 ++ move-exception v1 ++ ++ :try_start_77 ++ iget-object v8, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mRemoveList:Ljava/util/ArrayList; ++ ++ iget-object v10, v6, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; ++ ++ invoke-virtual {v8, v10}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z ++ ++ goto :goto_1f ++ ++ :catchall_7f ++ move-exception v8 ++ ++ monitor-exit v9 ++ :try_end_81 ++ .catchall {:try_start_77 .. :try_end_81} :catchall_7f ++ ++ throw v8 ++ ++ :cond_82 ++ const/4 v4, 0x1 ++ ++ goto :goto_19 ++ ++ :catch_84 ++ move-exception v0 ++ ++ const/4 v2, 0x1 ++ ++ goto :goto_19 ++ ++ :cond_87 ++ :try_start_87 ++ new-instance v7, Landroid/telephony/gsm/GsmCellLocation; ++ ++ invoke-direct {v7}, Landroid/telephony/gsm/GsmCellLocation;->()V ++ ++ invoke-virtual {v7, v5}, Landroid/telephony/gsm/GsmCellLocation;->fillInNotifierBundle(Landroid/os/Bundle;)V ++ ++ goto :goto_4b ++ ++ :cond_90 ++ iget-object v8, v6, Lcom/android/server/TelephonyRegistry$Record;->callback:Lcom/android/internal/telephony/IPhoneStateListener; ++ ++ new-instance v10, Landroid/os/Bundle; ++ ++ invoke-direct {v10, p1}, Landroid/os/Bundle;->(Landroid/os/Bundle;)V ++ ++ invoke-interface {v8, v10}, Lcom/android/internal/telephony/IPhoneStateListener;->onCellLocationChanged(Landroid/os/Bundle;)V ++ ++ const-string v8, "PrivacyTelephonyRegistry" ++ ++ new-instance v10, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v10}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v11, "package: " ++ ++ invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v10 ++ ++ iget-object v11, v6, Lcom/android/server/TelephonyRegistry$Record;->pkgForDebug:Ljava/lang/String; ++ ++ invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v10 ++ ++ const-string v11, " allowed for CellLocation" ++ ++ invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v10 ++ ++ invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v10 ++ ++ invoke-static {v8, v10}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_ba ++ .catchall {:try_start_87 .. :try_end_ba} :catchall_7f ++ .catch Landroid/os/RemoteException; {:try_start_87 .. :try_end_ba} :catch_76 ++ ++ goto/16 :goto_1f ++ ++ :cond_bc ++ :try_start_bc ++ invoke-virtual {p0}, Lcom/android/server/PrivacyTelephonyRegistry;->handleRemoveListLocked()V ++ ++ monitor-exit v9 ++ :try_end_c0 ++ .catchall {:try_start_bc .. :try_end_c0} :catchall_7f ++ ++ goto/16 :goto_8 ++.end method ++ ++.method public bridge synthetic notifyDataActivity(I)V ++ .registers 2 ++ ++ invoke-super {p0, p1}, Lcom/android/server/TelephonyRegistry;->notifyDataActivity(I)V ++ ++ return-void ++.end method ++ ++.method public bridge synthetic notifyDataConnection(IZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/LinkCapabilities;IZ)V ++ .registers 10 ++ ++ invoke-super/range {p0 .. p9}, Lcom/android/server/TelephonyRegistry;->notifyDataConnection(IZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/LinkCapabilities;IZ)V ++ ++ return-void ++.end method ++ ++.method public bridge synthetic notifyDataConnectionFailed(Ljava/lang/String;Ljava/lang/String;)V ++ .registers 3 ++ ++ invoke-super {p0, p1, p2}, Lcom/android/server/TelephonyRegistry;->notifyDataConnectionFailed(Ljava/lang/String;Ljava/lang/String;)V ++ ++ return-void ++.end method ++ ++.method public bridge synthetic notifyMessageWaitingChanged(Z)V ++ .registers 2 ++ ++ invoke-super {p0, p1}, Lcom/android/server/TelephonyRegistry;->notifyMessageWaitingChanged(Z)V ++ ++ return-void ++.end method ++ ++.method public bridge synthetic notifyOtaspChanged(I)V ++ .registers 2 ++ ++ invoke-super {p0, p1}, Lcom/android/server/TelephonyRegistry;->notifyOtaspChanged(I)V ++ ++ return-void ++.end method ++ ++.method public notifyPrivacyCallState(ILjava/lang/String;Ljava/lang/String;)V ++ .registers 10 ++ ++ iget-object v4, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mRecords:Ljava/util/ArrayList; ++ ++ monitor-enter v4 ++ ++ :try_start_3 ++ iget-object v3, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mRecords:Ljava/util/ArrayList; ++ ++ invoke-virtual {v3}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator; ++ ++ move-result-object v1 ++ ++ :cond_9 ++ :goto_9 ++ invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_35 ++ ++ invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; ++ ++ move-result-object v2 ++ ++ check-cast v2, Lcom/android/server/TelephonyRegistry$Record; ++ ++ iget v3, v2, Lcom/android/server/TelephonyRegistry$Record;->events:I ++ :try_end_17 ++ .catchall {:try_start_3 .. :try_end_17} :catchall_32 ++ ++ and-int/lit8 v3, v3, 0x20 ++ ++ if-eqz v3, :cond_9 ++ ++ :try_start_1b ++ iget-object v3, v2, Lcom/android/server/TelephonyRegistry$Record;->pkgForDebug:Ljava/lang/String; ++ ++ invoke-virtual {v3, p3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_9 ++ ++ iget-object v3, v2, Lcom/android/server/TelephonyRegistry$Record;->callback:Lcom/android/internal/telephony/IPhoneStateListener; ++ ++ invoke-interface {v3, p1, p2}, Lcom/android/internal/telephony/IPhoneStateListener;->onCallStateChanged(ILjava/lang/String;)V ++ :try_end_28 ++ .catchall {:try_start_1b .. :try_end_28} :catchall_32 ++ .catch Landroid/os/RemoteException; {:try_start_1b .. :try_end_28} :catch_29 ++ ++ goto :goto_9 ++ ++ :catch_29 ++ move-exception v0 ++ ++ :try_start_2a ++ iget-object v3, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mRemoveList:Ljava/util/ArrayList; ++ ++ iget-object v5, v2, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; ++ ++ invoke-virtual {v3, v5}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z ++ ++ goto :goto_9 ++ ++ :catchall_32 ++ move-exception v3 ++ ++ monitor-exit v4 ++ :try_end_34 ++ .catchall {:try_start_2a .. :try_end_34} :catchall_32 ++ ++ throw v3 ++ ++ :cond_35 ++ :try_start_35 ++ invoke-virtual {p0}, Lcom/android/server/PrivacyTelephonyRegistry;->handleRemoveListLocked()V ++ ++ monitor-exit v4 ++ :try_end_39 ++ .catchall {:try_start_35 .. :try_end_39} :catchall_32 ++ ++ return-void ++.end method ++ ++.method public notifyServiceState(Landroid/telephony/ServiceState;)V ++ .registers 9 ++ ++ const-string v3, "notifyServiceState()" ++ ++ invoke-virtual {p0, v3}, Lcom/android/server/PrivacyTelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z ++ ++ move-result v3 ++ ++ if-nez v3, :cond_9 ++ ++ :goto_8 ++ return-void ++ ++ :cond_9 ++ iget-object v4, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mRecords:Ljava/util/ArrayList; ++ ++ monitor-enter v4 ++ ++ :try_start_c ++ iput-object p1, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mServiceState:Landroid/telephony/ServiceState; ++ ++ iget-object v3, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mRecords:Ljava/util/ArrayList; ++ ++ invoke-virtual {v3}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator; ++ ++ move-result-object v1 ++ ++ :cond_14 ++ :goto_14 ++ invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_90 ++ ++ invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; ++ ++ move-result-object v2 ++ ++ check-cast v2, Lcom/android/server/TelephonyRegistry$Record; ++ ++ iget v3, v2, Lcom/android/server/TelephonyRegistry$Record;->events:I ++ :try_end_22 ++ .catchall {:try_start_c .. :try_end_22} :catchall_6c ++ ++ and-int/lit8 v3, v3, 0x1 ++ ++ if-eqz v3, :cond_14 ++ ++ const/4 v3, 0x4 ++ ++ :try_start_27 ++ iget-object v5, v2, Lcom/android/server/TelephonyRegistry$Record;->pkgForDebug:Ljava/lang/String; ++ ++ invoke-direct {p0, v3, v5}, Lcom/android/server/PrivacyTelephonyRegistry;->isPackageAllowed(ILjava/lang/String;)Z ++ ++ move-result v3 ++ ++ if-nez v3, :cond_6f ++ ++ const-string v3, "" ++ ++ const-string v5, "" ++ ++ const-string v6, "" ++ ++ invoke-virtual {p1, v3, v5, v6}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V ++ ++ const-string v3, "PrivacyTelephonyRegistry" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "package: " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ iget-object v6, v2, Lcom/android/server/TelephonyRegistry$Record;->pkgForDebug:Ljava/lang/String; ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ const-string v6, " blocked for Cellinfo" ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :goto_58 ++ iget-object v3, v2, Lcom/android/server/TelephonyRegistry$Record;->callback:Lcom/android/internal/telephony/IPhoneStateListener; ++ ++ new-instance v5, Landroid/telephony/ServiceState; ++ ++ invoke-direct {v5, p1}, Landroid/telephony/ServiceState;->(Landroid/telephony/ServiceState;)V ++ ++ invoke-interface {v3, v5}, Lcom/android/internal/telephony/IPhoneStateListener;->onServiceStateChanged(Landroid/telephony/ServiceState;)V ++ :try_end_62 ++ .catchall {:try_start_27 .. :try_end_62} :catchall_6c ++ .catch Landroid/os/RemoteException; {:try_start_27 .. :try_end_62} :catch_63 ++ ++ goto :goto_14 ++ ++ :catch_63 ++ move-exception v0 ++ ++ :try_start_64 ++ iget-object v3, p0, Lcom/android/server/PrivacyTelephonyRegistry;->mRemoveList:Ljava/util/ArrayList; ++ ++ iget-object v5, v2, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; ++ ++ invoke-virtual {v3, v5}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z ++ ++ goto :goto_14 ++ ++ :catchall_6c ++ move-exception v3 ++ ++ monitor-exit v4 ++ :try_end_6e ++ .catchall {:try_start_64 .. :try_end_6e} :catchall_6c ++ ++ throw v3 ++ ++ :cond_6f ++ :try_start_6f ++ const-string v3, "PrivacyTelephonyRegistry" ++ ++ new-instance v5, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v5}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v6, "package: " ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ iget-object v6, v2, Lcom/android/server/TelephonyRegistry$Record;->pkgForDebug:Ljava/lang/String; ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ const-string v6, " allowed for Cellinfo" ++ ++ invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-static {v3, v5}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_8f ++ .catchall {:try_start_6f .. :try_end_8f} :catchall_6c ++ .catch Landroid/os/RemoteException; {:try_start_6f .. :try_end_8f} :catch_63 ++ ++ goto :goto_58 ++ ++ :cond_90 ++ :try_start_90 ++ invoke-virtual {p0}, Lcom/android/server/PrivacyTelephonyRegistry;->handleRemoveListLocked()V ++ ++ monitor-exit v4 ++ :try_end_94 ++ .catchall {:try_start_90 .. :try_end_94} :catchall_6c ++ ++ invoke-virtual {p0, p1}, Lcom/android/server/PrivacyTelephonyRegistry;->broadcastServiceStateChanged(Landroid/telephony/ServiceState;)V ++ ++ goto/16 :goto_8 ++.end method ++ ++.method public bridge synthetic notifySignalStrength(Landroid/telephony/SignalStrength;)V ++ .registers 2 ++ ++ invoke-super {p0, p1}, Lcom/android/server/TelephonyRegistry;->notifySignalStrength(Landroid/telephony/SignalStrength;)V ++ ++ return-void ++.end method ++ ++.method public bridge synthetic systemReady()V ++ .registers 1 ++ ++ invoke-super {p0}, Lcom/android/server/TelephonyRegistry;->systemReady()V ++ ++ return-void ++.end method +diff -Npru stock-services/smali/com/android/server/ServerThread.smali pdroid-services/smali/com/android/server/ServerThread.smali +--- stock-services/smali/com/android/server/ServerThread.smali 2013-08-10 20:37:59.375214141 -0700 ++++ pdroid-services/smali/com/android/server/ServerThread.smali 2013-08-10 20:37:56.875214037 -0700 +@@ -24,6 +24,41 @@ + return-void + .end method + ++.method private addPrivacyService(Landroid/content/Context;)V ++ .registers 5 ++ ++ :try_start_0 ++ const-string v1, "SystemServer" ++ ++ const-string v2, "Privacy Service" ++ ++ invoke-static {v1, v2}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const-string v1, "privacy" ++ ++ new-instance v2, Landroid/privacy/PrivacySettingsManagerService; ++ ++ invoke-direct {v2, p1}, Landroid/privacy/PrivacySettingsManagerService;->(Landroid/content/Context;)V ++ ++ invoke-static {v1, v2}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V ++ :try_end_11 ++ .catch Ljava/lang/Throwable; {:try_start_0 .. :try_end_11} :catch_12 ++ ++ :goto_11 ++ return-void ++ ++ :catch_12 ++ move-exception v0 ++ ++ const-string v1, "SystemServer" ++ ++ const-string v2, "Failure starting Privacy Service" ++ ++ invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I ++ ++ goto :goto_11 ++.end method ++ + .method static final startSystemUi(Landroid/content/Context;)V + .registers 5 + +@@ -135,7 +170,7 @@ + + const/16 v9, 0x31 + +- if-ne v7, v9, :cond_7ad ++ if-ne v7, v9, :cond_7b2 + + const/16 v110, 0x1 + +@@ -146,7 +181,7 @@ + + const/4 v9, 0x1 + +- if-le v7, v9, :cond_7b1 ++ if-le v7, v9, :cond_7b6 + + const/4 v7, 0x1 + +@@ -182,7 +217,7 @@ + + move-result v7 + +- if-eqz v7, :cond_7b5 ++ if-eqz v7, :cond_7ba + + const/16 v84, 0x0 + +@@ -336,7 +371,7 @@ + + invoke-direct/range {v92 .. v92}, Lcom/android/server/pm/Installer;->()V + :try_end_ff +- .catch Ljava/lang/RuntimeException; {:try_start_f3 .. :try_end_ff} :catch_b3c ++ .catch Ljava/lang/RuntimeException; {:try_start_f3 .. :try_end_ff} :catch_b41 + + :try_start_ff + invoke-virtual/range {v92 .. v92}, Lcom/android/server/pm/Installer;->ping()Z +@@ -351,7 +386,7 @@ + + invoke-direct {v4}, Lcom/android/server/power/PowerManagerService;->()V + :try_end_10e +- .catch Ljava/lang/RuntimeException; {:try_start_ff .. :try_end_10e} :catch_b4b ++ .catch Ljava/lang/RuntimeException; {:try_start_ff .. :try_end_10e} :catch_b50 + + :try_start_10e + const-string v7, "power" +@@ -382,7 +417,7 @@ + + invoke-direct {v10, v5, v0, v1}, Lcom/android/server/display/DisplayManagerService;->(Landroid/content/Context;Landroid/os/Handler;Landroid/os/Handler;)V + :try_end_12e +- .catch Ljava/lang/RuntimeException; {:try_start_10e .. :try_end_12e} :catch_b5c ++ .catch Ljava/lang/RuntimeException; {:try_start_10e .. :try_end_12e} :catch_b61 + + :try_start_12e + const-string v7, "display" +@@ -397,13 +432,13 @@ + + invoke-static {v7, v9}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I + +- new-instance v120, Lcom/android/server/TelephonyRegistry; ++ new-instance v120, Lcom/android/server/PrivacyTelephonyRegistry; + + move-object/from16 v0, v120 + +- invoke-direct {v0, v5}, Lcom/android/server/TelephonyRegistry;->(Landroid/content/Context;)V ++ invoke-direct {v0, v5}, Lcom/android/server/PrivacyTelephonyRegistry;->(Landroid/content/Context;)V + :try_end_142 +- .catch Ljava/lang/RuntimeException; {:try_start_12e .. :try_end_142} :catch_b6b ++ .catch Ljava/lang/RuntimeException; {:try_start_12e .. :try_end_142} :catch_b70 + + :try_start_142 + const-string v7, "telephony.registry" +@@ -465,7 +500,7 @@ + + move-result v7 + +- if-eqz v7, :cond_7bb ++ if-eqz v7, :cond_7c0 + + const-string v7, "SystemServer" + +@@ -477,7 +512,7 @@ + + :cond_18f + :goto_18f +- if-eqz v84, :cond_7d0 ++ if-eqz v84, :cond_7d5 + + const/4 v7, 0x1 + +@@ -488,7 +523,7 @@ + + invoke-static {v5, v0, v7, v1}, Lcom/android/server/pm/PackageManagerService;->main(Landroid/content/Context;Lcom/android/server/pm/Installer;ZZ)Landroid/content/pm/IPackageManager; + :try_end_199 +- .catch Ljava/lang/RuntimeException; {:try_start_142 .. :try_end_199} :catch_7df ++ .catch Ljava/lang/RuntimeException; {:try_start_142 .. :try_end_199} :catch_7e4 + + move-result-object v107 + +@@ -497,8 +532,8 @@ + :try_start_19c + invoke-interface/range {v107 .. v107}, Landroid/content/pm/IPackageManager;->isFirstBoot()Z + :try_end_19f +- .catch Landroid/os/RemoteException; {:try_start_19c .. :try_end_19f} :catch_ad4 +- .catch Ljava/lang/RuntimeException; {:try_start_19c .. :try_end_19f} :catch_7df ++ .catch Landroid/os/RemoteException; {:try_start_19c .. :try_end_19f} :catch_ad9 ++ .catch Ljava/lang/RuntimeException; {:try_start_19c .. :try_end_19f} :catch_7e4 + + move-result v87 + +@@ -542,7 +577,7 @@ + + iput-object v7, v0, Lcom/android/server/ServerThread;->mContentResolver:Landroid/content/ContentResolver; + :try_end_1cc +- .catch Ljava/lang/RuntimeException; {:try_start_1a0 .. :try_end_1cc} :catch_7df ++ .catch Ljava/lang/RuntimeException; {:try_start_1a0 .. :try_end_1cc} :catch_7e4 + + :try_start_1cc + const-string v7, "SystemServer" +@@ -557,8 +592,8 @@ + + invoke-direct {v0, v5}, Lcom/android/server/accounts/AccountManagerService;->(Landroid/content/Context;)V + :try_end_1da +- .catch Ljava/lang/Throwable; {:try_start_1cc .. :try_end_1da} :catch_7d3 +- .catch Ljava/lang/RuntimeException; {:try_start_1cc .. :try_end_1da} :catch_7df ++ .catch Ljava/lang/Throwable; {:try_start_1cc .. :try_end_1da} :catch_7d8 ++ .catch Ljava/lang/RuntimeException; {:try_start_1cc .. :try_end_1da} :catch_7e4 + + :try_start_1da + const-string v7, "account" +@@ -567,8 +602,8 @@ + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V + :try_end_1e1 +- .catch Ljava/lang/Throwable; {:try_start_1da .. :try_end_1e1} :catch_bc4 +- .catch Ljava/lang/RuntimeException; {:try_start_1da .. :try_end_1e1} :catch_b78 ++ .catch Ljava/lang/Throwable; {:try_start_1da .. :try_end_1e1} :catch_bc9 ++ .catch Ljava/lang/RuntimeException; {:try_start_1da .. :try_end_1e1} :catch_b7d + + move-object/from16 v59, v60 + +@@ -584,7 +619,7 @@ + + move/from16 v0, v84 + +- if-ne v0, v7, :cond_7fe ++ if-ne v0, v7, :cond_803 + + const/4 v7, 0x1 + +@@ -593,6 +628,10 @@ + + move-result-object v72 + ++ move-object/from16 v0, p0 ++ ++ invoke-direct {v0, v5}, Lcom/android/server/ServerThread;->addPrivacyService(Landroid/content/Context;)V ++ + const-string v7, "SystemServer" + + const-string v9, "System Content Providers" +@@ -610,10 +649,10 @@ + new-instance v6, Lcom/android/server/LightsService; + + invoke-direct {v6, v5}, Lcom/android/server/LightsService;->(Landroid/content/Context;)V +- :try_end_20a +- .catch Ljava/lang/RuntimeException; {:try_start_1e3 .. :try_end_20a} :catch_7df ++ :try_end_20f ++ .catch Ljava/lang/RuntimeException; {:try_start_1e3 .. :try_end_20f} :catch_7e4 + +- :try_start_20a ++ :try_start_20f + const-string v7, "SystemServer" + + const-string v9, "Battery Service" +@@ -623,10 +662,10 @@ + new-instance v8, Lcom/android/server/BatteryService; + + invoke-direct {v8, v5, v6}, Lcom/android/server/BatteryService;->(Landroid/content/Context;Lcom/android/server/LightsService;)V +- :try_end_216 +- .catch Ljava/lang/RuntimeException; {:try_start_20a .. :try_end_216} :catch_b89 ++ :try_end_21b ++ .catch Ljava/lang/RuntimeException; {:try_start_20f .. :try_end_21b} :catch_b8e + +- :try_start_216 ++ :try_start_21b + const-string v7, "battery" + + invoke-static {v7, v8}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +@@ -642,10 +681,10 @@ + move-object/from16 v0, v131 + + invoke-direct {v0, v5}, Lcom/android/server/VibratorService;->(Landroid/content/Context;)V +- :try_end_229 +- .catch Ljava/lang/RuntimeException; {:try_start_216 .. :try_end_229} :catch_b96 ++ :try_end_22e ++ .catch Ljava/lang/RuntimeException; {:try_start_21b .. :try_end_22e} :catch_b9b + +- :try_start_229 ++ :try_start_22e + const-string v7, "vibrator" + + move-object/from16 v0, v131 +@@ -671,10 +710,10 @@ + new-instance v15, Lcom/android/server/AlarmManagerService; + + invoke-direct {v15, v5}, Lcom/android/server/AlarmManagerService;->(Landroid/content/Context;)V +- :try_end_247 +- .catch Ljava/lang/RuntimeException; {:try_start_229 .. :try_end_247} :catch_ba1 ++ :try_end_24c ++ .catch Ljava/lang/RuntimeException; {:try_start_22e .. :try_end_24c} :catch_ba6 + +- :try_start_247 ++ :try_start_24c + const-string v7, "alarm" + + invoke-static {v7, v15}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +@@ -714,10 +753,10 @@ + move-object/from16 v1, v21 + + invoke-direct {v0, v5, v1}, Lcom/android/server/input/InputManagerService;->(Landroid/content/Context;Landroid/os/Handler;)V +- :try_end_271 +- .catch Ljava/lang/RuntimeException; {:try_start_247 .. :try_end_271} :catch_bae ++ :try_end_276 ++ .catch Ljava/lang/RuntimeException; {:try_start_24c .. :try_end_276} :catch_bb3 + +- :try_start_271 ++ :try_start_276 + const-string v7, "SystemServer" + + const-string v9, "Window Manager" +@@ -728,16 +767,16 @@ + + move/from16 v0, v84 + +- if-eq v0, v7, :cond_801 ++ if-eq v0, v7, :cond_806 + + const/16 v22, 0x1 + +- :goto_27f +- if-nez v87, :cond_805 ++ :goto_284 ++ if-nez v87, :cond_80a + + const/16 v23, 0x1 + +- :goto_283 ++ :goto_288 + move-object/from16 v16, v5 + + move-object/from16 v17, v4 +@@ -798,24 +837,24 @@ + + move-result v7 + +- if-eqz v7, :cond_809 ++ if-eqz v7, :cond_80e + + const-string v7, "SystemServer" + + const-string v9, "No Bluetooh Service (emulator)" + + invoke-static {v7, v9}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I +- :try_end_2cf +- .catch Ljava/lang/RuntimeException; {:try_start_271 .. :try_end_2cf} :catch_817 ++ :try_end_2d4 ++ .catch Ljava/lang/RuntimeException; {:try_start_276 .. :try_end_2d4} :catch_81c + +- :goto_2cf ++ :goto_2d4 + move-object/from16 v119, v120 + + move-object/from16 v130, v131 + + move-object/from16 v91, v92 + +- :goto_2d5 ++ :goto_2da + const/16 v76, 0x0 + + const/16 v117, 0x0 +@@ -842,9 +881,9 @@ + + move/from16 v0, v84 + +- if-eq v0, v7, :cond_31a ++ if-eq v0, v7, :cond_31f + +- :try_start_2f0 ++ :try_start_2f5 + const-string v7, "SystemServer" + + const-string v9, "Input Method Service" +@@ -858,22 +897,22 @@ + move-object/from16 v1, v139 + + invoke-direct {v0, v5, v1}, Lcom/android/server/InputMethodManagerService;->(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V +- :try_end_300 +- .catch Ljava/lang/Throwable; {:try_start_2f0 .. :try_end_300} :catch_84d ++ :try_end_305 ++ .catch Ljava/lang/Throwable; {:try_start_2f5 .. :try_end_305} :catch_852 + +- :try_start_300 ++ :try_start_305 + const-string v7, "input_method" + + move-object/from16 v0, v89 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_307 +- .catch Ljava/lang/Throwable; {:try_start_300 .. :try_end_307} :catch_b37 ++ :try_end_30c ++ .catch Ljava/lang/Throwable; {:try_start_305 .. :try_end_30c} :catch_b3c + + move-object/from16 v88, v89 + +- :goto_309 +- :try_start_309 ++ :goto_30e ++ :try_start_30e + const-string v7, "SystemServer" + + const-string v9, "Accessibility Manager" +@@ -887,24 +926,24 @@ + invoke-direct {v9, v5}, Lcom/android/server/accessibility/AccessibilityManagerService;->(Landroid/content/Context;)V + + invoke-static {v7, v9}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_31a +- .catch Ljava/lang/Throwable; {:try_start_309 .. :try_end_31a} :catch_859 ++ :try_end_31f ++ .catch Ljava/lang/Throwable; {:try_start_30e .. :try_end_31f} :catch_85e + +- :cond_31a +- :goto_31a +- :try_start_31a ++ :cond_31f ++ :goto_31f ++ :try_start_31f + invoke-virtual/range {v139 .. v139}, Lcom/android/server/wm/WindowManagerService;->displayReady()V +- :try_end_31d +- .catch Ljava/lang/Throwable; {:try_start_31a .. :try_end_31d} :catch_865 ++ :try_end_322 ++ .catch Ljava/lang/Throwable; {:try_start_31f .. :try_end_322} :catch_86a + +- :goto_31d +- :try_start_31d ++ :goto_322 ++ :try_start_322 + invoke-interface/range {v107 .. v107}, Landroid/content/pm/IPackageManager;->performBootDexOpt()V +- :try_end_320 +- .catch Ljava/lang/Throwable; {:try_start_31d .. :try_end_320} :catch_871 ++ :try_end_325 ++ .catch Ljava/lang/Throwable; {:try_start_322 .. :try_end_325} :catch_876 + +- :goto_320 +- :try_start_320 ++ :goto_325 ++ :try_start_325 + invoke-static {}, Landroid/app/ActivityManagerNative;->getDefault()Landroid/app/IActivityManager; + + move-result-object v7 +@@ -922,15 +961,15 @@ + const/4 v11, 0x0 + + invoke-interface {v7, v9, v11}, Landroid/app/IActivityManager;->showBootMessage(Ljava/lang/CharSequence;Z)V +- :try_end_333 +- .catch Landroid/os/RemoteException; {:try_start_320 .. :try_end_333} :catch_b34 ++ :try_end_338 ++ .catch Landroid/os/RemoteException; {:try_start_325 .. :try_end_338} :catch_b39 + +- :goto_333 ++ :goto_338 + const/4 v7, 0x1 + + move/from16 v0, v84 + +- if-eq v0, v7, :cond_bc9 ++ if-eq v0, v7, :cond_bce + + const-string v7, "0" + +@@ -944,9 +983,9 @@ + + move-result v7 + +- if-nez v7, :cond_35d ++ if-nez v7, :cond_362 + +- :try_start_346 ++ :try_start_34b + const-string v7, "SystemServer" + + const-string v9, "Mount Service" +@@ -958,23 +997,23 @@ + move-object/from16 v0, v100 + + invoke-direct {v0, v5}, Lcom/android/server/MountService;->(Landroid/content/Context;)V +- :try_end_354 +- .catch Ljava/lang/Throwable; {:try_start_346 .. :try_end_354} :catch_87d ++ :try_end_359 ++ .catch Ljava/lang/Throwable; {:try_start_34b .. :try_end_359} :catch_882 + +- :try_start_354 ++ :try_start_359 + const-string v7, "mount" + + move-object/from16 v0, v100 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_35b +- .catch Ljava/lang/Throwable; {:try_start_354 .. :try_end_35b} :catch_b2f ++ :try_end_360 ++ .catch Ljava/lang/Throwable; {:try_start_359 .. :try_end_360} :catch_b34 + + move-object/from16 v99, v100 + +- :cond_35d +- :goto_35d +- :try_start_35d ++ :cond_362 ++ :goto_362 ++ :try_start_362 + const-string v7, "SystemServer" + + const-string v9, "LockSettingsService" +@@ -986,22 +1025,22 @@ + move-object/from16 v0, v97 + + invoke-direct {v0, v5}, Lcom/android/server/LockSettingsService;->(Landroid/content/Context;)V +- :try_end_36b +- .catch Ljava/lang/Throwable; {:try_start_35d .. :try_end_36b} :catch_889 ++ :try_end_370 ++ .catch Ljava/lang/Throwable; {:try_start_362 .. :try_end_370} :catch_88e + +- :try_start_36b ++ :try_start_370 + const-string v7, "lock_settings" + + move-object/from16 v0, v97 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_372 +- .catch Ljava/lang/Throwable; {:try_start_36b .. :try_end_372} :catch_b2a ++ :try_end_377 ++ .catch Ljava/lang/Throwable; {:try_start_370 .. :try_end_377} :catch_b2f + + move-object/from16 v96, v97 + +- :goto_374 +- :try_start_374 ++ :goto_379 ++ :try_start_379 + const-string v7, "SystemServer" + + const-string v9, "Device Policy" +@@ -1013,22 +1052,22 @@ + move-object/from16 v0, v77 + + invoke-direct {v0, v5}, Lcom/android/server/DevicePolicyManagerService;->(Landroid/content/Context;)V +- :try_end_382 +- .catch Ljava/lang/Throwable; {:try_start_374 .. :try_end_382} :catch_895 ++ :try_end_387 ++ .catch Ljava/lang/Throwable; {:try_start_379 .. :try_end_387} :catch_89a + +- :try_start_382 ++ :try_start_387 + const-string v7, "device_policy" + + move-object/from16 v0, v77 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_389 +- .catch Ljava/lang/Throwable; {:try_start_382 .. :try_end_389} :catch_b25 ++ :try_end_38e ++ .catch Ljava/lang/Throwable; {:try_start_387 .. :try_end_38e} :catch_b2a + + move-object/from16 v76, v77 + +- :goto_38b +- :try_start_38b ++ :goto_390 ++ :try_start_390 + const-string v7, "SystemServer" + + const-string v9, "Status Bar" +@@ -1042,22 +1081,22 @@ + move-object/from16 v1, v139 + + invoke-direct {v0, v5, v1}, Lcom/android/server/StatusBarManagerService;->(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V +- :try_end_39b +- .catch Ljava/lang/Throwable; {:try_start_38b .. :try_end_39b} :catch_8a1 ++ :try_end_3a0 ++ .catch Ljava/lang/Throwable; {:try_start_390 .. :try_end_3a0} :catch_8a6 + +- :try_start_39b ++ :try_start_3a0 + const-string v7, "statusbar" + + move-object/from16 v0, v118 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_3a2 +- .catch Ljava/lang/Throwable; {:try_start_39b .. :try_end_3a2} :catch_b20 ++ :try_end_3a7 ++ .catch Ljava/lang/Throwable; {:try_start_3a0 .. :try_end_3a7} :catch_b25 + + move-object/from16 v117, v118 + +- :goto_3a4 +- :try_start_3a4 ++ :goto_3a9 ++ :try_start_3a9 + const-string v7, "SystemServer" + + const-string v9, "Clipboard Service" +@@ -1071,11 +1110,11 @@ + invoke-direct {v9, v5}, Lcom/android/server/ClipboardService;->(Landroid/content/Context;)V + + invoke-static {v7, v9}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_3b5 +- .catch Ljava/lang/Throwable; {:try_start_3a4 .. :try_end_3b5} :catch_8ad ++ :try_end_3ba ++ .catch Ljava/lang/Throwable; {:try_start_3a9 .. :try_end_3ba} :catch_8b2 + +- :goto_3b5 +- :try_start_3b5 ++ :goto_3ba ++ :try_start_3ba + const-string v7, "SystemServer" + + const-string v9, "NetworkManagement Service" +@@ -1091,11 +1130,11 @@ + move-object/from16 v0, v30 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_3c7 +- .catch Ljava/lang/Throwable; {:try_start_3b5 .. :try_end_3c7} :catch_8b9 ++ :try_end_3cc ++ .catch Ljava/lang/Throwable; {:try_start_3ba .. :try_end_3cc} :catch_8be + +- :goto_3c7 +- :try_start_3c7 ++ :goto_3cc ++ :try_start_3cc + const-string v7, "SystemServer" + + const-string v9, "Text Service Manager Service" +@@ -1107,22 +1146,22 @@ + move-object/from16 v0, v122 + + invoke-direct {v0, v5}, Lcom/android/server/TextServicesManagerService;->(Landroid/content/Context;)V +- :try_end_3d5 +- .catch Ljava/lang/Throwable; {:try_start_3c7 .. :try_end_3d5} :catch_8c5 ++ :try_end_3da ++ .catch Ljava/lang/Throwable; {:try_start_3cc .. :try_end_3da} :catch_8ca + +- :try_start_3d5 ++ :try_start_3da + const-string v7, "textservices" + + move-object/from16 v0, v122 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_3dc +- .catch Ljava/lang/Throwable; {:try_start_3d5 .. :try_end_3dc} :catch_b1b ++ :try_end_3e1 ++ .catch Ljava/lang/Throwable; {:try_start_3da .. :try_end_3e1} :catch_b20 + + move-object/from16 v121, v122 + +- :goto_3de +- :try_start_3de ++ :goto_3e3 ++ :try_start_3e3 + const-string v7, "SystemServer" + + const-string v9, "NetworkStats Service" +@@ -1136,22 +1175,22 @@ + move-object/from16 v1, v30 + + invoke-direct {v0, v5, v1, v15}, Lcom/android/server/net/NetworkStatsService;->(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/app/IAlarmManager;)V +- :try_end_3ee +- .catch Ljava/lang/Throwable; {:try_start_3de .. :try_end_3ee} :catch_8d1 ++ :try_end_3f3 ++ .catch Ljava/lang/Throwable; {:try_start_3e3 .. :try_end_3f3} :catch_8d6 + +- :try_start_3ee ++ :try_start_3f3 + const-string v7, "netstats" + + move-object/from16 v0, v102 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_3f5 +- .catch Ljava/lang/Throwable; {:try_start_3ee .. :try_end_3f5} :catch_b16 ++ :try_end_3fa ++ .catch Ljava/lang/Throwable; {:try_start_3f3 .. :try_end_3fa} :catch_b1b + + move-object/from16 v29, v102 + +- :goto_3f7 +- :try_start_3f7 ++ :goto_3fc ++ :try_start_3fc + const-string v7, "SystemServer" + + const-string v9, "NetworkPolicy Service" +@@ -1169,20 +1208,20 @@ + move-object/from16 v28, v4 + + invoke-direct/range {v25 .. v30}, Lcom/android/server/net/NetworkPolicyManagerService;->(Landroid/content/Context;Landroid/app/IActivityManager;Landroid/os/IPowerManager;Landroid/net/INetworkStatsService;Landroid/os/INetworkManagementService;)V +- :try_end_40b +- .catch Ljava/lang/Throwable; {:try_start_3f7 .. :try_end_40b} :catch_8dd ++ :try_end_410 ++ .catch Ljava/lang/Throwable; {:try_start_3fc .. :try_end_410} :catch_8e2 + +- :try_start_40b ++ :try_start_410 + const-string v7, "netpolicy" + + move-object/from16 v0, v25 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_412 +- .catch Ljava/lang/Throwable; {:try_start_40b .. :try_end_412} :catch_b13 ++ :try_end_417 ++ .catch Ljava/lang/Throwable; {:try_start_410 .. :try_end_417} :catch_b18 + +- :goto_412 +- :try_start_412 ++ :goto_417 ++ :try_start_417 + const-string v7, "SystemServer" + + const-string v9, "Wi-Fi P2pService" +@@ -1194,22 +1233,22 @@ + move-object/from16 v0, v138 + + invoke-direct {v0, v5}, Landroid/net/wifi/p2p/WifiP2pService;->(Landroid/content/Context;)V +- :try_end_420 +- .catch Ljava/lang/Throwable; {:try_start_412 .. :try_end_420} :catch_8eb ++ :try_end_425 ++ .catch Ljava/lang/Throwable; {:try_start_417 .. :try_end_425} :catch_8f0 + +- :try_start_420 ++ :try_start_425 + const-string v7, "wifip2p" + + move-object/from16 v0, v138 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_427 +- .catch Ljava/lang/Throwable; {:try_start_420 .. :try_end_427} :catch_b0e ++ :try_end_42c ++ .catch Ljava/lang/Throwable; {:try_start_425 .. :try_end_42c} :catch_b13 + + move-object/from16 v137, v138 + +- :goto_429 +- :try_start_429 ++ :goto_42e ++ :try_start_42e + const-string v7, "SystemServer" + + const-string v9, "Wi-Fi Service" +@@ -1221,22 +1260,22 @@ + move-object/from16 v0, v136 + + invoke-direct {v0, v5}, Lcom/android/server/wifi/WifiService;->(Landroid/content/Context;)V +- :try_end_437 +- .catch Ljava/lang/Throwable; {:try_start_429 .. :try_end_437} :catch_8f7 ++ :try_end_43c ++ .catch Ljava/lang/Throwable; {:try_start_42e .. :try_end_43c} :catch_8fc + +- :try_start_437 ++ :try_start_43c + const-string v7, "wifi" + + move-object/from16 v0, v136 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_43e +- .catch Ljava/lang/Throwable; {:try_start_437 .. :try_end_43e} :catch_b09 ++ :try_end_443 ++ .catch Ljava/lang/Throwable; {:try_start_43c .. :try_end_443} :catch_b0e + + move-object/from16 v135, v136 + +- :goto_440 +- :try_start_440 ++ :goto_445 ++ :try_start_445 + const-string v7, "SystemServer" + + const-string v9, "Connectivity Service" +@@ -1254,10 +1293,10 @@ + move-object/from16 v3, v25 + + invoke-direct {v0, v5, v1, v2, v3}, Lcom/android/server/ConnectivityService;->(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/net/INetworkStatsService;Landroid/net/INetworkPolicyManager;)V +- :try_end_454 +- .catch Ljava/lang/Throwable; {:try_start_440 .. :try_end_454} :catch_903 ++ :try_end_459 ++ .catch Ljava/lang/Throwable; {:try_start_445 .. :try_end_459} :catch_908 + +- :try_start_454 ++ :try_start_459 + const-string v7, "connectivity" + + move-object/from16 v0, v71 +@@ -1279,13 +1318,13 @@ + invoke-virtual/range {v135 .. v135}, Lcom/android/server/wifi/WifiService;->checkAndStartWifi()V + + invoke-virtual/range {v137 .. v137}, Landroid/net/wifi/p2p/WifiP2pService;->connectivityServiceReady()V +- :try_end_46f +- .catch Ljava/lang/Throwable; {:try_start_454 .. :try_end_46f} :catch_b04 ++ :try_end_474 ++ .catch Ljava/lang/Throwable; {:try_start_459 .. :try_end_474} :catch_b09 + + move-object/from16 v70, v71 + +- :goto_471 +- :try_start_471 ++ :goto_476 ++ :try_start_476 + const-string v7, "SystemServer" + + const-string v9, "Network Service Discovery Service" +@@ -1301,11 +1340,11 @@ + move-object/from16 v0, v115 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_483 +- .catch Ljava/lang/Throwable; {:try_start_471 .. :try_end_483} :catch_90f ++ :try_end_488 ++ .catch Ljava/lang/Throwable; {:try_start_476 .. :try_end_488} :catch_914 + +- :goto_483 +- :try_start_483 ++ :goto_488 ++ :try_start_488 + const-string v7, "SystemServer" + + const-string v9, "UpdateLock Service" +@@ -1319,34 +1358,34 @@ + invoke-direct {v9, v5}, Lcom/android/server/UpdateLockService;->(Landroid/content/Context;)V + + invoke-static {v7, v9}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_494 +- .catch Ljava/lang/Throwable; {:try_start_483 .. :try_end_494} :catch_91b ++ :try_end_499 ++ .catch Ljava/lang/Throwable; {:try_start_488 .. :try_end_499} :catch_920 + +- :goto_494 +- if-eqz v99, :cond_499 ++ :goto_499 ++ if-eqz v99, :cond_49e + + invoke-virtual/range {v99 .. v99}, Lcom/android/server/MountService;->waitForAsecScan()V + +- :cond_499 +- if-eqz v59, :cond_49e +- +- :try_start_49b +- invoke-virtual/range {v59 .. v59}, Lcom/android/server/accounts/AccountManagerService;->systemReady()V +- :try_end_49e +- .catch Ljava/lang/Throwable; {:try_start_49b .. :try_end_49e} :catch_927 +- + :cond_49e +- :goto_49e +- if-eqz v72, :cond_4a3 ++ if-eqz v59, :cond_4a3 + + :try_start_4a0 +- invoke-virtual/range {v72 .. v72}, Lcom/android/server/content/ContentService;->systemReady()V ++ invoke-virtual/range {v59 .. v59}, Lcom/android/server/accounts/AccountManagerService;->systemReady()V + :try_end_4a3 +- .catch Ljava/lang/Throwable; {:try_start_4a0 .. :try_end_4a3} :catch_933 ++ .catch Ljava/lang/Throwable; {:try_start_4a0 .. :try_end_4a3} :catch_92c + + :cond_4a3 + :goto_4a3 +- :try_start_4a3 ++ if-eqz v72, :cond_4a8 ++ ++ :try_start_4a5 ++ invoke-virtual/range {v72 .. v72}, Lcom/android/server/content/ContentService;->systemReady()V ++ :try_end_4a8 ++ .catch Ljava/lang/Throwable; {:try_start_4a5 .. :try_end_4a8} :catch_938 ++ ++ :cond_4a8 ++ :goto_4a8 ++ :try_start_4a8 + const-string v7, "SystemServer" + + const-string v9, "Notification Manager" +@@ -1360,10 +1399,10 @@ + move-object/from16 v1, v117 + + invoke-direct {v0, v5, v1, v6}, Lcom/android/server/NotificationManagerService;->(Landroid/content/Context;Lcom/android/server/StatusBarManagerService;Lcom/android/server/LightsService;)V +- :try_end_4b3 +- .catch Ljava/lang/Throwable; {:try_start_4a3 .. :try_end_4b3} :catch_93f ++ :try_end_4b8 ++ .catch Ljava/lang/Throwable; {:try_start_4a8 .. :try_end_4b8} :catch_944 + +- :try_start_4b3 ++ :try_start_4b8 + const-string v7, "notification" + + move-object/from16 v0, v106 +@@ -1375,13 +1414,13 @@ + move-object/from16 v1, v106 + + invoke-virtual {v0, v1}, Lcom/android/server/net/NetworkPolicyManagerService;->bindNotificationManager(Landroid/app/INotificationManager;)V +- :try_end_4c1 +- .catch Ljava/lang/Throwable; {:try_start_4b3 .. :try_end_4c1} :catch_aff ++ :try_end_4c6 ++ .catch Ljava/lang/Throwable; {:try_start_4b8 .. :try_end_4c6} :catch_b04 + + move-object/from16 v105, v106 + +- :goto_4c3 +- :try_start_4c3 ++ :goto_4c8 ++ :try_start_4c8 + const-string v7, "SystemServer" + + const-string v9, "Device Storage Monitor" +@@ -1395,11 +1434,11 @@ + invoke-direct {v9, v5}, Lcom/android/server/DeviceStorageMonitorService;->(Landroid/content/Context;)V + + invoke-static {v7, v9}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_4d4 +- .catch Ljava/lang/Throwable; {:try_start_4c3 .. :try_end_4d4} :catch_94b ++ :try_end_4d9 ++ .catch Ljava/lang/Throwable; {:try_start_4c8 .. :try_end_4d9} :catch_950 + +- :goto_4d4 +- :try_start_4d4 ++ :goto_4d9 ++ :try_start_4d9 + const-string v7, "SystemServer" + + const-string v9, "Location Manager" +@@ -1411,22 +1450,22 @@ + move-object/from16 v0, v95 + + invoke-direct {v0, v5}, Lcom/android/server/LocationManagerService;->(Landroid/content/Context;)V +- :try_end_4e2 +- .catch Ljava/lang/Throwable; {:try_start_4d4 .. :try_end_4e2} :catch_957 ++ :try_end_4e7 ++ .catch Ljava/lang/Throwable; {:try_start_4d9 .. :try_end_4e7} :catch_95c + +- :try_start_4e2 ++ :try_start_4e7 + const-string v7, "location" + + move-object/from16 v0, v95 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_4e9 +- .catch Ljava/lang/Throwable; {:try_start_4e2 .. :try_end_4e9} :catch_afa ++ :try_end_4ee ++ .catch Ljava/lang/Throwable; {:try_start_4e7 .. :try_end_4ee} :catch_aff + + move-object/from16 v94, v95 + +- :goto_4eb +- :try_start_4eb ++ :goto_4f0 ++ :try_start_4f0 + const-string v7, "SystemServer" + + const-string v9, "Country Detector" +@@ -1438,22 +1477,22 @@ + move-object/from16 v0, v74 + + invoke-direct {v0, v5}, Lcom/android/server/CountryDetectorService;->(Landroid/content/Context;)V +- :try_end_4f9 +- .catch Ljava/lang/Throwable; {:try_start_4eb .. :try_end_4f9} :catch_963 ++ :try_end_4fe ++ .catch Ljava/lang/Throwable; {:try_start_4f0 .. :try_end_4fe} :catch_968 + +- :try_start_4f9 ++ :try_start_4fe + const-string v7, "country_detector" + + move-object/from16 v0, v74 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_500 +- .catch Ljava/lang/Throwable; {:try_start_4f9 .. :try_end_500} :catch_af5 ++ :try_end_505 ++ .catch Ljava/lang/Throwable; {:try_start_4fe .. :try_end_505} :catch_afa + + move-object/from16 v73, v74 + +- :goto_502 +- :try_start_502 ++ :goto_507 ++ :try_start_507 + const-string v7, "SystemServer" + + const-string v9, "Search Service" +@@ -1467,11 +1506,11 @@ + invoke-direct {v9, v5}, Lcom/android/server/search/SearchManagerService;->(Landroid/content/Context;)V + + invoke-static {v7, v9}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_513 +- .catch Ljava/lang/Throwable; {:try_start_502 .. :try_end_513} :catch_96f ++ :try_end_518 ++ .catch Ljava/lang/Throwable; {:try_start_507 .. :try_end_518} :catch_974 + +- :goto_513 +- :try_start_513 ++ :goto_518 ++ :try_start_518 + const-string v7, "SystemServer" + + const-string v9, "DropBox Service" +@@ -1491,10 +1530,10 @@ + invoke-direct {v9, v5, v11}, Lcom/android/server/DropBoxManagerService;->(Landroid/content/Context;Ljava/io/File;)V + + invoke-static {v7, v9}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_52b +- .catch Ljava/lang/Throwable; {:try_start_513 .. :try_end_52b} :catch_97b ++ :try_end_530 ++ .catch Ljava/lang/Throwable; {:try_start_518 .. :try_end_530} :catch_980 + +- :goto_52b ++ :goto_530 + invoke-virtual {v5}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; + + move-result-object v7 +@@ -1505,38 +1544,38 @@ + + move-result v7 + +- if-eqz v7, :cond_551 ++ if-eqz v7, :cond_556 + +- :try_start_538 ++ :try_start_53d + const-string v7, "SystemServer" + + const-string v9, "Wallpaper Service" + + invoke-static {v7, v9}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I + +- if-nez v33, :cond_551 ++ if-nez v33, :cond_556 + + new-instance v134, Lcom/android/server/WallpaperManagerService; + + move-object/from16 v0, v134 + + invoke-direct {v0, v5}, Lcom/android/server/WallpaperManagerService;->(Landroid/content/Context;)V +- :try_end_548 +- .catch Ljava/lang/Throwable; {:try_start_538 .. :try_end_548} :catch_987 ++ :try_end_54d ++ .catch Ljava/lang/Throwable; {:try_start_53d .. :try_end_54d} :catch_98c + +- :try_start_548 ++ :try_start_54d + const-string v7, "wallpaper" + + move-object/from16 v0, v134 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_54f +- .catch Ljava/lang/Throwable; {:try_start_548 .. :try_end_54f} :catch_af0 ++ :try_end_554 ++ .catch Ljava/lang/Throwable; {:try_start_54d .. :try_end_554} :catch_af5 + + move-object/from16 v133, v134 + +- :cond_551 +- :goto_551 ++ :cond_556 ++ :goto_556 + const-string v7, "0" + + const-string v9, "system_init.startaudioservice" +@@ -1549,9 +1588,9 @@ + + move-result v7 + +- if-nez v7, :cond_570 ++ if-nez v7, :cond_575 + +- :try_start_55f ++ :try_start_564 + const-string v7, "SystemServer" + + const-string v9, "Audio Service" +@@ -1565,12 +1604,12 @@ + invoke-direct {v9, v5}, Landroid/media/AudioService;->(Landroid/content/Context;)V + + invoke-static {v7, v9}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_570 +- .catch Ljava/lang/Throwable; {:try_start_55f .. :try_end_570} :catch_993 ++ :try_end_575 ++ .catch Ljava/lang/Throwable; {:try_start_564 .. :try_end_575} :catch_998 + +- :cond_570 +- :goto_570 +- :try_start_570 ++ :cond_575 ++ :goto_575 ++ :try_start_575 + const-string v7, "SystemServer" + + const-string v9, "Dock Observer" +@@ -1582,13 +1621,13 @@ + move-object/from16 v0, v80 + + invoke-direct {v0, v5}, Lcom/android/server/DockObserver;->(Landroid/content/Context;)V +- :try_end_57e +- .catch Ljava/lang/Throwable; {:try_start_570 .. :try_end_57e} :catch_99f ++ :try_end_583 ++ .catch Ljava/lang/Throwable; {:try_start_575 .. :try_end_583} :catch_9a4 + + move-object/from16 v79, v80 + +- :goto_580 +- :try_start_580 ++ :goto_585 ++ :try_start_585 + const-string v7, "SystemServer" + + const-string v9, "Wired Accessory Manager" +@@ -1604,11 +1643,11 @@ + move-object/from16 v0, v19 + + invoke-virtual {v0, v7}, Lcom/android/server/input/InputManagerService;->setWiredAccessoryCallbacks(Lcom/android/server/input/InputManagerService$WiredAccessoryCallbacks;)V +- :try_end_593 +- .catch Ljava/lang/Throwable; {:try_start_580 .. :try_end_593} :catch_9ab ++ :try_end_598 ++ .catch Ljava/lang/Throwable; {:try_start_585 .. :try_end_598} :catch_9b0 + +- :goto_593 +- :try_start_593 ++ :goto_598 ++ :try_start_598 + const-string v7, "SystemServer" + + const-string v9, "USB Service" +@@ -1620,22 +1659,22 @@ + move-object/from16 v0, v129 + + invoke-direct {v0, v5}, Lcom/android/server/usb/UsbService;->(Landroid/content/Context;)V +- :try_end_5a1 +- .catch Ljava/lang/Throwable; {:try_start_593 .. :try_end_5a1} :catch_9b7 ++ :try_end_5a6 ++ .catch Ljava/lang/Throwable; {:try_start_598 .. :try_end_5a6} :catch_9bc + +- :try_start_5a1 ++ :try_start_5a6 + const-string v7, "usb" + + move-object/from16 v0, v129 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_5a8 +- .catch Ljava/lang/Throwable; {:try_start_5a1 .. :try_end_5a8} :catch_aeb ++ :try_end_5ad ++ .catch Ljava/lang/Throwable; {:try_start_5a6 .. :try_end_5ad} :catch_af0 + + move-object/from16 v128, v129 + +- :goto_5aa +- :try_start_5aa ++ :goto_5af ++ :try_start_5af + const-string v7, "SystemServer" + + const-string v9, "Serial Service" +@@ -1647,22 +1686,22 @@ + move-object/from16 v0, v114 + + invoke-direct {v0, v5}, Lcom/android/server/SerialService;->(Landroid/content/Context;)V +- :try_end_5b8 +- .catch Ljava/lang/Throwable; {:try_start_5aa .. :try_end_5b8} :catch_9c3 ++ :try_end_5bd ++ .catch Ljava/lang/Throwable; {:try_start_5af .. :try_end_5bd} :catch_9c8 + +- :try_start_5b8 ++ :try_start_5bd + const-string v7, "serial" + + move-object/from16 v0, v114 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_5bf +- .catch Ljava/lang/Throwable; {:try_start_5b8 .. :try_end_5bf} :catch_ae6 ++ :try_end_5c4 ++ .catch Ljava/lang/Throwable; {:try_start_5bd .. :try_end_5c4} :catch_aeb + + move-object/from16 v113, v114 + +- :goto_5c1 +- :try_start_5c1 ++ :goto_5c6 ++ :try_start_5c6 + const-string v7, "SystemServer" + + const-string v9, "Twilight Service" +@@ -1674,13 +1713,13 @@ + move-object/from16 v0, v124 + + invoke-direct {v0, v5}, Lcom/android/server/TwilightService;->(Landroid/content/Context;)V +- :try_end_5cf +- .catch Ljava/lang/Throwable; {:try_start_5c1 .. :try_end_5cf} :catch_9cf ++ :try_end_5d4 ++ .catch Ljava/lang/Throwable; {:try_start_5c6 .. :try_end_5d4} :catch_9d4 + + move-object/from16 v123, v124 + +- :goto_5d1 +- :try_start_5d1 ++ :goto_5d6 ++ :try_start_5d6 + const-string v7, "SystemServer" + + const-string v9, "UI Mode Manager Service" +@@ -1694,13 +1733,13 @@ + move-object/from16 v1, v123 + + invoke-direct {v0, v5, v1}, Lcom/android/server/UiModeManagerService;->(Landroid/content/Context;Lcom/android/server/TwilightService;)V +- :try_end_5e1 +- .catch Ljava/lang/Throwable; {:try_start_5d1 .. :try_end_5e1} :catch_9db ++ :try_end_5e6 ++ .catch Ljava/lang/Throwable; {:try_start_5d6 .. :try_end_5e6} :catch_9e0 + + move-object/from16 v126, v127 + +- :goto_5e3 +- :try_start_5e3 ++ :goto_5e8 ++ :try_start_5e8 + const-string v7, "SystemServer" + + const-string v9, "Backup Service" +@@ -1714,11 +1753,11 @@ + invoke-direct {v9, v5}, Lcom/android/server/BackupManagerService;->(Landroid/content/Context;)V + + invoke-static {v7, v9}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_5f4 +- .catch Ljava/lang/Throwable; {:try_start_5e3 .. :try_end_5f4} :catch_9e7 ++ :try_end_5f9 ++ .catch Ljava/lang/Throwable; {:try_start_5e8 .. :try_end_5f9} :catch_9ec + +- :goto_5f4 +- :try_start_5f4 ++ :goto_5f9 ++ :try_start_5f9 + const-string v7, "SystemServer" + + const-string v9, "AppWidget Service" +@@ -1730,22 +1769,22 @@ + move-object/from16 v0, v63 + + invoke-direct {v0, v5}, Lcom/android/server/AppWidgetService;->(Landroid/content/Context;)V +- :try_end_602 +- .catch Ljava/lang/Throwable; {:try_start_5f4 .. :try_end_602} :catch_9f3 ++ :try_end_607 ++ .catch Ljava/lang/Throwable; {:try_start_5f9 .. :try_end_607} :catch_9f8 + +- :try_start_602 ++ :try_start_607 + const-string v7, "appwidget" + + move-object/from16 v0, v63 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_609 +- .catch Ljava/lang/Throwable; {:try_start_602 .. :try_end_609} :catch_ae1 ++ :try_end_60e ++ .catch Ljava/lang/Throwable; {:try_start_607 .. :try_end_60e} :catch_ae6 + + move-object/from16 v62, v63 + +- :goto_60b +- :try_start_60b ++ :goto_610 ++ :try_start_610 + const-string v7, "SystemServer" + + const-string v9, "Recognition Service" +@@ -1757,13 +1796,13 @@ + move-object/from16 v0, v112 + + invoke-direct {v0, v5}, Lcom/android/server/RecognitionManagerService;->(Landroid/content/Context;)V +- :try_end_619 +- .catch Ljava/lang/Throwable; {:try_start_60b .. :try_end_619} :catch_9ff ++ :try_end_61e ++ .catch Ljava/lang/Throwable; {:try_start_610 .. :try_end_61e} :catch_a04 + + move-object/from16 v111, v112 + +- :goto_61b +- :try_start_61b ++ :goto_620 ++ :try_start_620 + const-string v7, "SystemServer" + + const-string v9, "DiskStats Service" +@@ -1777,11 +1816,11 @@ + invoke-direct {v9, v5}, Lcom/android/server/DiskStatsService;->(Landroid/content/Context;)V + + invoke-static {v7, v9}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_62c +- .catch Ljava/lang/Throwable; {:try_start_61b .. :try_end_62c} :catch_a0b ++ :try_end_631 ++ .catch Ljava/lang/Throwable; {:try_start_620 .. :try_end_631} :catch_a10 + +- :goto_62c +- :try_start_62c ++ :goto_631 ++ :try_start_631 + const-string v7, "SystemServer" + + const-string v9, "SamplingProfiler Service" +@@ -1795,11 +1834,11 @@ + invoke-direct {v9, v5}, Lcom/android/server/SamplingProfilerService;->(Landroid/content/Context;)V + + invoke-static {v7, v9}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_63d +- .catch Ljava/lang/Throwable; {:try_start_62c .. :try_end_63d} :catch_a17 ++ :try_end_642 ++ .catch Ljava/lang/Throwable; {:try_start_631 .. :try_end_642} :catch_a1c + +- :goto_63d +- :try_start_63d ++ :goto_642 ++ :try_start_642 + const-string v7, "SystemServer" + + const-string v9, "NetworkTimeUpdateService" +@@ -1811,13 +1850,13 @@ + move-object/from16 v0, v104 + + invoke-direct {v0, v5}, Lcom/android/server/NetworkTimeUpdateService;->(Landroid/content/Context;)V +- :try_end_64b +- .catch Ljava/lang/Throwable; {:try_start_63d .. :try_end_64b} :catch_a23 ++ :try_end_650 ++ .catch Ljava/lang/Throwable; {:try_start_642 .. :try_end_650} :catch_a28 + + move-object/from16 v103, v104 + +- :goto_64d +- :try_start_64d ++ :goto_652 ++ :try_start_652 + const-string v7, "SystemServer" + + const-string v9, "CommonTimeManagementService" +@@ -1829,22 +1868,22 @@ + move-object/from16 v0, v68 + + invoke-direct {v0, v5}, Lcom/android/server/CommonTimeManagementService;->(Landroid/content/Context;)V +- :try_end_65b +- .catch Ljava/lang/Throwable; {:try_start_64d .. :try_end_65b} :catch_a2f ++ :try_end_660 ++ .catch Ljava/lang/Throwable; {:try_start_652 .. :try_end_660} :catch_a34 + +- :try_start_65b ++ :try_start_660 + const-string v7, "commontime_management" + + move-object/from16 v0, v68 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_662 +- .catch Ljava/lang/Throwable; {:try_start_65b .. :try_end_662} :catch_adc ++ :try_end_667 ++ .catch Ljava/lang/Throwable; {:try_start_660 .. :try_end_667} :catch_ae1 + + move-object/from16 v67, v68 + +- :goto_664 +- :try_start_664 ++ :goto_669 ++ :try_start_669 + const-string v7, "SystemServer" + + const-string v9, "CertBlacklister" +@@ -1854,10 +1893,10 @@ + new-instance v7, Lcom/android/server/CertBlacklister; + + invoke-direct {v7, v5}, Lcom/android/server/CertBlacklister;->(Landroid/content/Context;)V +- :try_end_670 +- .catch Ljava/lang/Throwable; {:try_start_664 .. :try_end_670} :catch_a3b ++ :try_end_675 ++ .catch Ljava/lang/Throwable; {:try_start_669 .. :try_end_675} :catch_a40 + +- :goto_670 ++ :goto_675 + invoke-virtual {v5}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; + + move-result-object v7 +@@ -1868,9 +1907,9 @@ + + move-result v7 + +- if-eqz v7, :cond_696 ++ if-eqz v7, :cond_69b + +- :try_start_67d ++ :try_start_682 + const-string v7, "SystemServer" + + const-string v9, "Dreams Service" +@@ -1884,23 +1923,23 @@ + move-object/from16 v1, v21 + + invoke-direct {v0, v5, v1}, Lcom/android/server/dreams/DreamManagerService;->(Landroid/content/Context;Landroid/os/Handler;)V +- :try_end_68d +- .catch Ljava/lang/Throwable; {:try_start_67d .. :try_end_68d} :catch_a47 ++ :try_end_692 ++ .catch Ljava/lang/Throwable; {:try_start_682 .. :try_end_692} :catch_a4c + +- :try_start_68d ++ :try_start_692 + const-string v7, "dreams" + + move-object/from16 v0, v82 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_694 +- .catch Ljava/lang/Throwable; {:try_start_68d .. :try_end_694} :catch_ad7 ++ :try_end_699 ++ .catch Ljava/lang/Throwable; {:try_start_692 .. :try_end_699} :catch_adc + + move-object/from16 v81, v82 + +- :cond_696 +- :goto_696 +- :try_start_696 ++ :cond_69b ++ :goto_69b ++ :try_start_69b + const-string v7, "SystemServer" + + const-string v9, "AssetRedirectionManager Service" +@@ -1914,11 +1953,11 @@ + invoke-direct {v9, v5}, Lcom/android/server/AssetRedirectionManagerService;->(Landroid/content/Context;)V + + invoke-static {v7, v9}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_6a7 +- .catch Ljava/lang/Throwable; {:try_start_696 .. :try_end_6a7} :catch_a53 ++ :try_end_6ac ++ .catch Ljava/lang/Throwable; {:try_start_69b .. :try_end_6ac} :catch_a58 + +- :goto_6a7 +- :try_start_6a7 ++ :goto_6ac ++ :try_start_6ac + const-string v7, "SystemServer" + + const-string v9, "IdleMaintenanceService" +@@ -1928,15 +1967,15 @@ + new-instance v7, Lcom/android/server/IdleMaintenanceService; + + invoke-direct {v7, v5, v8}, Lcom/android/server/IdleMaintenanceService;->(Landroid/content/Context;Lcom/android/server/BatteryService;)V +- :try_end_6b3 +- .catch Ljava/lang/Throwable; {:try_start_6a7 .. :try_end_6b3} :catch_a5f ++ :try_end_6b8 ++ .catch Ljava/lang/Throwable; {:try_start_6ac .. :try_end_6b8} :catch_a64 + +- :goto_6b3 ++ :goto_6b8 + invoke-virtual/range {v139 .. v139}, Lcom/android/server/wm/WindowManagerService;->detectSafeMode()Z + + move-result v47 + +- if-eqz v47, :cond_a6b ++ if-eqz v47, :cond_a70 + + invoke-static {}, Lcom/android/server/am/ActivityManagerService;->self()Lcom/android/server/am/ActivityManagerService; + +@@ -1954,44 +1993,44 @@ + + invoke-virtual {v7}, Ldalvik/system/VMRuntime;->disableJitCompilation()V + +- :goto_6ca +- :try_start_6ca ++ :goto_6cf ++ :try_start_6cf + invoke-virtual/range {v130 .. v130}, Lcom/android/server/VibratorService;->systemReady()V +- :try_end_6cd +- .catch Ljava/lang/Throwable; {:try_start_6ca .. :try_end_6cd} :catch_a74 +- +- :goto_6cd +- :try_start_6cd +- invoke-virtual/range {v96 .. v96}, Lcom/android/server/LockSettingsService;->systemReady()V +- :try_end_6d0 +- .catch Ljava/lang/Throwable; {:try_start_6cd .. :try_end_6d0} :catch_a80 +- +- :goto_6d0 +- if-eqz v76, :cond_6d5 ++ :try_end_6d2 ++ .catch Ljava/lang/Throwable; {:try_start_6cf .. :try_end_6d2} :catch_a79 + ++ :goto_6d2 + :try_start_6d2 +- invoke-virtual/range {v76 .. v76}, Lcom/android/server/DevicePolicyManagerService;->systemReady()V ++ invoke-virtual/range {v96 .. v96}, Lcom/android/server/LockSettingsService;->systemReady()V + :try_end_6d5 +- .catch Ljava/lang/Throwable; {:try_start_6d2 .. :try_end_6d5} :catch_a8c ++ .catch Ljava/lang/Throwable; {:try_start_6d2 .. :try_end_6d5} :catch_a85 + +- :cond_6d5 + :goto_6d5 +- if-eqz v105, :cond_6da ++ if-eqz v76, :cond_6da + + :try_start_6d7 +- invoke-virtual/range {v105 .. v105}, Lcom/android/server/NotificationManagerService;->systemReady()V ++ invoke-virtual/range {v76 .. v76}, Lcom/android/server/DevicePolicyManagerService;->systemReady()V + :try_end_6da +- .catch Ljava/lang/Throwable; {:try_start_6d7 .. :try_end_6da} :catch_a98 ++ .catch Ljava/lang/Throwable; {:try_start_6d7 .. :try_end_6da} :catch_a91 + + :cond_6da + :goto_6da +- :try_start_6da ++ if-eqz v105, :cond_6df ++ ++ :try_start_6dc ++ invoke-virtual/range {v105 .. v105}, Lcom/android/server/NotificationManagerService;->systemReady()V ++ :try_end_6df ++ .catch Ljava/lang/Throwable; {:try_start_6dc .. :try_end_6df} :catch_a9d ++ ++ :cond_6df ++ :goto_6df ++ :try_start_6df + invoke-virtual/range {v139 .. v139}, Lcom/android/server/wm/WindowManagerService;->systemReady()V +- :try_end_6dd +- .catch Ljava/lang/Throwable; {:try_start_6da .. :try_end_6dd} :catch_aa4 ++ :try_end_6e2 ++ .catch Ljava/lang/Throwable; {:try_start_6df .. :try_end_6e2} :catch_aa9 + +- :goto_6dd +- if-eqz v47, :cond_6e6 ++ :goto_6e2 ++ if-eqz v47, :cond_6eb + + invoke-static {}, Lcom/android/server/am/ActivityManagerService;->self()Lcom/android/server/am/ActivityManagerService; + +@@ -1999,7 +2038,7 @@ + + invoke-virtual {v7}, Lcom/android/server/am/ActivityManagerService;->showSafeModeOverlay()V + +- :cond_6e6 ++ :cond_6eb + invoke-virtual/range {v139 .. v139}, Lcom/android/server/wm/WindowManagerService;->computeNewConfiguration()Landroid/content/res/Configuration; + + move-result-object v69 +@@ -2034,32 +2073,32 @@ + + invoke-virtual {v7, v0, v1}, Landroid/content/res/Resources;->updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;)V + +- :try_start_70b ++ :try_start_710 + move-object/from16 v0, v123 + + move-object/from16 v1, v81 + + invoke-virtual {v4, v0, v1}, Lcom/android/server/power/PowerManagerService;->systemReady(Lcom/android/server/TwilightService;Lcom/android/server/dreams/DreamManagerService;)V +- :try_end_712 +- .catch Ljava/lang/Throwable; {:try_start_70b .. :try_end_712} :catch_ab0 ++ :try_end_717 ++ .catch Ljava/lang/Throwable; {:try_start_710 .. :try_end_717} :catch_ab5 + +- :goto_712 +- :try_start_712 ++ :goto_717 ++ :try_start_717 + invoke-interface/range {v107 .. v107}, Landroid/content/pm/IPackageManager;->systemReady()V +- :try_end_715 +- .catch Ljava/lang/Throwable; {:try_start_712 .. :try_end_715} :catch_abc ++ :try_end_71a ++ .catch Ljava/lang/Throwable; {:try_start_717 .. :try_end_71a} :catch_ac1 + +- :goto_715 +- :try_start_715 ++ :goto_71a ++ :try_start_71a + move/from16 v0, v47 + + move/from16 v1, v24 + + invoke-virtual {v10, v0, v1}, Lcom/android/server/display/DisplayManagerService;->systemReady(ZZ)V +- :try_end_71c +- .catch Ljava/lang/Throwable; {:try_start_715 .. :try_end_71c} :catch_ac8 ++ :try_end_721 ++ .catch Ljava/lang/Throwable; {:try_start_71a .. :try_end_721} :catch_acd + +- :goto_71c ++ :goto_721 + new-instance v86, Landroid/content/IntentFilter; + + invoke-direct/range {v86 .. v86}, Landroid/content/IntentFilter;->()V +@@ -2174,7 +2213,7 @@ + + move-result v7 + +- if-eqz v7, :cond_7a2 ++ if-eqz v7, :cond_7a7 + + const-string v7, "SystemServer" + +@@ -2182,7 +2221,7 @@ + + invoke-static {v7, v9}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I + +- :cond_7a2 ++ :cond_7a7 + invoke-static {}, Landroid/os/Looper;->loop()V + + const-string v7, "SystemServer" +@@ -2193,25 +2232,25 @@ + + return-void + +- :cond_7ad ++ :cond_7b2 + const/16 v110, 0x0 + + goto/16 :goto_35 + +- :cond_7b1 ++ :cond_7b6 + const/16 v109, 0x0 + + goto/16 :goto_47 + +- :cond_7b5 ++ :cond_7ba + invoke-static/range {v85 .. v85}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + + move-result v84 + + goto/16 :goto_60 + +- :cond_7bb +- :try_start_7bb ++ :cond_7c0 ++ :try_start_7c0 + const-string v7, "1" + + move-object/from16 v0, v75 +@@ -2232,15 +2271,15 @@ + + goto/16 :goto_18f + +- :cond_7d0 ++ :cond_7d5 + const/4 v7, 0x0 + + goto/16 :goto_192 + +- :catch_7d3 ++ :catch_7d8 + move-exception v83 + +- :goto_7d4 ++ :goto_7d9 + const-string v7, "SystemServer" + + const-string v9, "Failure starting Account Manager" +@@ -2248,12 +2287,12 @@ + move-object/from16 v0, v83 + + invoke-static {v7, v9, v0}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I +- :try_end_7dd +- .catch Ljava/lang/RuntimeException; {:try_start_7bb .. :try_end_7dd} :catch_7df ++ :try_end_7e2 ++ .catch Ljava/lang/RuntimeException; {:try_start_7c0 .. :try_end_7e2} :catch_7e4 + + goto/16 :goto_1e3 + +- :catch_7df ++ :catch_7e4 + move-exception v83 + + move-object/from16 v119, v120 +@@ -2268,7 +2307,7 @@ + + move-object/from16 v91, v92 + +- :goto_7ec ++ :goto_7f1 + const-string v7, "System" + + const-string v9, "******************************************" +@@ -2283,40 +2322,40 @@ + + invoke-static {v7, v9, v0}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I + +- goto/16 :goto_2d5 ++ goto/16 :goto_2da + +- :cond_7fe ++ :cond_803 + const/4 v7, 0x0 + + goto/16 :goto_1f0 + +- :cond_801 ++ :cond_806 + const/16 v22, 0x0 + +- goto/16 :goto_27f ++ goto/16 :goto_284 + +- :cond_805 ++ :cond_80a + const/16 v23, 0x0 + +- goto/16 :goto_283 ++ goto/16 :goto_288 + +- :cond_809 ++ :cond_80e + const/4 v7, 0x1 + + move/from16 v0, v84 + +- if-ne v0, v7, :cond_81f ++ if-ne v0, v7, :cond_824 + +- :try_start_80e ++ :try_start_813 + const-string v7, "SystemServer" + + const-string v9, "No Bluetooth Service (factory test)" + + invoke-static {v7, v9}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I + +- goto/16 :goto_2cf ++ goto/16 :goto_2d4 + +- :catch_817 ++ :catch_81c + move-exception v83 + + move-object/from16 v119, v120 +@@ -2325,9 +2364,9 @@ + + move-object/from16 v91, v92 + +- goto :goto_7ec ++ goto :goto_7f1 + +- :cond_81f ++ :cond_824 + invoke-virtual {v5}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager; + + move-result-object v7 +@@ -2338,7 +2377,7 @@ + + move-result v7 + +- if-nez v7, :cond_834 ++ if-nez v7, :cond_839 + + const-string v7, "SystemServer" + +@@ -2346,9 +2385,9 @@ + + invoke-static {v7, v9}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I + +- goto/16 :goto_2cf ++ goto/16 :goto_2d4 + +- :cond_834 ++ :cond_839 + const-string v7, "SystemServer" + + const-string v9, "Bluetooth Manager Service" +@@ -2360,26 +2399,26 @@ + move-object/from16 v0, v66 + + invoke-direct {v0, v5}, Lcom/android/server/BluetoothManagerService;->(Landroid/content/Context;)V +- :try_end_842 +- .catch Ljava/lang/RuntimeException; {:try_start_80e .. :try_end_842} :catch_817 ++ :try_end_847 ++ .catch Ljava/lang/RuntimeException; {:try_start_813 .. :try_end_847} :catch_81c + +- :try_start_842 ++ :try_start_847 + const-string v7, "bluetooth_manager" + + move-object/from16 v0, v66 + + invoke-static {v7, v0}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +- :try_end_849 +- .catch Ljava/lang/RuntimeException; {:try_start_842 .. :try_end_849} :catch_bb9 ++ :try_end_84e ++ .catch Ljava/lang/RuntimeException; {:try_start_847 .. :try_end_84e} :catch_bbe + + move-object/from16 v65, v66 + +- goto/16 :goto_2cf ++ goto/16 :goto_2d4 + +- :catch_84d ++ :catch_852 + move-exception v83 + +- :goto_84e ++ :goto_853 + const-string v7, "starting Input Manager Service" + + move-object/from16 v0, p0 +@@ -2388,9 +2427,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_309 ++ goto/16 :goto_30e + +- :catch_859 ++ :catch_85e + move-exception v83 + + const-string v7, "starting Accessibility Manager" +@@ -2401,9 +2440,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_31a ++ goto/16 :goto_31f + +- :catch_865 ++ :catch_86a + move-exception v83 + + const-string v7, "making display ready" +@@ -2414,9 +2453,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_31d ++ goto/16 :goto_322 + +- :catch_871 ++ :catch_876 + move-exception v83 + + const-string v7, "performing boot dexopt" +@@ -2427,12 +2466,12 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_320 ++ goto/16 :goto_325 + +- :catch_87d ++ :catch_882 + move-exception v83 + +- :goto_87e ++ :goto_883 + const-string v7, "starting Mount Service" + + move-object/from16 v0, p0 +@@ -2441,12 +2480,12 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_35d ++ goto/16 :goto_362 + +- :catch_889 ++ :catch_88e + move-exception v83 + +- :goto_88a ++ :goto_88f + const-string v7, "starting LockSettingsService service" + + move-object/from16 v0, p0 +@@ -2455,12 +2494,12 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_374 ++ goto/16 :goto_379 + +- :catch_895 ++ :catch_89a + move-exception v83 + +- :goto_896 ++ :goto_89b + const-string v7, "starting DevicePolicyService" + + move-object/from16 v0, p0 +@@ -2469,12 +2508,12 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_38b ++ goto/16 :goto_390 + +- :catch_8a1 ++ :catch_8a6 + move-exception v83 + +- :goto_8a2 ++ :goto_8a7 + const-string v7, "starting StatusBarManagerService" + + move-object/from16 v0, p0 +@@ -2483,9 +2522,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_3a4 ++ goto/16 :goto_3a9 + +- :catch_8ad ++ :catch_8b2 + move-exception v83 + + const-string v7, "starting Clipboard Service" +@@ -2496,9 +2535,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_3b5 ++ goto/16 :goto_3ba + +- :catch_8b9 ++ :catch_8be + move-exception v83 + + const-string v7, "starting NetworkManagement Service" +@@ -2509,12 +2548,12 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_3c7 ++ goto/16 :goto_3cc + +- :catch_8c5 ++ :catch_8ca + move-exception v83 + +- :goto_8c6 ++ :goto_8cb + const-string v7, "starting Text Service Manager Service" + + move-object/from16 v0, p0 +@@ -2523,12 +2562,12 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_3de ++ goto/16 :goto_3e3 + +- :catch_8d1 ++ :catch_8d6 + move-exception v83 + +- :goto_8d2 ++ :goto_8d7 + const-string v7, "starting NetworkStats Service" + + move-object/from16 v0, p0 +@@ -2537,14 +2576,14 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_3f7 ++ goto/16 :goto_3fc + +- :catch_8dd ++ :catch_8e2 + move-exception v83 + + move-object/from16 v25, v101 + +- :goto_8e0 ++ :goto_8e5 + const-string v7, "starting NetworkPolicy Service" + + move-object/from16 v0, p0 +@@ -2553,12 +2592,12 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_412 ++ goto/16 :goto_417 + +- :catch_8eb ++ :catch_8f0 + move-exception v83 + +- :goto_8ec ++ :goto_8f1 + const-string v7, "starting Wi-Fi P2pService" + + move-object/from16 v0, p0 +@@ -2567,12 +2606,12 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_429 ++ goto/16 :goto_42e + +- :catch_8f7 ++ :catch_8fc + move-exception v83 + +- :goto_8f8 ++ :goto_8fd + const-string v7, "starting Wi-Fi Service" + + move-object/from16 v0, p0 +@@ -2581,12 +2620,12 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_440 ++ goto/16 :goto_445 + +- :catch_903 ++ :catch_908 + move-exception v83 + +- :goto_904 ++ :goto_909 + const-string v7, "starting Connectivity Service" + + move-object/from16 v0, p0 +@@ -2595,9 +2634,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_471 ++ goto/16 :goto_476 + +- :catch_90f ++ :catch_914 + move-exception v83 + + const-string v7, "starting Service Discovery Service" +@@ -2608,9 +2647,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_483 ++ goto/16 :goto_488 + +- :catch_91b ++ :catch_920 + move-exception v83 + + const-string v7, "starting UpdateLockService" +@@ -2621,9 +2660,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_494 ++ goto/16 :goto_499 + +- :catch_927 ++ :catch_92c + move-exception v83 + + const-string v7, "making Account Manager Service ready" +@@ -2634,9 +2673,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_49e ++ goto/16 :goto_4a3 + +- :catch_933 ++ :catch_938 + move-exception v83 + + const-string v7, "making Content Service ready" +@@ -2647,12 +2686,12 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_4a3 ++ goto/16 :goto_4a8 + +- :catch_93f ++ :catch_944 + move-exception v83 + +- :goto_940 ++ :goto_945 + const-string v7, "starting Notification Manager" + + move-object/from16 v0, p0 +@@ -2661,9 +2700,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_4c3 ++ goto/16 :goto_4c8 + +- :catch_94b ++ :catch_950 + move-exception v83 + + const-string v7, "starting DeviceStorageMonitor service" +@@ -2674,12 +2713,12 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_4d4 ++ goto/16 :goto_4d9 + +- :catch_957 ++ :catch_95c + move-exception v83 + +- :goto_958 ++ :goto_95d + const-string v7, "starting Location Manager" + + move-object/from16 v0, p0 +@@ -2688,12 +2727,12 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_4eb ++ goto/16 :goto_4f0 + +- :catch_963 ++ :catch_968 + move-exception v83 + +- :goto_964 ++ :goto_969 + const-string v7, "starting Country Detector" + + move-object/from16 v0, p0 +@@ -2702,9 +2741,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_502 ++ goto/16 :goto_507 + +- :catch_96f ++ :catch_974 + move-exception v83 + + const-string v7, "starting Search Service" +@@ -2715,9 +2754,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_513 ++ goto/16 :goto_518 + +- :catch_97b ++ :catch_980 + move-exception v83 + + const-string v7, "starting DropBoxManagerService" +@@ -2728,12 +2767,12 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_52b ++ goto/16 :goto_530 + +- :catch_987 ++ :catch_98c + move-exception v83 + +- :goto_988 ++ :goto_98d + const-string v7, "starting Wallpaper Service" + + move-object/from16 v0, p0 +@@ -2742,9 +2781,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_551 ++ goto/16 :goto_556 + +- :catch_993 ++ :catch_998 + move-exception v83 + + const-string v7, "starting Audio Service" +@@ -2755,9 +2794,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_570 ++ goto/16 :goto_575 + +- :catch_99f ++ :catch_9a4 + move-exception v83 + + const-string v7, "starting DockObserver" +@@ -2768,9 +2807,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_580 ++ goto/16 :goto_585 + +- :catch_9ab ++ :catch_9b0 + move-exception v83 + + const-string v7, "starting WiredAccessoryManager" +@@ -2781,12 +2820,12 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_593 ++ goto/16 :goto_598 + +- :catch_9b7 ++ :catch_9bc + move-exception v83 + +- :goto_9b8 ++ :goto_9bd + const-string v7, "starting UsbService" + + move-object/from16 v0, p0 +@@ -2795,12 +2834,12 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_5aa ++ goto/16 :goto_5af + +- :catch_9c3 ++ :catch_9c8 + move-exception v83 + +- :goto_9c4 ++ :goto_9c9 + const-string v7, "SystemServer" + + const-string v9, "Failure starting SerialService" +@@ -2809,9 +2848,9 @@ + + invoke-static {v7, v9, v0}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I + +- goto/16 :goto_5c1 ++ goto/16 :goto_5c6 + +- :catch_9cf ++ :catch_9d4 + move-exception v83 + + const-string v7, "starting TwilightService" +@@ -2822,9 +2861,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_5d1 ++ goto/16 :goto_5d6 + +- :catch_9db ++ :catch_9e0 + move-exception v83 + + const-string v7, "starting UiModeManagerService" +@@ -2835,9 +2874,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_5e3 ++ goto/16 :goto_5e8 + +- :catch_9e7 ++ :catch_9ec + move-exception v83 + + const-string v7, "SystemServer" +@@ -2848,12 +2887,12 @@ + + invoke-static {v7, v9, v0}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I + +- goto/16 :goto_5f4 ++ goto/16 :goto_5f9 + +- :catch_9f3 ++ :catch_9f8 + move-exception v83 + +- :goto_9f4 ++ :goto_9f9 + const-string v7, "starting AppWidget Service" + + move-object/from16 v0, p0 +@@ -2862,9 +2901,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_60b ++ goto/16 :goto_610 + +- :catch_9ff ++ :catch_a04 + move-exception v83 + + const-string v7, "starting Recognition Service" +@@ -2875,9 +2914,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_61b ++ goto/16 :goto_620 + +- :catch_a0b ++ :catch_a10 + move-exception v83 + + const-string v7, "starting DiskStats Service" +@@ -2888,9 +2927,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_62c ++ goto/16 :goto_631 + +- :catch_a17 ++ :catch_a1c + move-exception v83 + + const-string v7, "starting SamplingProfiler Service" +@@ -2901,9 +2940,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_63d ++ goto/16 :goto_642 + +- :catch_a23 ++ :catch_a28 + move-exception v83 + + const-string v7, "starting NetworkTimeUpdate service" +@@ -2914,12 +2953,12 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_64d ++ goto/16 :goto_652 + +- :catch_a2f ++ :catch_a34 + move-exception v83 + +- :goto_a30 ++ :goto_a35 + const-string v7, "starting CommonTimeManagementService service" + + move-object/from16 v0, p0 +@@ -2928,9 +2967,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_664 ++ goto/16 :goto_669 + +- :catch_a3b ++ :catch_a40 + move-exception v83 + + const-string v7, "starting CertBlacklister" +@@ -2941,12 +2980,12 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_670 ++ goto/16 :goto_675 + +- :catch_a47 ++ :catch_a4c + move-exception v83 + +- :goto_a48 ++ :goto_a4d + const-string v7, "starting DreamManagerService" + + move-object/from16 v0, p0 +@@ -2955,9 +2994,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_696 ++ goto/16 :goto_69b + +- :catch_a53 ++ :catch_a58 + move-exception v83 + + const-string v7, "SystemServer" +@@ -2968,9 +3007,9 @@ + + invoke-static {v7, v9, v0}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I + +- goto/16 :goto_6a7 ++ goto/16 :goto_6ac + +- :catch_a5f ++ :catch_a64 + move-exception v83 + + const-string v7, "starting IdleMaintenanceService" +@@ -2981,18 +3020,18 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_6b3 ++ goto/16 :goto_6b8 + +- :cond_a6b ++ :cond_a70 + invoke-static {}, Ldalvik/system/VMRuntime;->getRuntime()Ldalvik/system/VMRuntime; + + move-result-object v7 + + invoke-virtual {v7}, Ldalvik/system/VMRuntime;->startJitCompilation()V + +- goto/16 :goto_6ca ++ goto/16 :goto_6cf + +- :catch_a74 ++ :catch_a79 + move-exception v83 + + const-string v7, "making Vibrator Service ready" +@@ -3003,9 +3042,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_6cd ++ goto/16 :goto_6d2 + +- :catch_a80 ++ :catch_a85 + move-exception v83 + + const-string v7, "making Lock Settings Service ready" +@@ -3016,9 +3055,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_6d0 ++ goto/16 :goto_6d5 + +- :catch_a8c ++ :catch_a91 + move-exception v83 + + const-string v7, "making Device Policy Service ready" +@@ -3029,9 +3068,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_6d5 ++ goto/16 :goto_6da + +- :catch_a98 ++ :catch_a9d + move-exception v83 + + const-string v7, "making Notification Service ready" +@@ -3042,9 +3081,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_6da ++ goto/16 :goto_6df + +- :catch_aa4 ++ :catch_aa9 + move-exception v83 + + const-string v7, "making Window Manager Service ready" +@@ -3055,9 +3094,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_6dd ++ goto/16 :goto_6e2 + +- :catch_ab0 ++ :catch_ab5 + move-exception v83 + + const-string v7, "making Power Manager Service ready" +@@ -3068,9 +3107,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_712 ++ goto/16 :goto_717 + +- :catch_abc ++ :catch_ac1 + move-exception v83 + + const-string v7, "making Package Manager Service ready" +@@ -3081,9 +3120,9 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_715 ++ goto/16 :goto_71a + +- :catch_ac8 ++ :catch_acd + move-exception v83 + + const-string v7, "making Display Manager Service ready" +@@ -3094,157 +3133,157 @@ + + invoke-virtual {v0, v7, v1}, Lcom/android/server/ServerThread;->reportWtf(Ljava/lang/String;Ljava/lang/Throwable;)V + +- goto/16 :goto_71c ++ goto/16 :goto_721 + +- :catch_ad4 ++ :catch_ad9 + move-exception v7 + + goto/16 :goto_1a0 + +- :catch_ad7 ++ :catch_adc + move-exception v83 + + move-object/from16 v81, v82 + +- goto/16 :goto_a48 ++ goto/16 :goto_a4d + +- :catch_adc ++ :catch_ae1 + move-exception v83 + + move-object/from16 v67, v68 + +- goto/16 :goto_a30 ++ goto/16 :goto_a35 + +- :catch_ae1 ++ :catch_ae6 + move-exception v83 + + move-object/from16 v62, v63 + +- goto/16 :goto_9f4 ++ goto/16 :goto_9f9 + +- :catch_ae6 ++ :catch_aeb + move-exception v83 + + move-object/from16 v113, v114 + +- goto/16 :goto_9c4 ++ goto/16 :goto_9c9 + +- :catch_aeb ++ :catch_af0 + move-exception v83 + + move-object/from16 v128, v129 + +- goto/16 :goto_9b8 ++ goto/16 :goto_9bd + +- :catch_af0 ++ :catch_af5 + move-exception v83 + + move-object/from16 v133, v134 + +- goto/16 :goto_988 ++ goto/16 :goto_98d + +- :catch_af5 ++ :catch_afa + move-exception v83 + + move-object/from16 v73, v74 + +- goto/16 :goto_964 ++ goto/16 :goto_969 + +- :catch_afa ++ :catch_aff + move-exception v83 + + move-object/from16 v94, v95 + +- goto/16 :goto_958 ++ goto/16 :goto_95d + +- :catch_aff ++ :catch_b04 + move-exception v83 + + move-object/from16 v105, v106 + +- goto/16 :goto_940 ++ goto/16 :goto_945 + +- :catch_b04 ++ :catch_b09 + move-exception v83 + + move-object/from16 v70, v71 + +- goto/16 :goto_904 ++ goto/16 :goto_909 + +- :catch_b09 ++ :catch_b0e + move-exception v83 + + move-object/from16 v135, v136 + +- goto/16 :goto_8f8 ++ goto/16 :goto_8fd + +- :catch_b0e ++ :catch_b13 + move-exception v83 + + move-object/from16 v137, v138 + +- goto/16 :goto_8ec ++ goto/16 :goto_8f1 + +- :catch_b13 ++ :catch_b18 + move-exception v83 + +- goto/16 :goto_8e0 ++ goto/16 :goto_8e5 + +- :catch_b16 ++ :catch_b1b + move-exception v83 + + move-object/from16 v29, v102 + +- goto/16 :goto_8d2 ++ goto/16 :goto_8d7 + +- :catch_b1b ++ :catch_b20 + move-exception v83 + + move-object/from16 v121, v122 + +- goto/16 :goto_8c6 ++ goto/16 :goto_8cb + +- :catch_b20 ++ :catch_b25 + move-exception v83 + + move-object/from16 v117, v118 + +- goto/16 :goto_8a2 ++ goto/16 :goto_8a7 + +- :catch_b25 ++ :catch_b2a + move-exception v83 + + move-object/from16 v76, v77 + +- goto/16 :goto_896 ++ goto/16 :goto_89b + +- :catch_b2a ++ :catch_b2f + move-exception v83 + + move-object/from16 v96, v97 + +- goto/16 :goto_88a ++ goto/16 :goto_88f + +- :catch_b2f ++ :catch_b34 + move-exception v83 + + move-object/from16 v99, v100 + +- goto/16 :goto_87e ++ goto/16 :goto_883 + +- :catch_b34 ++ :catch_b39 + move-exception v7 + +- goto/16 :goto_333 ++ goto/16 :goto_338 + +- :catch_b37 ++ :catch_b3c + move-exception v83 + + move-object/from16 v88, v89 + +- goto/16 :goto_84e ++ goto/16 :goto_853 + +- :catch_b3c ++ :catch_b41 + move-exception v83 + + move-object/from16 v19, v90 +@@ -3259,9 +3298,9 @@ + + move-object/from16 v6, v93 + +- goto/16 :goto_7ec ++ goto/16 :goto_7f1 + +- :catch_b4b ++ :catch_b50 + move-exception v83 + + move-object/from16 v19, v90 +@@ -3278,9 +3317,9 @@ + + move-object/from16 v91, v92 + +- goto/16 :goto_7ec ++ goto/16 :goto_7f1 + +- :catch_b5c ++ :catch_b61 + move-exception v83 + + move-object/from16 v19, v90 +@@ -3295,9 +3334,9 @@ + + move-object/from16 v91, v92 + +- goto/16 :goto_7ec ++ goto/16 :goto_7f1 + +- :catch_b6b ++ :catch_b70 + move-exception v83 + + move-object/from16 v19, v90 +@@ -3310,9 +3349,9 @@ + + move-object/from16 v91, v92 + +- goto/16 :goto_7ec ++ goto/16 :goto_7f1 + +- :catch_b78 ++ :catch_b7d + move-exception v83 + + move-object/from16 v119, v120 +@@ -3329,9 +3368,9 @@ + + move-object/from16 v91, v92 + +- goto/16 :goto_7ec ++ goto/16 :goto_7f1 + +- :catch_b89 ++ :catch_b8e + move-exception v83 + + move-object/from16 v119, v120 +@@ -3344,9 +3383,9 @@ + + move-object/from16 v91, v92 + +- goto/16 :goto_7ec ++ goto/16 :goto_7f1 + +- :catch_b96 ++ :catch_b9b + move-exception v83 + + move-object/from16 v119, v120 +@@ -3357,9 +3396,9 @@ + + move-object/from16 v91, v92 + +- goto/16 :goto_7ec ++ goto/16 :goto_7f1 + +- :catch_ba1 ++ :catch_ba6 + move-exception v83 + + move-object/from16 v119, v120 +@@ -3372,9 +3411,9 @@ + + move-object/from16 v91, v92 + +- goto/16 :goto_7ec ++ goto/16 :goto_7f1 + +- :catch_bae ++ :catch_bb3 + move-exception v83 + + move-object/from16 v119, v120 +@@ -3385,9 +3424,9 @@ + + move-object/from16 v91, v92 + +- goto/16 :goto_7ec ++ goto/16 :goto_7f1 + +- :catch_bb9 ++ :catch_bbe + move-exception v83 + + move-object/from16 v119, v120 +@@ -3398,17 +3437,17 @@ + + move-object/from16 v91, v92 + +- goto/16 :goto_7ec ++ goto/16 :goto_7f1 + +- :catch_bc4 ++ :catch_bc9 + move-exception v83 + + move-object/from16 v59, v60 + +- goto/16 :goto_7d4 ++ goto/16 :goto_7d9 + +- :cond_bc9 ++ :cond_bce + move-object/from16 v25, v101 + +- goto/16 :goto_6b3 ++ goto/16 :goto_6b8 + .end method +diff -Npru stock-services/smali/com/android/server/TelephonyRegistry$1.smali pdroid-services/smali/com/android/server/TelephonyRegistry$1.smali +--- stock-services/smali/com/android/server/TelephonyRegistry$1.smali 2013-08-10 20:37:59.387214142 -0700 ++++ pdroid-services/smali/com/android/server/TelephonyRegistry$1.smali 2013-08-10 20:37:56.903214039 -0700 +@@ -36,7 +36,7 @@ + + iget v0, p1, Landroid/os/Message;->what:I + +- packed-switch v0, :pswitch_data_12 ++ packed-switch v0, :pswitch_data_10 + + :goto_5 + return-void +@@ -46,16 +46,13 @@ + + iget-object v1, p0, Lcom/android/server/TelephonyRegistry$1;->this$0:Lcom/android/server/TelephonyRegistry; + +- #getter for: Lcom/android/server/TelephonyRegistry;->mCellLocation:Landroid/os/Bundle; +- invoke-static {v1}, Lcom/android/server/TelephonyRegistry;->access$000(Lcom/android/server/TelephonyRegistry;)Landroid/os/Bundle; +- +- move-result-object v1 ++ iget-object v1, v1, Lcom/android/server/TelephonyRegistry;->mCellLocation:Landroid/os/Bundle; + + invoke-virtual {v0, v1}, Lcom/android/server/TelephonyRegistry;->notifyCellLocation(Landroid/os/Bundle;)V + + goto :goto_5 + +- :pswitch_data_12 ++ :pswitch_data_10 + .packed-switch 0x1 + :pswitch_6 + .end packed-switch +diff -Npru stock-services/smali/com/android/server/TelephonyRegistry$2.smali pdroid-services/smali/com/android/server/TelephonyRegistry$2.smali +--- stock-services/smali/com/android/server/TelephonyRegistry$2.smali 2013-08-10 20:37:59.387214142 -0700 ++++ pdroid-services/smali/com/android/server/TelephonyRegistry$2.smali 2013-08-10 20:37:56.903214039 -0700 +@@ -51,14 +51,14 @@ + iget-object v1, p0, Lcom/android/server/TelephonyRegistry$2;->this$0:Lcom/android/server/TelephonyRegistry; + + #getter for: Lcom/android/server/TelephonyRegistry;->mHandler:Landroid/os/Handler; +- invoke-static {v1}, Lcom/android/server/TelephonyRegistry;->access$100(Lcom/android/server/TelephonyRegistry;)Landroid/os/Handler; ++ invoke-static {v1}, Lcom/android/server/TelephonyRegistry;->access$000(Lcom/android/server/TelephonyRegistry;)Landroid/os/Handler; + + move-result-object v1 + + iget-object v2, p0, Lcom/android/server/TelephonyRegistry$2;->this$0:Lcom/android/server/TelephonyRegistry; + + #getter for: Lcom/android/server/TelephonyRegistry;->mHandler:Landroid/os/Handler; +- invoke-static {v2}, Lcom/android/server/TelephonyRegistry;->access$100(Lcom/android/server/TelephonyRegistry;)Landroid/os/Handler; ++ invoke-static {v2}, Lcom/android/server/TelephonyRegistry;->access$000(Lcom/android/server/TelephonyRegistry;)Landroid/os/Handler; + + move-result-object v2 + +diff -Npru stock-services/smali/com/android/server/TelephonyRegistry$Record.smali pdroid-services/smali/com/android/server/TelephonyRegistry$Record.smali +--- stock-services/smali/com/android/server/TelephonyRegistry$Record.smali 2013-08-10 20:37:59.387214142 -0700 ++++ pdroid-services/smali/com/android/server/TelephonyRegistry$Record.smali 2013-08-10 20:37:56.903214039 -0700 +@@ -1,4 +1,4 @@ +-.class Lcom/android/server/TelephonyRegistry$Record; ++.class public Lcom/android/server/TelephonyRegistry$Record; + .super Ljava/lang/Object; + .source "TelephonyRegistry.java" + +@@ -9,7 +9,7 @@ + .end annotation + + .annotation system Ldalvik/annotation/InnerClass; +- accessFlags = 0xa ++ accessFlags = 0x9 + name = "Record" + .end annotation + +@@ -27,21 +27,13 @@ + + + # direct methods +-.method private constructor ()V ++.method public constructor ()V + .registers 1 + + invoke-direct {p0}, Ljava/lang/Object;->()V + + return-void + .end method +- +-.method synthetic constructor (Lcom/android/server/TelephonyRegistry$1;)V +- .registers 2 +- +- invoke-direct {p0}, Lcom/android/server/TelephonyRegistry$Record;->()V +- +- return-void +-.end method + + + # virtual methods +diff -Npru stock-services/smali/com/android/server/TelephonyRegistry.smali pdroid-services/smali/com/android/server/TelephonyRegistry.smali +--- stock-services/smali/com/android/server/TelephonyRegistry.smali 2013-08-10 20:37:59.391214142 -0700 ++++ pdroid-services/smali/com/android/server/TelephonyRegistry.smali 2013-08-10 20:37:56.847214037 -0700 +@@ -28,13 +28,13 @@ + + .field private final mBroadcastReceiver:Landroid/content/BroadcastReceiver; + +-.field private mCallForwarding:Z ++.field protected mCallForwarding:Z + +-.field private mCallIncomingNumber:Ljava/lang/String; ++.field protected mCallIncomingNumber:Ljava/lang/String; + +-.field private mCallState:I ++.field protected mCallState:I + +-.field private mCellInfo:Ljava/util/List; ++.field protected mCellInfo:Ljava/util/List; + .annotation system Ldalvik/annotation/Signature; + value = { + "Ljava/util/List", +@@ -45,7 +45,7 @@ + .end annotation + .end field + +-.field private mCellLocation:Landroid/os/Bundle; ++.field protected mCellLocation:Landroid/os/Bundle; + + .field private mConnectedApns:Ljava/util/ArrayList; + .annotation system Ldalvik/annotation/Signature; +@@ -58,9 +58,9 @@ + .end annotation + .end field + +-.field private final mContext:Landroid/content/Context; ++.field protected final mContext:Landroid/content/Context; + +-.field private mDataActivity:I ++.field protected mDataActivity:I + + .field private mDataConnectionApn:Ljava/lang/String; + +@@ -68,21 +68,21 @@ + + .field private mDataConnectionLinkProperties:Landroid/net/LinkProperties; + +-.field private mDataConnectionNetworkType:I ++.field protected mDataConnectionNetworkType:I + + .field private mDataConnectionPossible:Z + + .field private mDataConnectionReason:Ljava/lang/String; + +-.field private mDataConnectionState:I ++.field protected mDataConnectionState:I + + .field private final mHandler:Landroid/os/Handler; + +-.field private mMessageWaiting:Z ++.field protected mMessageWaiting:Z + +-.field private mOtaspMode:I ++.field protected mOtaspMode:I + +-.field private final mRecords:Ljava/util/ArrayList; ++.field protected final mRecords:Ljava/util/ArrayList; + .annotation system Ldalvik/annotation/Signature; + value = { + "Ljava/util/ArrayList", +@@ -93,7 +93,7 @@ + .end annotation + .end field + +-.field private final mRemoveList:Ljava/util/ArrayList; ++.field protected final mRemoveList:Ljava/util/ArrayList; + .annotation system Ldalvik/annotation/Signature; + value = { + "Ljava/util/ArrayList", +@@ -104,13 +104,13 @@ + .end annotation + .end field + +-.field private mServiceState:Landroid/telephony/ServiceState; ++.field protected mServiceState:Landroid/telephony/ServiceState; + +-.field private mSignalStrength:Landroid/telephony/SignalStrength; ++.field protected mSignalStrength:Landroid/telephony/SignalStrength; + + + # direct methods +-.method constructor (Landroid/content/Context;)V ++.method protected constructor (Landroid/content/Context;)V + .registers 5 + + const/4 v2, 0x0 +@@ -221,15 +221,7 @@ + return-void + .end method + +-.method static synthetic access$000(Lcom/android/server/TelephonyRegistry;)Landroid/os/Bundle; +- .registers 2 +- +- iget-object v0, p0, Lcom/android/server/TelephonyRegistry;->mCellLocation:Landroid/os/Bundle; +- +- return-object v0 +-.end method +- +-.method static synthetic access$100(Lcom/android/server/TelephonyRegistry;)Landroid/os/Handler; ++.method static synthetic access$000(Lcom/android/server/TelephonyRegistry;)Landroid/os/Handler; + .registers 2 + + iget-object v0, p0, Lcom/android/server/TelephonyRegistry;->mHandler:Landroid/os/Handler; +@@ -431,7 +423,7 @@ + return-void + .end method + +-.method private broadcastServiceStateChanged(Landroid/telephony/ServiceState;)V ++.method private broadcastSignalStrengthChanged(Landroid/telephony/SignalStrength;)V + .registers 8 + + invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J +@@ -441,29 +433,29 @@ + :try_start_4 + iget-object v4, p0, Lcom/android/server/TelephonyRegistry;->mBatteryStats:Lcom/android/internal/app/IBatteryStats; + +- invoke-virtual {p1}, Landroid/telephony/ServiceState;->getState()I +- +- move-result v5 +- +- invoke-interface {v4, v5}, Lcom/android/internal/app/IBatteryStats;->notePhoneState(I)V +- :try_end_d +- .catchall {:try_start_4 .. :try_end_d} :catchall_2a +- .catch Landroid/os/RemoteException; {:try_start_4 .. :try_end_d} :catch_2f ++ invoke-interface {v4, p1}, Lcom/android/internal/app/IBatteryStats;->notePhoneSignalStrength(Landroid/telephony/SignalStrength;)V ++ :try_end_9 ++ .catchall {:try_start_4 .. :try_end_9} :catchall_2b ++ .catch Landroid/os/RemoteException; {:try_start_4 .. :try_end_9} :catch_30 + +- :goto_d ++ :goto_9 + invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V + + new-instance v3, Landroid/content/Intent; + +- const-string v4, "android.intent.action.SERVICE_STATE" ++ const-string v4, "android.intent.action.SIG_STR" + + invoke-direct {v3, v4}, Landroid/content/Intent;->(Ljava/lang/String;)V + ++ const/high16 v4, 0x2000 ++ ++ invoke-virtual {v3, v4}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent; ++ + new-instance v0, Landroid/os/Bundle; + + invoke-direct {v0}, Landroid/os/Bundle;->()V + +- invoke-virtual {p1, v0}, Landroid/telephony/ServiceState;->fillInNotifierBundle(Landroid/os/Bundle;)V ++ invoke-virtual {p1, v0}, Landroid/telephony/SignalStrength;->fillInNotifierBundle(Landroid/os/Bundle;)V + + invoke-virtual {v3, v0}, Landroid/content/Intent;->putExtras(Landroid/os/Bundle;)Landroid/content/Intent; + +@@ -475,20 +467,68 @@ + + return-void + +- :catchall_2a ++ :catchall_2b + move-exception v4 + + invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V + + throw v4 + +- :catch_2f ++ :catch_30 + move-exception v4 + +- goto :goto_d ++ goto :goto_9 + .end method + +-.method private broadcastSignalStrengthChanged(Landroid/telephony/SignalStrength;)V ++.method private validateEventsAndUserLocked(Lcom/android/server/TelephonyRegistry$Record;I)Z ++ .registers 8 ++ ++ invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J ++ ++ move-result-wide v0 ++ ++ const/4 v3, 0x0 ++ ++ :try_start_5 ++ invoke-static {}, Landroid/app/ActivityManager;->getCurrentUser()I ++ ++ move-result v2 ++ ++ iget v4, p1, Lcom/android/server/TelephonyRegistry$Record;->callerUid:I ++ ++ if-ne v4, v2, :cond_17 ++ ++ iget v4, p1, Lcom/android/server/TelephonyRegistry$Record;->events:I ++ :try_end_f ++ .catchall {:try_start_5 .. :try_end_f} :catchall_19 ++ ++ and-int/2addr v4, p2 ++ ++ if-eqz v4, :cond_17 ++ ++ const/4 v3, 0x1 ++ ++ :goto_13 ++ invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V ++ ++ return v3 ++ ++ :cond_17 ++ const/4 v3, 0x0 ++ ++ goto :goto_13 ++ ++ :catchall_19 ++ move-exception v4 ++ ++ invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V ++ ++ throw v4 ++.end method ++ ++ ++# virtual methods ++.method protected broadcastServiceStateChanged(Landroid/telephony/ServiceState;)V + .registers 8 + + invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J +@@ -498,29 +538,29 @@ + :try_start_4 + iget-object v4, p0, Lcom/android/server/TelephonyRegistry;->mBatteryStats:Lcom/android/internal/app/IBatteryStats; + +- invoke-interface {v4, p1}, Lcom/android/internal/app/IBatteryStats;->notePhoneSignalStrength(Landroid/telephony/SignalStrength;)V +- :try_end_9 +- .catchall {:try_start_4 .. :try_end_9} :catchall_2b +- .catch Landroid/os/RemoteException; {:try_start_4 .. :try_end_9} :catch_30 ++ invoke-virtual {p1}, Landroid/telephony/ServiceState;->getState()I + +- :goto_9 ++ move-result v5 ++ ++ invoke-interface {v4, v5}, Lcom/android/internal/app/IBatteryStats;->notePhoneState(I)V ++ :try_end_d ++ .catchall {:try_start_4 .. :try_end_d} :catchall_2a ++ .catch Landroid/os/RemoteException; {:try_start_4 .. :try_end_d} :catch_2f ++ ++ :goto_d + invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V + + new-instance v3, Landroid/content/Intent; + +- const-string v4, "android.intent.action.SIG_STR" ++ const-string v4, "android.intent.action.SERVICE_STATE" + + invoke-direct {v3, v4}, Landroid/content/Intent;->(Ljava/lang/String;)V + +- const/high16 v4, 0x2000 +- +- invoke-virtual {v3, v4}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent; +- + new-instance v0, Landroid/os/Bundle; + + invoke-direct {v0}, Landroid/os/Bundle;->()V + +- invoke-virtual {p1, v0}, Landroid/telephony/SignalStrength;->fillInNotifierBundle(Landroid/os/Bundle;)V ++ invoke-virtual {p1, v0}, Landroid/telephony/ServiceState;->fillInNotifierBundle(Landroid/os/Bundle;)V + + invoke-virtual {v3, v0}, Landroid/content/Intent;->putExtras(Landroid/os/Bundle;)Landroid/content/Intent; + +@@ -532,20 +572,20 @@ + + return-void + +- :catchall_2b ++ :catchall_2a + move-exception v4 + + invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V + + throw v4 + +- :catch_30 ++ :catch_2f + move-exception v4 + +- goto :goto_9 ++ goto :goto_d + .end method + +-.method private checkListenerPermission(I)V ++.method protected checkListenerPermission(I)V + .registers 5 + + const/4 v2, 0x0 +@@ -586,7 +626,7 @@ + return-void + .end method + +-.method private checkNotifyPermission(Ljava/lang/String;)Z ++.method protected checkNotifyPermission(Ljava/lang/String;)Z + .registers 5 + + iget-object v1, p0, Lcom/android/server/TelephonyRegistry;->mContext:Landroid/content/Context; +@@ -656,157 +696,6 @@ + goto :goto_b + .end method + +-.method private handleRemoveListLocked()V +- .registers 4 +- +- iget-object v2, p0, Lcom/android/server/TelephonyRegistry;->mRemoveList:Ljava/util/ArrayList; +- +- invoke-virtual {v2}, Ljava/util/ArrayList;->size()I +- +- move-result v2 +- +- if-lez v2, :cond_23 +- +- iget-object v2, p0, Lcom/android/server/TelephonyRegistry;->mRemoveList:Ljava/util/ArrayList; +- +- invoke-virtual {v2}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator; +- +- move-result-object v1 +- +- :goto_e +- invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z +- +- move-result v2 +- +- if-eqz v2, :cond_1e +- +- invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; +- +- move-result-object v0 +- +- check-cast v0, Landroid/os/IBinder; +- +- invoke-direct {p0, v0}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V +- +- goto :goto_e +- +- :cond_1e +- iget-object v2, p0, Lcom/android/server/TelephonyRegistry;->mRemoveList:Ljava/util/ArrayList; +- +- invoke-virtual {v2}, Ljava/util/ArrayList;->clear()V +- +- :cond_23 +- return-void +-.end method +- +-.method private remove(Landroid/os/IBinder;)V +- .registers 6 +- +- iget-object v3, p0, Lcom/android/server/TelephonyRegistry;->mRecords:Ljava/util/ArrayList; +- +- monitor-enter v3 +- +- :try_start_3 +- iget-object v2, p0, Lcom/android/server/TelephonyRegistry;->mRecords:Ljava/util/ArrayList; +- +- invoke-virtual {v2}, Ljava/util/ArrayList;->size()I +- +- move-result v1 +- +- const/4 v0, 0x0 +- +- :goto_a +- if-ge v0, v1, :cond_22 +- +- iget-object v2, p0, Lcom/android/server/TelephonyRegistry;->mRecords:Ljava/util/ArrayList; +- +- invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object; +- +- move-result-object v2 +- +- check-cast v2, Lcom/android/server/TelephonyRegistry$Record; +- +- iget-object v2, v2, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; +- +- if-ne v2, p1, :cond_1f +- +- iget-object v2, p0, Lcom/android/server/TelephonyRegistry;->mRecords:Ljava/util/ArrayList; +- +- invoke-virtual {v2, v0}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object; +- +- monitor-exit v3 +- +- :goto_1e +- return-void +- +- :cond_1f +- add-int/lit8 v0, v0, 0x1 +- +- goto :goto_a +- +- :cond_22 +- monitor-exit v3 +- +- goto :goto_1e +- +- :catchall_24 +- move-exception v2 +- +- monitor-exit v3 +- :try_end_26 +- .catchall {:try_start_3 .. :try_end_26} :catchall_24 +- +- throw v2 +-.end method +- +-.method private validateEventsAndUserLocked(Lcom/android/server/TelephonyRegistry$Record;I)Z +- .registers 8 +- +- invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J +- +- move-result-wide v0 +- +- const/4 v3, 0x0 +- +- :try_start_5 +- invoke-static {}, Landroid/app/ActivityManager;->getCurrentUser()I +- +- move-result v2 +- +- iget v4, p1, Lcom/android/server/TelephonyRegistry$Record;->callerUid:I +- +- if-ne v4, v2, :cond_17 +- +- iget v4, p1, Lcom/android/server/TelephonyRegistry$Record;->events:I +- :try_end_f +- .catchall {:try_start_5 .. :try_end_f} :catchall_19 +- +- and-int/2addr v4, p2 +- +- if-eqz v4, :cond_17 +- +- const/4 v3, 0x1 +- +- :goto_13 +- invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V +- +- return v3 +- +- :cond_17 +- const/4 v3, 0x0 +- +- goto :goto_13 +- +- :catchall_19 +- move-exception v4 +- +- invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V +- +- throw v4 +-.end method +- +- +-# virtual methods + .method public dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V + .registers 10 + +@@ -1304,6 +1193,49 @@ + goto/16 :goto_32 + .end method + ++.method protected handleRemoveListLocked()V ++ .registers 4 ++ ++ iget-object v2, p0, Lcom/android/server/TelephonyRegistry;->mRemoveList:Ljava/util/ArrayList; ++ ++ invoke-virtual {v2}, Ljava/util/ArrayList;->size()I ++ ++ move-result v2 ++ ++ if-lez v2, :cond_23 ++ ++ iget-object v2, p0, Lcom/android/server/TelephonyRegistry;->mRemoveList:Ljava/util/ArrayList; ++ ++ invoke-virtual {v2}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator; ++ ++ move-result-object v1 ++ ++ :goto_e ++ invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z ++ ++ move-result v2 ++ ++ if-eqz v2, :cond_1e ++ ++ invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; ++ ++ move-result-object v0 ++ ++ check-cast v0, Landroid/os/IBinder; ++ ++ invoke-virtual {p0, v0}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ ++ goto :goto_e ++ ++ :cond_1e ++ iget-object v2, p0, Lcom/android/server/TelephonyRegistry;->mRemoveList:Ljava/util/ArrayList; ++ ++ invoke-virtual {v2}, Ljava/util/ArrayList;->clear()V ++ ++ :cond_23 ++ return-void ++.end method ++ + .method public listen(Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZ)V + .registers 20 + +@@ -1315,11 +1247,11 @@ + + move-result v7 + +- if-eqz p3, :cond_150 ++ if-eqz p3, :cond_14f + + move/from16 v0, p3 + +- invoke-direct {p0, v0}, Lcom/android/server/TelephonyRegistry;->checkListenerPermission(I)V ++ invoke-virtual {p0, v0}, Lcom/android/server/TelephonyRegistry;->checkListenerPermission(I)V + + iget-object v12, p0, Lcom/android/server/TelephonyRegistry;->mRecords:Ljava/util/ArrayList; + +@@ -1336,7 +1268,7 @@ + + invoke-virtual {v11}, Ljava/util/ArrayList;->size()I + :try_end_1c +- .catchall {:try_start_13 .. :try_end_1c} :catchall_f7 ++ .catchall {:try_start_13 .. :try_end_1c} :catchall_f6 + + move-result v1 + +@@ -1356,7 +1288,7 @@ + + check-cast v8, Lcom/android/server/TelephonyRegistry$Record; + :try_end_29 +- .catchall {:try_start_21 .. :try_end_29} :catchall_158 ++ .catchall {:try_start_21 .. :try_end_29} :catchall_157 + + :try_start_29 + iget-object v11, v8, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; +@@ -1374,7 +1306,7 @@ + + iput v0, v8, Lcom/android/server/TelephonyRegistry$Record;->events:I + :try_end_37 +- .catchall {:try_start_29 .. :try_end_37} :catchall_f7 ++ .catchall {:try_start_29 .. :try_end_37} :catchall_f6 + + if-eqz p4, :cond_d7 + +@@ -1393,8 +1325,8 @@ + + invoke-interface {v11, v13}, Lcom/android/internal/telephony/IPhoneStateListener;->onServiceStateChanged(Landroid/telephony/ServiceState;)V + :try_end_49 +- .catchall {:try_start_3d .. :try_end_49} :catchall_f7 +- .catch Landroid/os/RemoteException; {:try_start_3d .. :try_end_49} :catch_fa ++ .catchall {:try_start_3d .. :try_end_49} :catchall_f6 ++ .catch Landroid/os/RemoteException; {:try_start_3d .. :try_end_49} :catch_f9 + + :cond_49 + :goto_49 +@@ -1420,8 +1352,8 @@ + :cond_5a + invoke-interface {v11, v5}, Lcom/android/internal/telephony/IPhoneStateListener;->onSignalStrengthChanged(I)V + :try_end_5d +- .catchall {:try_start_4d .. :try_end_5d} :catchall_f7 +- .catch Landroid/os/RemoteException; {:try_start_4d .. :try_end_5d} :catch_102 ++ .catchall {:try_start_4d .. :try_end_5d} :catchall_f6 ++ .catch Landroid/os/RemoteException; {:try_start_4d .. :try_end_5d} :catch_101 + + :cond_5d + :goto_5d +@@ -1436,8 +1368,8 @@ + + invoke-interface {v11, v13}, Lcom/android/internal/telephony/IPhoneStateListener;->onMessageWaitingIndicatorChanged(Z)V + :try_end_68 +- .catchall {:try_start_61 .. :try_end_68} :catchall_f7 +- .catch Landroid/os/RemoteException; {:try_start_61 .. :try_end_68} :catch_10a ++ .catchall {:try_start_61 .. :try_end_68} :catchall_f6 ++ .catch Landroid/os/RemoteException; {:try_start_61 .. :try_end_68} :catch_109 + + :cond_68 + :goto_68 +@@ -1452,8 +1384,8 @@ + + invoke-interface {v11, v13}, Lcom/android/internal/telephony/IPhoneStateListener;->onCallForwardingIndicatorChanged(Z)V + :try_end_73 +- .catchall {:try_start_6c .. :try_end_73} :catchall_f7 +- .catch Landroid/os/RemoteException; {:try_start_6c .. :try_end_73} :catch_112 ++ .catchall {:try_start_6c .. :try_end_73} :catchall_f6 ++ .catch Landroid/os/RemoteException; {:try_start_6c .. :try_end_73} :catch_111 + + :cond_73 + :goto_73 +@@ -1462,7 +1394,7 @@ + :try_start_75 + invoke-direct {p0, v8, v11}, Lcom/android/server/TelephonyRegistry;->validateEventsAndUserLocked(Lcom/android/server/TelephonyRegistry$Record;I)Z + :try_end_78 +- .catchall {:try_start_75 .. :try_end_78} :catchall_f7 ++ .catchall {:try_start_75 .. :try_end_78} :catchall_f6 + + move-result v11 + +@@ -1479,8 +1411,8 @@ + + invoke-interface {v11, v13}, Lcom/android/internal/telephony/IPhoneStateListener;->onCellLocationChanged(Landroid/os/Bundle;)V + :try_end_87 +- .catchall {:try_start_7b .. :try_end_87} :catchall_f7 +- .catch Landroid/os/RemoteException; {:try_start_7b .. :try_end_87} :catch_11a ++ .catchall {:try_start_7b .. :try_end_87} :catchall_f6 ++ .catch Landroid/os/RemoteException; {:try_start_7b .. :try_end_87} :catch_119 + + :cond_87 + :goto_87 +@@ -1497,8 +1429,8 @@ + + invoke-interface {v11, v13, v14}, Lcom/android/internal/telephony/IPhoneStateListener;->onCallStateChanged(ILjava/lang/String;)V + :try_end_94 +- .catchall {:try_start_8b .. :try_end_94} :catchall_f7 +- .catch Landroid/os/RemoteException; {:try_start_8b .. :try_end_94} :catch_122 ++ .catchall {:try_start_8b .. :try_end_94} :catchall_f6 ++ .catch Landroid/os/RemoteException; {:try_start_8b .. :try_end_94} :catch_121 + + :cond_94 + :goto_94 +@@ -1515,8 +1447,8 @@ + + invoke-interface {v11, v13, v14}, Lcom/android/internal/telephony/IPhoneStateListener;->onDataConnectionStateChanged(II)V + :try_end_a1 +- .catchall {:try_start_98 .. :try_end_a1} :catchall_f7 +- .catch Landroid/os/RemoteException; {:try_start_98 .. :try_end_a1} :catch_12a ++ .catchall {:try_start_98 .. :try_end_a1} :catchall_f6 ++ .catch Landroid/os/RemoteException; {:try_start_98 .. :try_end_a1} :catch_129 + + :cond_a1 + :goto_a1 +@@ -1533,8 +1465,8 @@ + + invoke-interface {v11, v13}, Lcom/android/internal/telephony/IPhoneStateListener;->onDataActivity(I)V + :try_end_ae +- .catchall {:try_start_a7 .. :try_end_ae} :catchall_f7 +- .catch Landroid/os/RemoteException; {:try_start_a7 .. :try_end_ae} :catch_132 ++ .catchall {:try_start_a7 .. :try_end_ae} :catchall_f6 ++ .catch Landroid/os/RemoteException; {:try_start_a7 .. :try_end_ae} :catch_131 + + :cond_ae + :goto_ae +@@ -1551,8 +1483,8 @@ + + invoke-interface {v11, v13}, Lcom/android/internal/telephony/IPhoneStateListener;->onSignalStrengthsChanged(Landroid/telephony/SignalStrength;)V + :try_end_bb +- .catchall {:try_start_b4 .. :try_end_bb} :catchall_f7 +- .catch Landroid/os/RemoteException; {:try_start_b4 .. :try_end_bb} :catch_13a ++ .catchall {:try_start_b4 .. :try_end_bb} :catchall_f6 ++ .catch Landroid/os/RemoteException; {:try_start_b4 .. :try_end_bb} :catch_139 + + :cond_bb + :goto_bb +@@ -1569,8 +1501,8 @@ + + invoke-interface {v11, v13}, Lcom/android/internal/telephony/IPhoneStateListener;->onOtaspChanged(I)V + :try_end_c8 +- .catchall {:try_start_c1 .. :try_end_c8} :catchall_f7 +- .catch Landroid/os/RemoteException; {:try_start_c1 .. :try_end_c8} :catch_142 ++ .catchall {:try_start_c1 .. :try_end_c8} :catchall_f6 ++ .catch Landroid/os/RemoteException; {:try_start_c1 .. :try_end_c8} :catch_141 + + :cond_c8 + :goto_c8 +@@ -1579,7 +1511,7 @@ + :try_start_ca + invoke-direct {p0, v8, v11}, Lcom/android/server/TelephonyRegistry;->validateEventsAndUserLocked(Lcom/android/server/TelephonyRegistry$Record;I)Z + :try_end_cd +- .catchall {:try_start_ca .. :try_end_cd} :catchall_f7 ++ .catchall {:try_start_ca .. :try_end_cd} :catchall_f6 + + move-result v11 + +@@ -1592,15 +1524,15 @@ + + invoke-interface {v11, v13}, Lcom/android/internal/telephony/IPhoneStateListener;->onCellInfoChanged(Ljava/util/List;)V + :try_end_d7 +- .catchall {:try_start_d0 .. :try_end_d7} :catchall_f7 +- .catch Landroid/os/RemoteException; {:try_start_d0 .. :try_end_d7} :catch_149 ++ .catchall {:try_start_d0 .. :try_end_d7} :catchall_f6 ++ .catch Landroid/os/RemoteException; {:try_start_d0 .. :try_end_d7} :catch_148 + + :cond_d7 + :goto_d7 + :try_start_d7 + monitor-exit v12 + :try_end_d8 +- .catchall {:try_start_d7 .. :try_end_d8} :catchall_f7 ++ .catchall {:try_start_d7 .. :try_end_d8} :catchall_f6 + + :goto_d8 + return-void +@@ -1616,13 +1548,11 @@ + :try_start_de + new-instance v8, Lcom/android/server/TelephonyRegistry$Record; + +- const/4 v11, 0x0 ++ invoke-direct {v8}, Lcom/android/server/TelephonyRegistry$Record;->()V ++ :try_end_e3 ++ .catchall {:try_start_de .. :try_end_e3} :catchall_157 + +- invoke-direct {v8, v11}, Lcom/android/server/TelephonyRegistry$Record;->(Lcom/android/server/TelephonyRegistry$1;)V +- :try_end_e4 +- .catchall {:try_start_de .. :try_end_e4} :catchall_158 +- +- :try_start_e4 ++ :try_start_e3 + iput-object v2, v8, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; + + move-object/from16 v0, p2 +@@ -1641,133 +1571,133 @@ + + goto/16 :goto_2d + +- :catchall_f7 ++ :catchall_f6 + move-exception v11 + +- :goto_f8 ++ :goto_f7 + monitor-exit v12 +- :try_end_f9 +- .catchall {:try_start_e4 .. :try_end_f9} :catchall_f7 ++ :try_end_f8 ++ .catchall {:try_start_e3 .. :try_end_f8} :catchall_f6 + + throw v11 + +- :catch_fa ++ :catch_f9 + move-exception v4 + +- :try_start_fb ++ :try_start_fa + iget-object v11, v8, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; + +- invoke-direct {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ invoke-virtual {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V + + goto/16 :goto_49 + +- :catch_102 ++ :catch_101 + move-exception v4 + + iget-object v11, v8, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; + +- invoke-direct {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ invoke-virtual {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V + + goto/16 :goto_5d + +- :catch_10a ++ :catch_109 + move-exception v4 + + iget-object v11, v8, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; + +- invoke-direct {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ invoke-virtual {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V + + goto/16 :goto_68 + +- :catch_112 ++ :catch_111 + move-exception v4 + + iget-object v11, v8, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; + +- invoke-direct {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ invoke-virtual {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V + + goto/16 :goto_73 + +- :catch_11a ++ :catch_119 + move-exception v4 + + iget-object v11, v8, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; + +- invoke-direct {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ invoke-virtual {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V + + goto/16 :goto_87 + +- :catch_122 ++ :catch_121 + move-exception v4 + + iget-object v11, v8, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; + +- invoke-direct {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ invoke-virtual {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V + + goto/16 :goto_94 + +- :catch_12a ++ :catch_129 + move-exception v4 + + iget-object v11, v8, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; + +- invoke-direct {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ invoke-virtual {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V + + goto/16 :goto_a1 + +- :catch_132 ++ :catch_131 + move-exception v4 + + iget-object v11, v8, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; + +- invoke-direct {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ invoke-virtual {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V + + goto/16 :goto_ae + +- :catch_13a ++ :catch_139 + move-exception v4 + + iget-object v11, v8, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; + +- invoke-direct {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ invoke-virtual {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V + + goto/16 :goto_bb + +- :catch_142 ++ :catch_141 + move-exception v4 + + iget-object v11, v8, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; + +- invoke-direct {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ invoke-virtual {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V + + goto :goto_c8 + +- :catch_149 ++ :catch_148 + move-exception v4 + + iget-object v11, v8, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; + +- invoke-direct {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V +- :try_end_14f +- .catchall {:try_start_fb .. :try_end_14f} :catchall_f7 ++ invoke-virtual {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ :try_end_14e ++ .catchall {:try_start_fa .. :try_end_14e} :catchall_f6 + + goto :goto_d7 + +- :cond_150 ++ :cond_14f + invoke-interface/range {p2 .. p2}, Lcom/android/internal/telephony/IPhoneStateListener;->asBinder()Landroid/os/IBinder; + + move-result-object v11 + +- invoke-direct {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V ++ invoke-virtual {p0, v11}, Lcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V + + goto :goto_d8 + +- :catchall_158 ++ :catchall_157 + move-exception v11 + + move-object v8, v9 + +- goto :goto_f8 ++ goto :goto_f7 + .end method + + .method public notifyCallForwardingChanged(Z)V +@@ -1775,7 +1705,7 @@ + + const-string v3, "notifyCallForwardingChanged()" + +- invoke-direct {p0, v3}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z ++ invoke-virtual {p0, v3}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z + + move-result v3 + +@@ -1853,7 +1783,7 @@ + + :cond_38 + :try_start_38 +- invoke-direct {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V ++ invoke-virtual {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V + + monitor-exit v4 + :try_end_3c +@@ -1867,7 +1797,7 @@ + + const-string v3, "notifyCallState()" + +- invoke-direct {p0, v3}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z ++ invoke-virtual {p0, v3}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z + + move-result v3 + +@@ -1947,7 +1877,7 @@ + + :cond_3a + :try_start_3a +- invoke-direct {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V ++ invoke-virtual {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V + + monitor-exit v4 + :try_end_3e +@@ -1972,7 +1902,7 @@ + + const-string v3, "notifyCellInfo()" + +- invoke-direct {p0, v3}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z ++ invoke-virtual {p0, v3}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z + + move-result v3 + +@@ -2052,7 +1982,7 @@ + + :cond_3a + :try_start_3a +- invoke-direct {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V ++ invoke-virtual {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V + + monitor-exit v4 + :try_end_3e +@@ -2066,7 +1996,7 @@ + + const-string v3, "notifyCellLocation()" + +- invoke-direct {p0, v3}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z ++ invoke-virtual {p0, v3}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z + + move-result v3 + +@@ -2150,7 +2080,7 @@ + + :cond_3f + :try_start_3f +- invoke-direct {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V ++ invoke-virtual {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V + + monitor-exit v4 + :try_end_43 +@@ -2164,7 +2094,7 @@ + + const-string v3, "notifyDataActivity()" + +- invoke-direct {p0, v3}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z ++ invoke-virtual {p0, v3}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z + + move-result v3 + +@@ -2242,7 +2172,7 @@ + + :cond_38 + :try_start_38 +- invoke-direct {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V ++ invoke-virtual {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V + + monitor-exit v4 + :try_end_3c +@@ -2256,7 +2186,7 @@ + + const-string v1, "notifyDataConnection()" + +- invoke-direct {p0, v1}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z ++ invoke-virtual {p0, v1}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z + + move-result v1 + +@@ -2424,7 +2354,7 @@ + goto :goto_28 + + :cond_89 +- invoke-direct {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V ++ invoke-virtual {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V + + :cond_8c + monitor-exit v2 +@@ -2459,7 +2389,7 @@ + + const-string v0, "notifyDataConnectionFailed()" + +- invoke-direct {p0, v0}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z ++ invoke-virtual {p0, v0}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z + + move-result v0 + +@@ -2479,7 +2409,7 @@ + + const-string v3, "notifyMessageWaitingChanged()" + +- invoke-direct {p0, v3}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z ++ invoke-virtual {p0, v3}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z + + move-result v3 + +@@ -2557,7 +2487,7 @@ + + :cond_38 + :try_start_38 +- invoke-direct {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V ++ invoke-virtual {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V + + monitor-exit v4 + :try_end_3c +@@ -2571,7 +2501,7 @@ + + const-string v3, "notifyOtaspChanged()" + +- invoke-direct {p0, v3}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z ++ invoke-virtual {p0, v3}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z + + move-result v3 + +@@ -2649,7 +2579,7 @@ + + :cond_38 + :try_start_38 +- invoke-direct {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V ++ invoke-virtual {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V + + monitor-exit v4 + :try_end_3c +@@ -2659,11 +2589,11 @@ + .end method + + .method public notifyServiceState(Landroid/telephony/ServiceState;)V +- .registers 8 ++ .registers 10 + + const-string v3, "notifyServiceState()" + +- invoke-direct {p0, v3}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z ++ invoke-virtual {p0, v3}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z + + move-result v3 + +@@ -2680,19 +2610,29 @@ + :try_start_c + iput-object p1, p0, Lcom/android/server/TelephonyRegistry;->mServiceState:Landroid/telephony/ServiceState; + ++ iget-object v3, p0, Lcom/android/server/TelephonyRegistry;->mServiceState:Landroid/telephony/ServiceState; ++ ++ const-string v5, "" ++ ++ const-string v6, "" ++ ++ const-string v7, "" ++ ++ invoke-virtual {v3, v5, v6, v7}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V ++ + iget-object v3, p0, Lcom/android/server/TelephonyRegistry;->mRecords:Ljava/util/ArrayList; + + invoke-virtual {v3}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator; + + move-result-object v1 + +- :cond_14 +- :goto_14 ++ :cond_1f ++ :goto_1f + invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z + + move-result v3 + +- if-eqz v3, :cond_3d ++ if-eqz v3, :cond_51 + + invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; + +@@ -2701,14 +2641,22 @@ + check-cast v2, Lcom/android/server/TelephonyRegistry$Record; + + iget v3, v2, Lcom/android/server/TelephonyRegistry$Record;->events:I +- :try_end_22 +- .catchall {:try_start_c .. :try_end_22} :catchall_3a ++ :try_end_2d ++ .catchall {:try_start_c .. :try_end_2d} :catchall_4e + + and-int/lit8 v3, v3, 0x1 + +- if-eqz v3, :cond_14 ++ if-eqz v3, :cond_1f ++ ++ :try_start_31 ++ const-string v3, "" ++ ++ const-string v5, "" ++ ++ const-string v6, "" ++ ++ invoke-virtual {p1, v3, v5, v6}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + +- :try_start_26 + iget-object v3, v2, Lcom/android/server/TelephonyRegistry$Record;->callback:Lcom/android/internal/telephony/IPhoneStateListener; + + new-instance v5, Landroid/telephony/ServiceState; +@@ -2716,42 +2664,42 @@ + invoke-direct {v5, p1}, Landroid/telephony/ServiceState;->(Landroid/telephony/ServiceState;)V + + invoke-interface {v3, v5}, Lcom/android/internal/telephony/IPhoneStateListener;->onServiceStateChanged(Landroid/telephony/ServiceState;)V +- :try_end_30 +- .catchall {:try_start_26 .. :try_end_30} :catchall_3a +- .catch Landroid/os/RemoteException; {:try_start_26 .. :try_end_30} :catch_31 ++ :try_end_44 ++ .catchall {:try_start_31 .. :try_end_44} :catchall_4e ++ .catch Landroid/os/RemoteException; {:try_start_31 .. :try_end_44} :catch_45 + +- goto :goto_14 ++ goto :goto_1f + +- :catch_31 ++ :catch_45 + move-exception v0 + +- :try_start_32 ++ :try_start_46 + iget-object v3, p0, Lcom/android/server/TelephonyRegistry;->mRemoveList:Ljava/util/ArrayList; + + iget-object v5, v2, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; + + invoke-virtual {v3, v5}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z + +- goto :goto_14 ++ goto :goto_1f + +- :catchall_3a ++ :catchall_4e + move-exception v3 + + monitor-exit v4 +- :try_end_3c +- .catchall {:try_start_32 .. :try_end_3c} :catchall_3a ++ :try_end_50 ++ .catchall {:try_start_46 .. :try_end_50} :catchall_4e + + throw v3 + +- :cond_3d +- :try_start_3d +- invoke-direct {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V ++ :cond_51 ++ :try_start_51 ++ invoke-virtual {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V + + monitor-exit v4 +- :try_end_41 +- .catchall {:try_start_3d .. :try_end_41} :catchall_3a ++ :try_end_55 ++ .catchall {:try_start_51 .. :try_end_55} :catchall_4e + +- invoke-direct {p0, p1}, Lcom/android/server/TelephonyRegistry;->broadcastServiceStateChanged(Landroid/telephony/ServiceState;)V ++ invoke-virtual {p0, p1}, Lcom/android/server/TelephonyRegistry;->broadcastServiceStateChanged(Landroid/telephony/ServiceState;)V + + goto :goto_8 + .end method +@@ -2761,7 +2709,7 @@ + + const-string v4, "notifySignalStrength()" + +- invoke-direct {p0, v4}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z ++ invoke-virtual {p0, v4}, Lcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z + + move-result v4 + +@@ -2884,7 +2832,7 @@ + goto :goto_30 + + :cond_5a +- invoke-direct {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V ++ invoke-virtual {p0}, Lcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V + + monitor-exit v5 + :try_end_5e +@@ -2895,6 +2843,66 @@ + goto :goto_8 + .end method + ++.method protected remove(Landroid/os/IBinder;)V ++ .registers 6 ++ ++ iget-object v3, p0, Lcom/android/server/TelephonyRegistry;->mRecords:Ljava/util/ArrayList; ++ ++ monitor-enter v3 ++ ++ :try_start_3 ++ iget-object v2, p0, Lcom/android/server/TelephonyRegistry;->mRecords:Ljava/util/ArrayList; ++ ++ invoke-virtual {v2}, Ljava/util/ArrayList;->size()I ++ ++ move-result v1 ++ ++ const/4 v0, 0x0 ++ ++ :goto_a ++ if-ge v0, v1, :cond_22 ++ ++ iget-object v2, p0, Lcom/android/server/TelephonyRegistry;->mRecords:Ljava/util/ArrayList; ++ ++ invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object; ++ ++ move-result-object v2 ++ ++ check-cast v2, Lcom/android/server/TelephonyRegistry$Record; ++ ++ iget-object v2, v2, Lcom/android/server/TelephonyRegistry$Record;->binder:Landroid/os/IBinder; ++ ++ if-ne v2, p1, :cond_1f ++ ++ iget-object v2, p0, Lcom/android/server/TelephonyRegistry;->mRecords:Ljava/util/ArrayList; ++ ++ invoke-virtual {v2, v0}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object; ++ ++ monitor-exit v3 ++ ++ :goto_1e ++ return-void ++ ++ :cond_1f ++ add-int/lit8 v0, v0, 0x1 ++ ++ goto :goto_a ++ ++ :cond_22 ++ monitor-exit v3 ++ ++ goto :goto_1e ++ ++ :catchall_24 ++ move-exception v2 ++ ++ monitor-exit v3 ++ :try_end_26 ++ .catchall {:try_start_3 .. :try_end_26} :catchall_24 ++ ++ throw v2 ++.end method ++ + .method public systemReady()V + .registers 4 + diff --git a/patches/openpdroid/4.3/.aosp-ever/20130810/system b/patches/openpdroid/4.3/.aosp-ever/20130810/system new file mode 120000 index 0000000..3de3562 --- /dev/null +++ b/patches/openpdroid/4.3/.aosp-ever/20130810/system @@ -0,0 +1 @@ +../../../common/system \ No newline at end of file diff --git a/patches/openpdroid/4.3/.aosp-ever/20130810/telephony-common.patch b/patches/openpdroid/4.3/.aosp-ever/20130810/telephony-common.patch new file mode 100644 index 0000000..db881e7 --- /dev/null +++ b/patches/openpdroid/4.3/.aosp-ever/20130810/telephony-common.patch @@ -0,0 +1,18415 @@ +diff -Npru stock-telephony-common/smali/android/privacy/surrogate/PrivacyCDMALTEPhone.smali pdroid-telephony-common/smali/android/privacy/surrogate/PrivacyCDMALTEPhone.smali +--- stock-telephony-common/smali/android/privacy/surrogate/PrivacyCDMALTEPhone.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-telephony-common/smali/android/privacy/surrogate/PrivacyCDMALTEPhone.smali 2013-08-10 20:38:02.539214272 -0700 +@@ -0,0 +1,1696 @@ ++.class public Landroid/privacy/surrogate/PrivacyCDMALTEPhone; ++.super Lcom/android/internal/telephony/cdma/CDMALTEPhone; ++.source "PrivacyCDMALTEPhone.java" ++ ++ ++# static fields ++.field private static final P_TAG:Ljava/lang/String; = "PrivacyCDMALTEPhone" ++ ++ ++# instance fields ++.field private context:Landroid/content/Context; ++ ++.field private pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ ++# direct methods ++.method public constructor (Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;)V ++ .registers 7 ++ ++ invoke-direct {p0, p1, p2, p3}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;)V ++ ++ iput-object p1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ new-instance v0, Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v1, "privacy" ++ ++ invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v1 ++ ++ invoke-direct {v0, p1, v1}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v0, "PrivacyCDMALTEPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "Constructor ready for package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public dial(Ljava/lang/String;)Lcom/android/internal/telephony/Connection; ++ .registers 10 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Lcom/android/internal/telephony/CallStateException; ++ } ++ .end annotation ++ ++ const/4 v2, 0x0 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, -0x1 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_30 ++ ++ if-eqz v7, :cond_30 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_30 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string v4, "phoneCall" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ new-instance v0, Lcom/android/internal/telephony/CallStateException; ++ ++ invoke-direct {v0}, Lcom/android/internal/telephony/CallStateException;->()V ++ ++ throw v0 ++ ++ :cond_30 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "phoneCall" ++ ++ move v3, v2 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->dial(Ljava/lang/String;)Lcom/android/internal/telephony/Connection; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public dial(Ljava/lang/String;Lcom/android/internal/telephony/UUSInfo;)Lcom/android/internal/telephony/Connection; ++ .registers 11 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Lcom/android/internal/telephony/CallStateException; ++ } ++ .end annotation ++ ++ const/4 v2, 0x0 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, -0x1 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_30 ++ ++ if-eqz v7, :cond_30 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_30 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string v4, "phoneCall" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ new-instance v0, Lcom/android/internal/telephony/CallStateException; ++ ++ invoke-direct {v0}, Lcom/android/internal/telephony/CallStateException;->()V ++ ++ throw v0 ++ ++ :cond_30 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "phoneCall" ++ ++ move v3, v2 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1, p2}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->dial(Ljava/lang/String;Lcom/android/internal/telephony/UUSInfo;)Lcom/android/internal/telephony/Connection; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public getCellLocation()Landroid/telephony/CellLocation; ++ .registers 8 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ const-string v0, "PrivacyCDMALTEPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "Package: " ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v3, " asked for getCellLocation()" ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_5f ++ ++ if-eqz v6, :cond_5f ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationGpsSetting()B ++ ++ move-result v0 ++ ++ if-nez v0, :cond_48 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_5f ++ ++ :cond_48 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "locationNetwork" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ new-instance v0, Landroid/telephony/cdma/CdmaCellLocation; ++ ++ invoke-direct {v0}, Landroid/telephony/cdma/CdmaCellLocation;->()V ++ ++ :goto_5e ++ return-object v0 ++ ++ :cond_5f ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "locationNetwork" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->getCellLocation()Landroid/telephony/CellLocation; ++ ++ move-result-object v0 ++ ++ goto :goto_5e ++.end method ++ ++.method public getDeviceId()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyCDMALTEPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getDeviceId()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getDeviceSvn()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyCDMALTEPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getDeviceSvn()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->getDeviceSvn()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getEsn()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyCDMALTEPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getEsn()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->getEsn()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getImei()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyCDMALTEPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getImei" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->getImei()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getLine1AlphaTag()Ljava/lang/String; ++ .registers 8 ++ ++ const/4 v2, 0x0 ++ ++ const-string v0, "PrivacyCDMALTEPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "Package: " ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v3, " asked for getLine1AlphaTag()" ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ const-string v5, "" ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_59 ++ ++ if-eqz v6, :cond_59 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_59 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_58 ++ return-object v5 ++ ++ :cond_59 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "line1Number" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->getLine1AlphaTag()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ goto :goto_58 ++.end method ++ ++.method public getLine1Number()Ljava/lang/String; ++ .registers 8 ++ ++ const/4 v2, 0x0 ++ ++ const-string v0, "PrivacyCDMALTEPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "Package: " ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v3, " asked for getLine1Number()" ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ const-string v5, "" ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_59 ++ ++ if-eqz v6, :cond_59 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_59 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_58 ++ return-object v5 ++ ++ :cond_59 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "line1Number" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ goto :goto_58 ++.end method ++ ++.method public getMeid()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyCDMALTEPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getMeid()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->getMeid()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getMsisdn()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyCDMALTEPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getMsisdn()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->getMsisdn()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getPhoneSubInfo()Lcom/android/internal/telephony/PhoneSubInfo; ++ .registers 8 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ const-string v0, "PrivacyCDMALTEPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "Package: " ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v3, " asked for getPhoneSubInfo()" ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_54 ++ ++ if-eqz v6, :cond_54 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_54 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "locationNetwork" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_53 ++ return-object v5 ++ ++ :cond_54 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "locationNetwork" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->getPhoneSubInfo()Lcom/android/internal/telephony/PhoneSubInfo; ++ ++ move-result-object v5 ++ ++ goto :goto_53 ++.end method ++ ++.method public getServiceState()Landroid/telephony/ServiceState; ++ .registers 10 ++ ++ :try_start_0 ++ const-string v0, "PrivacyCDMALTEPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "Package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " asked for getServiceState()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v2 ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_61 ++ ++ if-eqz v6, :cond_61 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_61 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v2, 0x0 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "locationNetwork" ++ ++ const/4 v5, 0x0 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->getServiceState()Landroid/telephony/ServiceState; ++ ++ move-result-object v8 ++ ++ const-string v0, "" ++ ++ const-string v1, "" ++ ++ const-string v2, "" ++ ++ invoke-virtual {v8, v0, v1, v2}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V ++ ++ :goto_60 ++ return-object v8 ++ ++ :cond_61 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v2, 0x0 ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "locationNetwork" ++ ++ const/4 v5, 0x0 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->getServiceState()Landroid/telephony/ServiceState; ++ :try_end_74 ++ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_74} :catch_76 ++ ++ move-result-object v8 ++ ++ goto :goto_60 ++ ++ :catch_76 ++ move-exception v7 ++ ++ invoke-virtual {v7}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v0, "PrivacyCDMALTEPhone" ++ ++ const-string v1, "We got exception in getServiceState()-> give fake state" ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->getServiceState()Landroid/telephony/ServiceState; ++ ++ move-result-object v8 ++ ++ const-string v0, "" ++ ++ const-string v1, "" ++ ++ const-string v2, "" ++ ++ invoke-virtual {v8, v0, v1, v2}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V ++ ++ goto :goto_60 ++.end method ++ ++.method public getSubscriberId()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyCDMALTEPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getSubscriberId()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSubscriberIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSubscriberIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "subscriberID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "subscriberID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getVoiceMailAlphaTag()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyCDMALTEPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getVoiceMailAlphaTag()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->getVoiceMailAlphaTag()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getVoiceMailNumber()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyCDMALTEPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getVoiceMailNumber()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->getVoiceMailNumber()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method +diff -Npru stock-telephony-common/smali/android/privacy/surrogate/PrivacyCDMAPhone.smali pdroid-telephony-common/smali/android/privacy/surrogate/PrivacyCDMAPhone.smali +--- stock-telephony-common/smali/android/privacy/surrogate/PrivacyCDMAPhone.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-telephony-common/smali/android/privacy/surrogate/PrivacyCDMAPhone.smali 2013-08-10 20:38:02.547214273 -0700 +@@ -0,0 +1,1602 @@ ++.class public Landroid/privacy/surrogate/PrivacyCDMAPhone; ++.super Lcom/android/internal/telephony/cdma/CDMAPhone; ++.source "PrivacyCDMAPhone.java" ++ ++ ++# static fields ++.field private static final P_TAG:Ljava/lang/String; = "PrivacyCDMAPhone" ++ ++ ++# instance fields ++.field private context:Landroid/content/Context; ++ ++.field private pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ ++# direct methods ++.method public constructor (Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;)V ++ .registers 7 ++ ++ invoke-direct {p0, p1, p2, p3}, Lcom/android/internal/telephony/cdma/CDMAPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;)V ++ ++ iput-object p1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ new-instance v0, Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v1, "privacy" ++ ++ invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v1 ++ ++ invoke-direct {v0, p1, v1}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v0, "PrivacyCDMAPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "Constructor ready for package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public dial(Ljava/lang/String;)Lcom/android/internal/telephony/Connection; ++ .registers 10 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Lcom/android/internal/telephony/CallStateException; ++ } ++ .end annotation ++ ++ const/4 v2, 0x0 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, -0x1 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_30 ++ ++ if-eqz v7, :cond_30 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_30 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string v4, "phoneCall" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ new-instance v0, Lcom/android/internal/telephony/CallStateException; ++ ++ invoke-direct {v0}, Lcom/android/internal/telephony/CallStateException;->()V ++ ++ throw v0 ++ ++ :cond_30 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "phoneCall" ++ ++ move v3, v2 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1}, Lcom/android/internal/telephony/cdma/CDMAPhone;->dial(Ljava/lang/String;)Lcom/android/internal/telephony/Connection; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public dial(Ljava/lang/String;Lcom/android/internal/telephony/UUSInfo;)Lcom/android/internal/telephony/Connection; ++ .registers 11 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Lcom/android/internal/telephony/CallStateException; ++ } ++ .end annotation ++ ++ const/4 v2, 0x0 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, -0x1 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_30 ++ ++ if-eqz v7, :cond_30 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_30 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string v4, "phoneCall" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ new-instance v0, Lcom/android/internal/telephony/CallStateException; ++ ++ invoke-direct {v0}, Lcom/android/internal/telephony/CallStateException;->()V ++ ++ throw v0 ++ ++ :cond_30 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "phoneCall" ++ ++ move v3, v2 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1, p2}, Lcom/android/internal/telephony/cdma/CDMAPhone;->dial(Ljava/lang/String;Lcom/android/internal/telephony/UUSInfo;)Lcom/android/internal/telephony/Connection; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public getCellLocation()Landroid/telephony/CellLocation; ++ .registers 8 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ const-string v0, "PrivacyCDMAPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "Package: " ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v3, " asked for getCellLocation()" ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_5f ++ ++ if-eqz v6, :cond_5f ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationGpsSetting()B ++ ++ move-result v0 ++ ++ if-nez v0, :cond_48 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_5f ++ ++ :cond_48 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "locationNetwork" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ new-instance v0, Landroid/telephony/cdma/CdmaCellLocation; ++ ++ invoke-direct {v0}, Landroid/telephony/cdma/CdmaCellLocation;->()V ++ ++ :goto_5e ++ return-object v0 ++ ++ :cond_5f ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "locationNetwork" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getCellLocation()Landroid/telephony/CellLocation; ++ ++ move-result-object v0 ++ ++ goto :goto_5e ++.end method ++ ++.method public getDeviceId()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyCDMAPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getDeviceId()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getDeviceSvn()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyCDMAPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getDeviceSvn()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getDeviceSvn()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getEsn()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyCDMAPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getEsn()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getEsn()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getImei()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyCDMAPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getImei" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getImei()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getLine1AlphaTag()Ljava/lang/String; ++ .registers 8 ++ ++ const/4 v2, 0x0 ++ ++ const-string v0, "PrivacyCDMAPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "Package: " ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v3, " asked for getLine1AlphaTag()" ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ const-string v5, "" ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_59 ++ ++ if-eqz v6, :cond_59 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_59 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_58 ++ return-object v5 ++ ++ :cond_59 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "line1Number" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getLine1AlphaTag()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ goto :goto_58 ++.end method ++ ++.method public getLine1Number()Ljava/lang/String; ++ .registers 8 ++ ++ const/4 v2, 0x0 ++ ++ const-string v0, "PrivacyCDMAPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "Package: " ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v3, " asked for getLine1Number()" ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ const-string v5, "" ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_59 ++ ++ if-eqz v6, :cond_59 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_59 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_58 ++ return-object v5 ++ ++ :cond_59 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "line1Number" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ goto :goto_58 ++.end method ++ ++.method public getMeid()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyCDMAPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getMeid()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getMeid()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getPhoneSubInfo()Lcom/android/internal/telephony/PhoneSubInfo; ++ .registers 8 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ const-string v0, "PrivacyCDMAPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "Package: " ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v3, " asked for getPhoneSubInfo()" ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_54 ++ ++ if-eqz v6, :cond_54 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_54 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "locationNetwork" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_53 ++ return-object v5 ++ ++ :cond_54 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "locationNetwork" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getPhoneSubInfo()Lcom/android/internal/telephony/PhoneSubInfo; ++ ++ move-result-object v5 ++ ++ goto :goto_53 ++.end method ++ ++.method public getServiceState()Landroid/telephony/ServiceState; ++ .registers 10 ++ ++ :try_start_0 ++ const-string v0, "PrivacyCDMAPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "Package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " asked for getServiceState()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v2 ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_61 ++ ++ if-eqz v6, :cond_61 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_61 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v2, 0x0 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "locationNetwork" ++ ++ const/4 v5, 0x0 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getServiceState()Landroid/telephony/ServiceState; ++ ++ move-result-object v8 ++ ++ const-string v0, "" ++ ++ const-string v1, "" ++ ++ const-string v2, "" ++ ++ invoke-virtual {v8, v0, v1, v2}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V ++ ++ :goto_60 ++ return-object v8 ++ ++ :cond_61 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v2, 0x0 ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "locationNetwork" ++ ++ const/4 v5, 0x0 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getServiceState()Landroid/telephony/ServiceState; ++ :try_end_74 ++ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_74} :catch_76 ++ ++ move-result-object v8 ++ ++ goto :goto_60 ++ ++ :catch_76 ++ move-exception v7 ++ ++ invoke-virtual {v7}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v0, "PrivacyCDMAPhone" ++ ++ const-string v1, "We got exception in getServiceState()-> give fake state" ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getServiceState()Landroid/telephony/ServiceState; ++ ++ move-result-object v8 ++ ++ const-string v0, "" ++ ++ const-string v1, "" ++ ++ const-string v2, "" ++ ++ invoke-virtual {v8, v0, v1, v2}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V ++ ++ goto :goto_60 ++.end method ++ ++.method public getSubscriberId()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyCDMAPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getSubscriberId()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSubscriberIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSubscriberIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "subscriberID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "subscriberID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getVoiceMailAlphaTag()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyCDMAPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getVoiceMailAlphaTag()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getVoiceMailAlphaTag()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getVoiceMailNumber()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyCDMAPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getVoiceMailNumber()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getVoiceMailNumber()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyCDMAPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method +diff -Npru stock-telephony-common/smali/android/privacy/surrogate/PrivacyGSMPhone.smali pdroid-telephony-common/smali/android/privacy/surrogate/PrivacyGSMPhone.smali +--- stock-telephony-common/smali/android/privacy/surrogate/PrivacyGSMPhone.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-telephony-common/smali/android/privacy/surrogate/PrivacyGSMPhone.smali 2013-08-10 20:38:02.587214274 -0700 +@@ -0,0 +1,1602 @@ ++.class public Landroid/privacy/surrogate/PrivacyGSMPhone; ++.super Lcom/android/internal/telephony/gsm/GSMPhone; ++.source "PrivacyGSMPhone.java" ++ ++ ++# static fields ++.field private static final P_TAG:Ljava/lang/String; = "PrivacyGSMPhone" ++ ++ ++# instance fields ++.field private context:Landroid/content/Context; ++ ++.field private pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ ++# direct methods ++.method public constructor (Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;)V ++ .registers 7 ++ ++ invoke-direct {p0, p1, p2, p3}, Lcom/android/internal/telephony/gsm/GSMPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;)V ++ ++ iput-object p1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ new-instance v0, Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v1, "privacy" ++ ++ invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v1 ++ ++ invoke-direct {v0, p1, v1}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "Constructor ready for package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public dial(Ljava/lang/String;)Lcom/android/internal/telephony/Connection; ++ .registers 10 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Lcom/android/internal/telephony/CallStateException; ++ } ++ .end annotation ++ ++ const/4 v2, 0x0 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, -0x1 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_30 ++ ++ if-eqz v7, :cond_30 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_30 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string v4, "phoneCall" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ new-instance v0, Lcom/android/internal/telephony/CallStateException; ++ ++ invoke-direct {v0}, Lcom/android/internal/telephony/CallStateException;->()V ++ ++ throw v0 ++ ++ :cond_30 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "phoneCall" ++ ++ move v3, v2 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1}, Lcom/android/internal/telephony/gsm/GSMPhone;->dial(Ljava/lang/String;)Lcom/android/internal/telephony/Connection; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public dial(Ljava/lang/String;Lcom/android/internal/telephony/UUSInfo;)Lcom/android/internal/telephony/Connection; ++ .registers 11 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Lcom/android/internal/telephony/CallStateException; ++ } ++ .end annotation ++ ++ const/4 v2, 0x0 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, -0x1 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_30 ++ ++ if-eqz v7, :cond_30 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_30 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string v4, "phoneCall" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ new-instance v0, Lcom/android/internal/telephony/CallStateException; ++ ++ invoke-direct {v0}, Lcom/android/internal/telephony/CallStateException;->()V ++ ++ throw v0 ++ ++ :cond_30 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "phoneCall" ++ ++ move v3, v2 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1, p2}, Lcom/android/internal/telephony/gsm/GSMPhone;->dial(Ljava/lang/String;Lcom/android/internal/telephony/UUSInfo;)Lcom/android/internal/telephony/Connection; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public getCellLocation()Landroid/telephony/CellLocation; ++ .registers 8 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "Package: " ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v3, " asked for getCellLocation()" ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_5f ++ ++ if-eqz v6, :cond_5f ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationGpsSetting()B ++ ++ move-result v0 ++ ++ if-nez v0, :cond_48 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_5f ++ ++ :cond_48 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "locationNetwork" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ new-instance v0, Landroid/telephony/gsm/GsmCellLocation; ++ ++ invoke-direct {v0}, Landroid/telephony/gsm/GsmCellLocation;->()V ++ ++ :goto_5e ++ return-object v0 ++ ++ :cond_5f ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "locationNetwork" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/gsm/GSMPhone;->getCellLocation()Landroid/telephony/CellLocation; ++ ++ move-result-object v0 ++ ++ goto :goto_5e ++.end method ++ ++.method public getDeviceId()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getDeviceId()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/gsm/GSMPhone;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getDeviceSvn()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getDeviceSvn()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/gsm/GSMPhone;->getDeviceSvn()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getEsn()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getEsn()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/gsm/GSMPhone;->getEsn()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getImei()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getImei" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/gsm/GSMPhone;->getImei()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getLine1AlphaTag()Ljava/lang/String; ++ .registers 8 ++ ++ const/4 v2, 0x0 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "Package: " ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v3, " asked for getLine1AlphaTag()" ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ const-string v5, "" ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_59 ++ ++ if-eqz v6, :cond_59 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_59 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_58 ++ return-object v5 ++ ++ :cond_59 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "line1Number" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/gsm/GSMPhone;->getLine1AlphaTag()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ goto :goto_58 ++.end method ++ ++.method public getLine1Number()Ljava/lang/String; ++ .registers 8 ++ ++ const/4 v2, 0x0 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "Package: " ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v3, " asked for getLine1Number()" ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ const-string v5, "" ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_59 ++ ++ if-eqz v6, :cond_59 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_59 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_58 ++ return-object v5 ++ ++ :cond_59 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "line1Number" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/gsm/GSMPhone;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ goto :goto_58 ++.end method ++ ++.method public getMeid()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getMeid()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/gsm/GSMPhone;->getMeid()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getPhoneSubInfo()Lcom/android/internal/telephony/PhoneSubInfo; ++ .registers 8 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "Package: " ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v3, " asked for getPhoneSubInfo()" ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_54 ++ ++ if-eqz v6, :cond_54 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_54 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "locationNetwork" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_53 ++ return-object v5 ++ ++ :cond_54 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "locationNetwork" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/gsm/GSMPhone;->getPhoneSubInfo()Lcom/android/internal/telephony/PhoneSubInfo; ++ ++ move-result-object v5 ++ ++ goto :goto_53 ++.end method ++ ++.method public getServiceState()Landroid/telephony/ServiceState; ++ .registers 10 ++ ++ :try_start_0 ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "Package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " asked for getServiceState()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v2 ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_61 ++ ++ if-eqz v6, :cond_61 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_61 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v2, 0x0 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "locationNetwork" ++ ++ const/4 v5, 0x0 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/gsm/GSMPhone;->getServiceState()Landroid/telephony/ServiceState; ++ ++ move-result-object v8 ++ ++ const-string v0, "" ++ ++ const-string v1, "" ++ ++ const-string v2, "" ++ ++ invoke-virtual {v8, v0, v1, v2}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V ++ ++ :goto_60 ++ return-object v8 ++ ++ :cond_61 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v2, 0x0 ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "locationNetwork" ++ ++ const/4 v5, 0x0 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/gsm/GSMPhone;->getServiceState()Landroid/telephony/ServiceState; ++ :try_end_74 ++ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_74} :catch_76 ++ ++ move-result-object v8 ++ ++ goto :goto_60 ++ ++ :catch_76 ++ move-exception v7 ++ ++ invoke-virtual {v7}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ const-string v1, "We got exception in getServiceState()-> give fake state" ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/gsm/GSMPhone;->getServiceState()Landroid/telephony/ServiceState; ++ ++ move-result-object v8 ++ ++ const-string v0, "" ++ ++ const-string v1, "" ++ ++ const-string v2, "" ++ ++ invoke-virtual {v8, v0, v1, v2}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V ++ ++ goto :goto_60 ++.end method ++ ++.method public getSubscriberId()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getSubscriberId()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSubscriberIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSubscriberIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "subscriberID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/gsm/GSMPhone;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "subscriberID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getVoiceMailAlphaTag()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getVoiceMailAlphaTag()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/gsm/GSMPhone;->getVoiceMailAlphaTag()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getVoiceMailNumber()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getVoiceMailNumber()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/gsm/GSMPhone;->getVoiceMailNumber()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyGSMPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method +diff -Npru stock-telephony-common/smali/android/privacy/surrogate/PrivacyPhoneProxy.smali pdroid-telephony-common/smali/android/privacy/surrogate/PrivacyPhoneProxy.smali +--- stock-telephony-common/smali/android/privacy/surrogate/PrivacyPhoneProxy.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-telephony-common/smali/android/privacy/surrogate/PrivacyPhoneProxy.smali 2013-08-10 20:38:02.635214276 -0700 +@@ -0,0 +1,3064 @@ ++.class public Landroid/privacy/surrogate/PrivacyPhoneProxy; ++.super Lcom/android/internal/telephony/PhoneProxy; ++.source "PrivacyPhoneProxy.java" ++ ++ ++# static fields ++.field private static final P_TAG:Ljava/lang/String; = "PrivacyPhoneProxy" ++ ++ ++# instance fields ++.field private context:Landroid/content/Context; ++ ++.field private context_available:Z ++ ++.field private mPm:Landroid/content/pm/IPackageManager; ++ ++.field private pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ ++# direct methods ++.method public constructor (Lcom/android/internal/telephony/PhoneBase;Landroid/content/Context;)V ++ .registers 6 ++ ++ invoke-direct {p0, p1}, Lcom/android/internal/telephony/PhoneProxy;->(Lcom/android/internal/telephony/PhoneBase;)V ++ ++ if-eqz p2, :cond_3d ++ ++ iput-object p2, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ const/4 v0, 0x1 ++ ++ iput-boolean v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context_available:Z ++ ++ :goto_a ++ iget-boolean v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context_available:Z ++ ++ invoke-direct {p0, v0}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->initiate(Z)V ++ ++ new-instance v0, Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v1, "privacy" ++ ++ invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v1 ++ ++ invoke-direct {v0, p2, v1}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "Constructor ready for package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {p2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ return-void ++ ++ :cond_3d ++ const/4 v0, 0x0 ++ ++ iput-boolean v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context_available:Z ++ ++ goto :goto_a ++.end method ++ ++.method private getPackageName()[Ljava/lang/String; ++ .registers 6 ++ ++ :try_start_0 ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->mPm:Landroid/content/pm/IPackageManager; ++ ++ if-eqz v3, :cond_f ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v2 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-interface {v3, v2}, Landroid/content/pm/IPackageManager;->getPackagesForUid(I)[Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ :goto_e ++ return-object v1 ++ ++ :cond_f ++ const-string v3, "package" ++ ++ invoke-static {v3}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v3 ++ ++ invoke-static {v3}, Landroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager; ++ ++ move-result-object v3 ++ ++ iput-object v3, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v2 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->mPm:Landroid/content/pm/IPackageManager; ++ ++ invoke-interface {v3, v2}, Landroid/content/pm/IPackageManager;->getPackagesForUid(I)[Ljava/lang/String; ++ :try_end_24 ++ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_24} :catch_26 ++ ++ move-result-object v1 ++ ++ goto :goto_e ++ ++ :catch_26 ++ move-exception v0 ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v3, "PrivacyPhoneProxy" ++ ++ const-string v4, "something went wrong with getting package name" ++ ++ invoke-static {v3, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const/4 v1, 0x0 ++ ++ goto :goto_e ++.end method ++ ++.method private initiate(Z)V ++ .registers 5 ++ ++ if-eqz p1, :cond_21 ++ ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "Context is available for package:" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :goto_20 ++ return-void ++ ++ :cond_21 ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "Context is not available for package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ const-string v0, "package" ++ ++ invoke-static {v0}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v0 ++ ++ invoke-static {v0}, Landroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager; ++ ++ move-result-object v0 ++ ++ iput-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->mPm:Landroid/content/pm/IPackageManager; ++ ++ goto :goto_20 ++.end method ++ ++ ++# virtual methods ++.method public dial(Ljava/lang/String;)Lcom/android/internal/telephony/Connection; ++ .registers 14 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Lcom/android/internal/telephony/CallStateException; ++ } ++ .end annotation ++ ++ const/4 v3, 0x1 ++ ++ const/4 v4, -0x1 ++ ++ const/4 v2, 0x0 ++ ++ const/4 v5, 0x0 ++ ++ iget-boolean v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context_available:Z ++ ++ if-eqz v0, :cond_48 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v0, v1, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v11 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_34 ++ ++ if-eqz v11, :cond_34 ++ ++ invoke-virtual {v11}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_34 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "phoneCall" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ new-instance v0, Lcom/android/internal/telephony/CallStateException; ++ ++ invoke-direct {v0}, Lcom/android/internal/telephony/CallStateException;->()V ++ ++ throw v0 ++ ++ :cond_34 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "phoneCall" ++ ++ move v3, v2 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1}, Lcom/android/internal/telephony/PhoneProxy;->dial(Ljava/lang/String;)Lcom/android/internal/telephony/Connection; ++ ++ move-result-object v0 ++ ++ :goto_47 ++ return-object v0 ++ ++ :cond_48 ++ invoke-direct {p0}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v9 ++ ++ const/4 v7, 0x1 ++ ++ const/4 v11, 0x0 ++ ++ const/4 v10, 0x0 ++ ++ if-nez v9, :cond_56 ++ ++ invoke-super {p0, p1}, Lcom/android/internal/telephony/PhoneProxy;->dial(Ljava/lang/String;)Lcom/android/internal/telephony/Connection; ++ ++ move-result-object v0 ++ ++ goto :goto_47 ++ ++ :cond_56 ++ const/4 v8, 0x0 ++ ++ :goto_57 ++ array-length v0, v9 ++ ++ if-ge v8, v0, :cond_70 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v9, v8 ++ ++ invoke-virtual {v0, v1, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v11 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_82 ++ ++ if-eqz v11, :cond_82 ++ ++ invoke-virtual {v11}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_82 ++ ++ const/4 v7, 0x0 ++ ++ move v10, v8 ++ ++ :cond_70 ++ if-eqz v7, :cond_85 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v9, v10 ++ ++ const-string v4, "phoneCall" ++ ++ move v3, v2 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1}, Lcom/android/internal/telephony/PhoneProxy;->dial(Ljava/lang/String;)Lcom/android/internal/telephony/Connection; ++ ++ move-result-object v0 ++ ++ goto :goto_47 ++ ++ :cond_82 ++ add-int/lit8 v8, v8, 0x1 ++ ++ goto :goto_57 ++ ++ :cond_85 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v9, v10 ++ ++ const-string v4, "phoneCall" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ new-instance v0, Lcom/android/internal/telephony/CallStateException; ++ ++ invoke-direct {v0}, Lcom/android/internal/telephony/CallStateException;->()V ++ ++ throw v0 ++.end method ++ ++.method public dial(Ljava/lang/String;Lcom/android/internal/telephony/UUSInfo;)Lcom/android/internal/telephony/Connection; ++ .registers 15 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Lcom/android/internal/telephony/CallStateException; ++ } ++ .end annotation ++ ++ const/4 v3, 0x1 ++ ++ const/4 v4, -0x1 ++ ++ const/4 v2, 0x0 ++ ++ const/4 v5, 0x0 ++ ++ iget-boolean v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context_available:Z ++ ++ if-eqz v0, :cond_48 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v0, v1, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v11 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_34 ++ ++ if-eqz v11, :cond_34 ++ ++ invoke-virtual {v11}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_34 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "phoneCall" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ new-instance v0, Lcom/android/internal/telephony/CallStateException; ++ ++ invoke-direct {v0}, Lcom/android/internal/telephony/CallStateException;->()V ++ ++ throw v0 ++ ++ :cond_34 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "phoneCall" ++ ++ move v3, v2 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1, p2}, Lcom/android/internal/telephony/PhoneProxy;->dial(Ljava/lang/String;Lcom/android/internal/telephony/UUSInfo;)Lcom/android/internal/telephony/Connection; ++ ++ move-result-object v0 ++ ++ :goto_47 ++ return-object v0 ++ ++ :cond_48 ++ invoke-direct {p0}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v9 ++ ++ const/4 v7, 0x1 ++ ++ const/4 v11, 0x0 ++ ++ const/4 v10, 0x0 ++ ++ if-nez v9, :cond_56 ++ ++ invoke-super {p0, p1, p2}, Lcom/android/internal/telephony/PhoneProxy;->dial(Ljava/lang/String;Lcom/android/internal/telephony/UUSInfo;)Lcom/android/internal/telephony/Connection; ++ ++ move-result-object v0 ++ ++ goto :goto_47 ++ ++ :cond_56 ++ const/4 v8, 0x0 ++ ++ :goto_57 ++ array-length v0, v9 ++ ++ if-ge v8, v0, :cond_70 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v9, v8 ++ ++ invoke-virtual {v0, v1, v4}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v11 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_82 ++ ++ if-eqz v11, :cond_82 ++ ++ invoke-virtual {v11}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_82 ++ ++ const/4 v7, 0x0 ++ ++ move v10, v8 ++ ++ :cond_70 ++ if-eqz v7, :cond_85 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v9, v10 ++ ++ const-string v4, "phoneCall" ++ ++ move v3, v2 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1, p2}, Lcom/android/internal/telephony/PhoneProxy;->dial(Ljava/lang/String;Lcom/android/internal/telephony/UUSInfo;)Lcom/android/internal/telephony/Connection; ++ ++ move-result-object v0 ++ ++ goto :goto_47 ++ ++ :cond_82 ++ add-int/lit8 v8, v8, 0x1 ++ ++ goto :goto_57 ++ ++ :cond_85 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v9, v10 ++ ++ const-string v4, "phoneCall" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ new-instance v0, Lcom/android/internal/telephony/CallStateException; ++ ++ invoke-direct {v0}, Lcom/android/internal/telephony/CallStateException;->()V ++ ++ throw v0 ++.end method ++ ++.method public getCellLocation()Landroid/telephony/CellLocation; ++ .registers 13 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/PhoneProxy;->getPhoneType()I ++ ++ move-result v11 ++ ++ iget-boolean v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context_available:Z ++ ++ if-eqz v0, :cond_b5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_7c ++ ++ if-eqz v6, :cond_7c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v0 ++ ++ if-nez v0, :cond_2c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationGpsSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_7c ++ ++ :cond_2c ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "locationNetwork" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " BLOCKED for getCellLocation()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ packed-switch v11, :pswitch_data_16c ++ ++ new-instance v5, Landroid/telephony/gsm/GsmCellLocation; ++ ++ invoke-direct {v5}, Landroid/telephony/gsm/GsmCellLocation;->()V ++ ++ :goto_69 ++ :pswitch_69 ++ return-object v5 ++ ++ :pswitch_6a ++ new-instance v5, Landroid/telephony/gsm/GsmCellLocation; ++ ++ invoke-direct {v5}, Landroid/telephony/gsm/GsmCellLocation;->()V ++ ++ goto :goto_69 ++ ++ :pswitch_70 ++ new-instance v5, Landroid/telephony/cdma/CdmaCellLocation; ++ ++ invoke-direct {v5}, Landroid/telephony/cdma/CdmaCellLocation;->()V ++ ++ goto :goto_69 ++ ++ :pswitch_76 ++ new-instance v5, Landroid/telephony/cdma/CdmaCellLocation; ++ ++ invoke-direct {v5}, Landroid/telephony/cdma/CdmaCellLocation;->()V ++ ++ goto :goto_69 ++ ++ :cond_7c ++ if-eqz v6, :cond_8c ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "locationNetwork" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_8c ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " ALLOWED for getCellLocation()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/PhoneProxy;->getCellLocation()Landroid/telephony/CellLocation; ++ ++ move-result-object v5 ++ ++ goto :goto_69 ++ ++ :cond_b5 ++ invoke-direct {p0}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v9 ++ ++ const/4 v7, 0x1 ++ ++ const/4 v6, 0x0 ++ ++ const/4 v10, 0x0 ++ ++ if-nez v9, :cond_c3 ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/PhoneProxy;->getCellLocation()Landroid/telephony/CellLocation; ++ ++ move-result-object v5 ++ ++ goto :goto_69 ++ ++ :cond_c3 ++ const/4 v8, 0x0 ++ ++ :goto_c4 ++ array-length v0, v9 ++ ++ if-ge v8, v0, :cond_e7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v9, v8 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_11b ++ ++ if-eqz v6, :cond_11b ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v0 ++ ++ if-nez v0, :cond_e5 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationGpsSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_11b ++ ++ :cond_e5 ++ const/4 v7, 0x0 ++ ++ move v10, v8 ++ ++ :cond_e7 ++ if-eqz v7, :cond_11e ++ ++ if-eqz v6, :cond_f5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v9, v10 ++ ++ const-string v4, "locationNetwork" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_f5 ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ aget-object v2, v9, v10 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " ALLOWED for getCellLocation()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/PhoneProxy;->getCellLocation()Landroid/telephony/CellLocation; ++ ++ move-result-object v5 ++ ++ goto/16 :goto_69 ++ ++ :cond_11b ++ add-int/lit8 v8, v8, 0x1 ++ ++ goto :goto_c4 ++ ++ :cond_11e ++ if-eqz v6, :cond_12d ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v9, v10 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "locationNetwork" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_12d ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ aget-object v2, v9, v10 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " BLOCKED for getCellLocation()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ packed-switch v11, :pswitch_data_178 ++ ++ new-instance v5, Landroid/telephony/gsm/GsmCellLocation; ++ ++ invoke-direct {v5}, Landroid/telephony/gsm/GsmCellLocation;->()V ++ ++ goto/16 :goto_69 ++ ++ :pswitch_157 ++ new-instance v5, Landroid/telephony/gsm/GsmCellLocation; ++ ++ invoke-direct {v5}, Landroid/telephony/gsm/GsmCellLocation;->()V ++ ++ goto/16 :goto_69 ++ ++ :pswitch_15e ++ new-instance v5, Landroid/telephony/cdma/CdmaCellLocation; ++ ++ invoke-direct {v5}, Landroid/telephony/cdma/CdmaCellLocation;->()V ++ ++ goto/16 :goto_69 ++ ++ :pswitch_165 ++ new-instance v5, Landroid/telephony/cdma/CdmaCellLocation; ++ ++ invoke-direct {v5}, Landroid/telephony/cdma/CdmaCellLocation;->()V ++ ++ goto/16 :goto_69 ++ ++ :pswitch_data_16c ++ .packed-switch 0x0 ++ :pswitch_69 ++ :pswitch_6a ++ :pswitch_70 ++ :pswitch_76 ++ .end packed-switch ++ ++ :pswitch_data_178 ++ .packed-switch 0x0 ++ :pswitch_69 ++ :pswitch_157 ++ :pswitch_15e ++ :pswitch_165 ++ .end packed-switch ++.end method ++ ++.method public getDataConnectionState()Lcom/android/internal/telephony/PhoneConstants$DataState; ++ .registers 12 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ iget-boolean v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context_available:Z ++ ++ if-eqz v0, :cond_93 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_5a ++ ++ if-eqz v6, :cond_5a ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_5a ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "networkInfoCurrent" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " BLOCKED for getDataConnection()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ sget-object v0, Lcom/android/internal/telephony/PhoneConstants$DataState;->CONNECTING:Lcom/android/internal/telephony/PhoneConstants$DataState; ++ ++ :goto_59 ++ return-object v0 ++ ++ :cond_5a ++ if-eqz v6, :cond_6a ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "networkInfoCurrent" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_6a ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " ALLOWED for getDataConnection()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/PhoneProxy;->getDataConnectionState()Lcom/android/internal/telephony/PhoneConstants$DataState; ++ ++ move-result-object v0 ++ ++ goto :goto_59 ++ ++ :cond_93 ++ invoke-direct {p0}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v9 ++ ++ const/4 v7, 0x1 ++ ++ const/4 v6, 0x0 ++ ++ const/4 v10, 0x0 ++ ++ if-nez v9, :cond_a1 ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/PhoneProxy;->getDataConnectionState()Lcom/android/internal/telephony/PhoneConstants$DataState; ++ ++ move-result-object v0 ++ ++ goto :goto_59 ++ ++ :cond_a1 ++ const/4 v8, 0x0 ++ ++ :goto_a2 ++ array-length v0, v9 ++ ++ if-ge v8, v0, :cond_bf ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v9, v8 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_f3 ++ ++ if-eqz v6, :cond_f3 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_f3 ++ ++ const/4 v7, 0x0 ++ ++ move v10, v8 ++ ++ :cond_bf ++ if-eqz v7, :cond_f6 ++ ++ if-eqz v6, :cond_cd ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v9, v10 ++ ++ const-string v4, "networkInfoCurrent" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_cd ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ aget-object v2, v9, v10 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " ALLOWED for getDataConnection()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/PhoneProxy;->getDataConnectionState()Lcom/android/internal/telephony/PhoneConstants$DataState; ++ ++ move-result-object v0 ++ ++ goto/16 :goto_59 ++ ++ :cond_f3 ++ add-int/lit8 v8, v8, 0x1 ++ ++ goto :goto_a2 ++ ++ :cond_f6 ++ if-eqz v6, :cond_105 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v9, v10 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "networkInfoCurrent" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_105 ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ aget-object v2, v9, v10 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " BLOCKED for getDataConnection()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ sget-object v0, Lcom/android/internal/telephony/PhoneConstants$DataState;->CONNECTING:Lcom/android/internal/telephony/PhoneConstants$DataState; ++ ++ goto/16 :goto_59 ++.end method ++ ++.method public getDeviceId()Ljava/lang/String; ++ .registers 20 ++ ++ move-object/from16 v0, p0 ++ ++ iget-boolean v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context_available:Z ++ ++ if-eqz v1, :cond_91 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v1, v2, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ if-eqz v7, :cond_5c ++ ++ if-eqz v7, :cond_5c ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_5c ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v4 ++ ++ const-string v5, "deviceID" ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ const-string v1, "PrivacyPhoneProxy" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "package: " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v5, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v5}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ const-string v5, " BLOCKED for getDeviceId()" ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :goto_5b ++ return-object v6 ++ ++ :cond_5c ++ invoke-super/range {p0 .. p0}, Lcom/android/internal/telephony/PhoneProxy;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x0 ++ ++ const-string v5, "deviceID" ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ const-string v1, "PrivacyPhoneProxy" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "package: " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v5, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v5}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ const-string v5, " ALLOWED for getDeviceId()" ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto :goto_5b ++ ++ :cond_91 ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v17 ++ ++ const/4 v15, 0x1 ++ ++ const/4 v14, 0x0 ++ ++ const/16 v18, 0x0 ++ ++ if-nez v17, :cond_a0 ++ ++ invoke-super/range {p0 .. p0}, Lcom/android/internal/telephony/PhoneProxy;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ goto :goto_5b ++ ++ :cond_a0 ++ const/16 v16, 0x0 ++ ++ :goto_a2 ++ move-object/from16 v0, v17 ++ ++ array-length v1, v0 ++ ++ move/from16 v0, v16 ++ ++ if-ge v0, v1, :cond_c8 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v4, v17, v16 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v5 ++ ++ invoke-virtual {v1, v4, v5}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v14 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v1, :cond_103 ++ ++ if-eqz v14, :cond_103 ++ ++ invoke-virtual {v14}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_103 ++ ++ const/4 v15, 0x0 ++ ++ move/from16 v18, v16 ++ ++ :cond_c8 ++ if-eqz v15, :cond_106 ++ ++ invoke-super/range {p0 .. p0}, Lcom/android/internal/telephony/PhoneProxy;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ if-eqz v14, :cond_e1 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v8, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v9, v17, v18 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v10 ++ ++ const/4 v11, 0x0 ++ ++ const-string v12, "deviceID" ++ ++ move-object v13, v6 ++ ++ invoke-virtual/range {v8 .. v14}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_e1 ++ const-string v1, "PrivacyPhoneProxy" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "package: " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ aget-object v5, v17, v18 ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ const-string v5, " ALLOWED for getDeviceId()" ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto/16 :goto_5b ++ ++ :cond_103 ++ add-int/lit8 v16, v16, 0x1 ++ ++ goto :goto_a2 ++ ++ :cond_106 ++ invoke-virtual {v14}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ if-eqz v14, :cond_120 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v8, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v9, v17, v18 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v10 ++ ++ invoke-virtual {v14}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v11 ++ ++ const-string v12, "deviceID" ++ ++ move-object v13, v6 ++ ++ invoke-virtual/range {v8 .. v14}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_120 ++ const-string v1, "PrivacyPhoneProxy" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "package: " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ aget-object v5, v17, v18 ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ const-string v5, " BLOCKED for getDeviceId()" ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto/16 :goto_5b ++.end method ++ ++.method public getDeviceSvn()Ljava/lang/String; ++ .registers 2 ++ ++ invoke-virtual {p0}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public getEsn()Ljava/lang/String; ++ .registers 2 ++ ++ invoke-virtual {p0}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public getIccSerialNumber()Ljava/lang/String; ++ .registers 2 ++ ++ invoke-virtual {p0}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public getImei()Ljava/lang/String; ++ .registers 2 ++ ++ invoke-virtual {p0}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public getLine1AlphaTag()Ljava/lang/String; ++ .registers 2 ++ ++ invoke-virtual {p0}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public getLine1Number()Ljava/lang/String; ++ .registers 20 ++ ++ move-object/from16 v0, p0 ++ ++ iget-boolean v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context_available:Z ++ ++ if-eqz v1, :cond_91 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v1, v2, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ if-eqz v7, :cond_5c ++ ++ if-eqz v7, :cond_5c ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_5c ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v4 ++ ++ const-string v5, "line1Number" ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ const-string v1, "PrivacyPhoneProxy" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "package: " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v5, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v5}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ const-string v5, " BLOCKED for getLine1Number()" ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :goto_5b ++ return-object v6 ++ ++ :cond_5c ++ invoke-super/range {p0 .. p0}, Lcom/android/internal/telephony/PhoneProxy;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x0 ++ ++ const-string v5, "line1Number" ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ const-string v1, "PrivacyPhoneProxy" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "package: " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v5, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v5}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ const-string v5, " ALLOWED for getLine1Number()" ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto :goto_5b ++ ++ :cond_91 ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v17 ++ ++ const/4 v15, 0x1 ++ ++ const/4 v14, 0x0 ++ ++ const/16 v18, 0x0 ++ ++ if-nez v17, :cond_a0 ++ ++ invoke-super/range {p0 .. p0}, Lcom/android/internal/telephony/PhoneProxy;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ goto :goto_5b ++ ++ :cond_a0 ++ const/16 v16, 0x0 ++ ++ :goto_a2 ++ move-object/from16 v0, v17 ++ ++ array-length v1, v0 ++ ++ move/from16 v0, v16 ++ ++ if-ge v0, v1, :cond_c8 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v4, v17, v16 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v5 ++ ++ invoke-virtual {v1, v4, v5}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v14 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v1, :cond_103 ++ ++ if-eqz v14, :cond_103 ++ ++ invoke-virtual {v14}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_103 ++ ++ const/4 v15, 0x0 ++ ++ move/from16 v18, v16 ++ ++ :cond_c8 ++ if-eqz v15, :cond_106 ++ ++ invoke-super/range {p0 .. p0}, Lcom/android/internal/telephony/PhoneProxy;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ if-eqz v14, :cond_e1 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v8, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v9, v17, v18 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v10 ++ ++ const/4 v11, 0x0 ++ ++ const-string v12, "line1Number" ++ ++ move-object v13, v6 ++ ++ invoke-virtual/range {v8 .. v14}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_e1 ++ const-string v1, "PrivacyPhoneProxy" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "package: " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ aget-object v5, v17, v18 ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ const-string v5, " ALLOWED for getLine1Number()" ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto/16 :goto_5b ++ ++ :cond_103 ++ add-int/lit8 v16, v16, 0x1 ++ ++ goto :goto_a2 ++ ++ :cond_106 ++ invoke-virtual {v14}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ if-eqz v14, :cond_120 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v8, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v9, v17, v18 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v10 ++ ++ invoke-virtual {v14}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v11 ++ ++ const-string v12, "line1Number" ++ ++ move-object v13, v6 ++ ++ invoke-virtual/range {v8 .. v14}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_120 ++ const-string v1, "PrivacyPhoneProxy" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "package: " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ aget-object v5, v17, v18 ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ const-string v5, " BLOCKED for getLine1Number()" ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto/16 :goto_5b ++.end method ++ ++.method public getMeid()Ljava/lang/String; ++ .registers 2 ++ ++ invoke-virtual {p0}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public getMsisdn()Ljava/lang/String; ++ .registers 2 ++ ++ invoke-virtual {p0}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public getPhoneSubInfo()Lcom/android/internal/telephony/PhoneSubInfo; ++ .registers 2 ++ ++ new-instance v0, Lcom/android/internal/telephony/PhoneSubInfo; ++ ++ invoke-direct {v0, p0}, Lcom/android/internal/telephony/PhoneSubInfo;->(Lcom/android/internal/telephony/Phone;)V ++ ++ return-object v0 ++.end method ++ ++.method public getServiceState()Landroid/telephony/ServiceState; ++ .registers 13 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ iget-boolean v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context_available:Z ++ ++ if-eqz v0, :cond_9e ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_65 ++ ++ if-eqz v6, :cond_65 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_65 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "networkInfoCurrent" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " BLOCKED for getServiceState()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/PhoneProxy;->getServiceState()Landroid/telephony/ServiceState; ++ ++ move-result-object v9 ++ ++ const-string v0, "" ++ ++ const-string v1, "" ++ ++ const-string v2, "" ++ ++ invoke-virtual {v9, v0, v1, v2}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V ++ ++ :goto_64 ++ return-object v9 ++ ++ :cond_65 ++ if-eqz v6, :cond_75 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "networkInfoCurrent" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_75 ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " ALLOWED for getServiceState()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/PhoneProxy;->getServiceState()Landroid/telephony/ServiceState; ++ ++ move-result-object v9 ++ ++ goto :goto_64 ++ ++ :cond_9e ++ invoke-direct {p0}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v10 ++ ++ const/4 v7, 0x1 ++ ++ const/4 v6, 0x0 ++ ++ const/4 v11, 0x0 ++ ++ if-nez v10, :cond_ac ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/PhoneProxy;->getServiceState()Landroid/telephony/ServiceState; ++ ++ move-result-object v9 ++ ++ goto :goto_64 ++ ++ :cond_ac ++ const/4 v8, 0x0 ++ ++ :goto_ad ++ array-length v0, v10 ++ ++ if-ge v8, v0, :cond_ca ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v10, v8 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_fe ++ ++ if-eqz v6, :cond_fe ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_fe ++ ++ const/4 v7, 0x0 ++ ++ move v11, v8 ++ ++ :cond_ca ++ if-eqz v7, :cond_101 ++ ++ if-eqz v6, :cond_d8 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v10, v11 ++ ++ const-string v4, "networkInfoCurrent" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_d8 ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ aget-object v2, v10, v11 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " ALLOWED for getServiceState()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/PhoneProxy;->getServiceState()Landroid/telephony/ServiceState; ++ ++ move-result-object v9 ++ ++ goto/16 :goto_64 ++ ++ :cond_fe ++ add-int/lit8 v8, v8, 0x1 ++ ++ goto :goto_ad ++ ++ :cond_101 ++ if-eqz v6, :cond_110 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v10, v11 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "networkInfoCurrent" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_110 ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ aget-object v2, v10, v11 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " BLOCKED for getServiceState()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/PhoneProxy;->getServiceState()Landroid/telephony/ServiceState; ++ ++ move-result-object v9 ++ ++ const-string v0, "" ++ ++ const-string v1, "" ++ ++ const-string v2, "" ++ ++ invoke-virtual {v9, v0, v1, v2}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V ++ ++ goto/16 :goto_64 ++.end method ++ ++.method public getSignalStrength()Landroid/telephony/SignalStrength; ++ .registers 13 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ new-instance v9, Landroid/telephony/SignalStrength; ++ ++ invoke-direct {v9}, Landroid/telephony/SignalStrength;->()V ++ ++ iget-boolean v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context_available:Z ++ ++ if-eqz v0, :cond_96 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_5d ++ ++ if-eqz v6, :cond_5d ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_5d ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "networkInfoCurrent" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " BLOCKED for getSignalStrength()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :goto_5c ++ return-object v9 ++ ++ :cond_5d ++ if-eqz v6, :cond_6d ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "networkInfoCurrent" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_6d ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " ALLOWED for getSignalStrength()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/PhoneProxy;->getSignalStrength()Landroid/telephony/SignalStrength; ++ ++ move-result-object v9 ++ ++ goto :goto_5c ++ ++ :cond_96 ++ invoke-direct {p0}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v10 ++ ++ const/4 v7, 0x1 ++ ++ const/4 v6, 0x0 ++ ++ const/4 v11, 0x0 ++ ++ if-nez v10, :cond_a4 ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/PhoneProxy;->getSignalStrength()Landroid/telephony/SignalStrength; ++ ++ move-result-object v9 ++ ++ goto :goto_5c ++ ++ :cond_a4 ++ const/4 v8, 0x0 ++ ++ :goto_a5 ++ array-length v0, v10 ++ ++ if-ge v8, v0, :cond_c2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v10, v8 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_f6 ++ ++ if-eqz v6, :cond_f6 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_f6 ++ ++ const/4 v7, 0x0 ++ ++ move v11, v8 ++ ++ :cond_c2 ++ if-eqz v7, :cond_f9 ++ ++ if-eqz v6, :cond_d0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v10, v11 ++ ++ const-string v4, "networkInfoCurrent" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_d0 ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ aget-object v2, v10, v11 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " ALLOWED for getSignalStrength()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/PhoneProxy;->getSignalStrength()Landroid/telephony/SignalStrength; ++ ++ move-result-object v9 ++ ++ goto/16 :goto_5c ++ ++ :cond_f6 ++ add-int/lit8 v8, v8, 0x1 ++ ++ goto :goto_a5 ++ ++ :cond_f9 ++ if-eqz v6, :cond_108 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v1, v10, v11 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "networkInfoCurrent" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_108 ++ const-string v0, "PrivacyPhoneProxy" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ aget-object v2, v10, v11 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " BLOCKED for getSignalStrength()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto/16 :goto_5c ++.end method ++ ++.method public getSubscriberId()Ljava/lang/String; ++ .registers 20 ++ ++ move-object/from16 v0, p0 ++ ++ iget-boolean v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context_available:Z ++ ++ if-eqz v1, :cond_91 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v1, v2, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ if-eqz v7, :cond_5c ++ ++ if-eqz v7, :cond_5c ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getSubscriberIdSetting()B ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_5c ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getSubscriberIdSetting()B ++ ++ move-result v4 ++ ++ const-string v5, "subscriberID" ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ const-string v1, "PrivacyPhoneProxy" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "package: " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v5, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v5}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ const-string v5, " BLOCKED for getSubscriberId()" ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :goto_5b ++ return-object v6 ++ ++ :cond_5c ++ invoke-super/range {p0 .. p0}, Lcom/android/internal/telephony/PhoneProxy;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v4, 0x0 ++ ++ const-string v5, "subscriberID" ++ ++ invoke-virtual/range {v1 .. v7}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ const-string v1, "PrivacyPhoneProxy" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "package: " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v5, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->context:Landroid/content/Context; ++ ++ invoke-virtual {v5}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ const-string v5, " ALLOWED for getSubscriberId()" ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto :goto_5b ++ ++ :cond_91 ++ invoke-direct/range {p0 .. p0}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v17 ++ ++ const/4 v15, 0x1 ++ ++ const/4 v14, 0x0 ++ ++ const/16 v18, 0x0 ++ ++ if-nez v17, :cond_a0 ++ ++ invoke-super/range {p0 .. p0}, Lcom/android/internal/telephony/PhoneProxy;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ goto :goto_5b ++ ++ :cond_a0 ++ const/16 v16, 0x0 ++ ++ :goto_a2 ++ move-object/from16 v0, v17 ++ ++ array-length v1, v0 ++ ++ move/from16 v0, v16 ++ ++ if-ge v0, v1, :cond_c8 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v4, v17, v16 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v5 ++ ++ invoke-virtual {v1, v4, v5}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v14 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v1, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v1, :cond_103 ++ ++ if-eqz v14, :cond_103 ++ ++ invoke-virtual {v14}, Landroid/privacy/PrivacySettings;->getSubscriberIdSetting()B ++ ++ move-result v1 ++ ++ if-eqz v1, :cond_103 ++ ++ const/4 v15, 0x0 ++ ++ move/from16 v18, v16 ++ ++ :cond_c8 ++ if-eqz v15, :cond_106 ++ ++ invoke-super/range {p0 .. p0}, Lcom/android/internal/telephony/PhoneProxy;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ if-eqz v14, :cond_e1 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v8, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v9, v17, v18 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v10 ++ ++ const/4 v11, 0x0 ++ ++ const-string v12, "subscriberID" ++ ++ move-object v13, v6 ++ ++ invoke-virtual/range {v8 .. v14}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_e1 ++ const-string v1, "PrivacyPhoneProxy" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "package: " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ aget-object v5, v17, v18 ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ const-string v5, " ALLOWED for getSubscriberId()" ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto/16 :goto_5b ++ ++ :cond_103 ++ add-int/lit8 v16, v16, 0x1 ++ ++ goto :goto_a2 ++ ++ :cond_106 ++ invoke-virtual {v14}, Landroid/privacy/PrivacySettings;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v6 ++ ++ if-eqz v14, :cond_120 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v8, v0, Landroid/privacy/surrogate/PrivacyPhoneProxy;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v9, v17, v18 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v10 ++ ++ invoke-virtual {v14}, Landroid/privacy/PrivacySettings;->getSubscriberIdSetting()B ++ ++ move-result v11 ++ ++ const-string v12, "subscriberID" ++ ++ move-object v13, v6 ++ ++ invoke-virtual/range {v8 .. v14}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :cond_120 ++ const-string v1, "PrivacyPhoneProxy" ++ ++ new-instance v4, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v4}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v5, "package: " ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ aget-object v5, v17, v18 ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ const-string v5, " BLOCKED for getSubscriberId()" ++ ++ invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ goto/16 :goto_5b ++.end method ++ ++.method public getVoiceMailNumber()Ljava/lang/String; ++ .registers 2 ++ ++ invoke-virtual {p0}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method +diff -Npru stock-telephony-common/smali/android/privacy/surrogate/PrivacySipPhone.smali pdroid-telephony-common/smali/android/privacy/surrogate/PrivacySipPhone.smali +--- stock-telephony-common/smali/android/privacy/surrogate/PrivacySipPhone.smali 1969-12-31 16:00:00.000000000 -0800 ++++ pdroid-telephony-common/smali/android/privacy/surrogate/PrivacySipPhone.smali 2013-08-10 20:38:02.667214278 -0700 +@@ -0,0 +1,1602 @@ ++.class public Landroid/privacy/surrogate/PrivacySipPhone; ++.super Lcom/android/internal/telephony/sip/SipPhone; ++.source "PrivacySipPhone.java" ++ ++ ++# static fields ++.field private static final P_TAG:Ljava/lang/String; = "PrivacyGSMPhone" ++ ++ ++# instance fields ++.field private context:Landroid/content/Context; ++ ++.field private pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ ++# direct methods ++.method public constructor (Landroid/content/Context;Lcom/android/internal/telephony/PhoneNotifier;Landroid/net/sip/SipProfile;)V ++ .registers 7 ++ ++ invoke-direct {p0, p1, p2, p3}, Lcom/android/internal/telephony/sip/SipPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/PhoneNotifier;Landroid/net/sip/SipProfile;)V ++ ++ iput-object p1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ new-instance v0, Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v1, "privacy" ++ ++ invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v1 ++ ++ invoke-static {v1}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v1 ++ ++ invoke-direct {v0, p1, v1}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "Constructor ready for package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ return-void ++.end method ++ ++ ++# virtual methods ++.method public dial(Ljava/lang/String;)Lcom/android/internal/telephony/Connection; ++ .registers 10 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Lcom/android/internal/telephony/CallStateException; ++ } ++ .end annotation ++ ++ const/4 v2, 0x0 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, -0x1 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_30 ++ ++ if-eqz v7, :cond_30 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_30 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string v4, "phoneCall" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ new-instance v0, Lcom/android/internal/telephony/CallStateException; ++ ++ invoke-direct {v0}, Lcom/android/internal/telephony/CallStateException;->()V ++ ++ throw v0 ++ ++ :cond_30 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "phoneCall" ++ ++ move v3, v2 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1}, Lcom/android/internal/telephony/sip/SipPhone;->dial(Ljava/lang/String;)Lcom/android/internal/telephony/Connection; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public dial(Ljava/lang/String;Lcom/android/internal/telephony/UUSInfo;)Lcom/android/internal/telephony/Connection; ++ .registers 11 ++ .annotation system Ldalvik/annotation/Throws; ++ value = { ++ Lcom/android/internal/telephony/CallStateException; ++ } ++ .end annotation ++ ++ const/4 v2, 0x0 ++ ++ const/4 v5, 0x0 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, -0x1 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v7 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_30 ++ ++ if-eqz v7, :cond_30 ++ ++ invoke-virtual {v7}, Landroid/privacy/PrivacySettings;->getPhoneCallSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_30 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v3, 0x1 ++ ++ const-string v4, "phoneCall" ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ new-instance v0, Lcom/android/internal/telephony/CallStateException; ++ ++ invoke-direct {v0}, Lcom/android/internal/telephony/CallStateException;->()V ++ ++ throw v0 ++ ++ :cond_30 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "phoneCall" ++ ++ move v3, v2 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0, p1, p2}, Lcom/android/internal/telephony/sip/SipPhone;->dial(Ljava/lang/String;Lcom/android/internal/telephony/UUSInfo;)Lcom/android/internal/telephony/Connection; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ ++.method public getCellLocation()Landroid/telephony/CellLocation; ++ .registers 8 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "Package: " ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v3, " asked for getCellLocation()" ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_5f ++ ++ if-eqz v6, :cond_5f ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationGpsSetting()B ++ ++ move-result v0 ++ ++ if-nez v0, :cond_48 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_5f ++ ++ :cond_48 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "locationNetwork" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ new-instance v0, Landroid/telephony/gsm/GsmCellLocation; ++ ++ invoke-direct {v0}, Landroid/telephony/gsm/GsmCellLocation;->()V ++ ++ :goto_5e ++ return-object v0 ++ ++ :cond_5f ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "locationNetwork" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/sip/SipPhone;->getCellLocation()Landroid/telephony/CellLocation; ++ ++ move-result-object v0 ++ ++ goto :goto_5e ++.end method ++ ++.method public getDeviceId()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getDeviceId()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/sip/SipPhone;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getDeviceSvn()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getDeviceSvn()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/sip/SipPhone;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getEsn()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getEsn()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/sip/SipPhone;->getEsn()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getImei()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getImei" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/sip/SipPhone;->getImei()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getLine1AlphaTag()Ljava/lang/String; ++ .registers 8 ++ ++ const/4 v2, 0x0 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "Package: " ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v3, " asked for getLine1AlphaTag()" ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ const-string v5, "" ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_59 ++ ++ if-eqz v6, :cond_59 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_59 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_58 ++ return-object v5 ++ ++ :cond_59 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "line1Number" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/sip/SipPhone;->getLine1AlphaTag()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ goto :goto_58 ++.end method ++ ++.method public getLine1Number()Ljava/lang/String; ++ .registers 8 ++ ++ const/4 v2, 0x0 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "Package: " ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v3, " asked for getLine1Number()" ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ const-string v5, "" ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_59 ++ ++ if-eqz v6, :cond_59 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_59 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_58 ++ return-object v5 ++ ++ :cond_59 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "line1Number" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/sip/SipPhone;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ goto :goto_58 ++.end method ++ ++.method public getMeid()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getMeid()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getDeviceIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/sip/SipPhone;->getMeid()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "deviceID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getPhoneSubInfo()Lcom/android/internal/telephony/PhoneSubInfo; ++ .registers 8 ++ ++ const/4 v5, 0x0 ++ ++ const/4 v2, 0x0 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v3, "Package: " ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v3, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v3, " asked for getPhoneSubInfo()" ++ ++ invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v3 ++ ++ invoke-virtual {v0, v1, v3}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_54 ++ ++ if-eqz v6, :cond_54 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_54 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "locationNetwork" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_53 ++ return-object v5 ++ ++ :cond_54 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const-string v4, "locationNetwork" ++ ++ move v3, v2 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/sip/SipPhone;->getPhoneSubInfo()Lcom/android/internal/telephony/PhoneSubInfo; ++ ++ move-result-object v5 ++ ++ goto :goto_53 ++.end method ++ ++.method public getServiceState()Landroid/telephony/ServiceState; ++ .registers 10 ++ ++ :try_start_0 ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v1, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v1}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v2, "Package: " ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ iget-object v2, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ const-string v2, " asked for getServiceState()" ++ ++ invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v1 ++ ++ invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Process;->myUid()I ++ ++ move-result v2 ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v0, :cond_61 ++ ++ if-eqz v6, :cond_61 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_61 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v2, 0x0 ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "locationNetwork" ++ ++ const/4 v5, 0x0 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/sip/SipPhone;->getServiceState()Landroid/telephony/ServiceState; ++ ++ move-result-object v8 ++ ++ const-string v0, "" ++ ++ const-string v1, "" ++ ++ const-string v2, "" ++ ++ invoke-virtual {v8, v0, v1, v2}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V ++ ++ :goto_60 ++ return-object v8 ++ ++ :cond_61 ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v1, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ const/4 v2, 0x0 ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "locationNetwork" ++ ++ const/4 v5, 0x0 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/sip/SipPhone;->getServiceState()Landroid/telephony/ServiceState; ++ :try_end_74 ++ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_74} :catch_76 ++ ++ move-result-object v8 ++ ++ goto :goto_60 ++ ++ :catch_76 ++ move-exception v7 ++ ++ invoke-virtual {v7}, Ljava/lang/Exception;->printStackTrace()V ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ const-string v1, "We got exception in getServiceState()-> give fake state" ++ ++ invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-super {p0}, Lcom/android/internal/telephony/sip/SipPhone;->getServiceState()Landroid/telephony/ServiceState; ++ ++ move-result-object v8 ++ ++ const-string v0, "" ++ ++ const-string v1, "" ++ ++ const-string v2, "" ++ ++ invoke-virtual {v8, v0, v1, v2}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V ++ ++ goto :goto_60 ++.end method ++ ++.method public getSubscriberId()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getSubscriberId()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSubscriberIdSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getSubscriberIdSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "subscriberID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/sip/SipPhone;->getSubscriberId()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "subscriberID" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getVoiceMailAlphaTag()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getVoiceMailAlphaTag()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/sip/SipPhone;->getVoiceMailAlphaTag()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method ++ ++.method public getVoiceMailNumber()Ljava/lang/String; ++ .registers 8 ++ ++ const-string v0, "PrivacyGSMPhone" ++ ++ new-instance v3, Ljava/lang/StringBuilder; ++ ++ invoke-direct {v3}, Ljava/lang/StringBuilder;->()V ++ ++ const-string v4, "Package: " ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ iget-object v4, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v4 ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ const-string v4, " asked for getVoiceMailNumber()" ++ ++ invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ ++ move-result-object v3 ++ ++ invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-static {v0, v3}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->context:Landroid/content/Context; ++ ++ invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v0, v1, v2}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v6 ++ ++ if-eqz v6, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v0 ++ ++ if-eqz v0, :cond_4c ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1Number()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ invoke-virtual {v6}, Landroid/privacy/PrivacySettings;->getLine1NumberSetting()B ++ ++ move-result v3 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ :goto_4b ++ return-object v5 ++ ++ :cond_4c ++ invoke-super {p0}, Lcom/android/internal/telephony/sip/SipPhone;->getVoiceMailNumber()Ljava/lang/String; ++ ++ move-result-object v5 ++ ++ iget-object v0, p0, Landroid/privacy/surrogate/PrivacySipPhone;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "line1Number" ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_4b ++.end method +diff -Npru stock-telephony-common/smali/com/android/internal/telephony/cdma/CDMAPhone.smali pdroid-telephony-common/smali/com/android/internal/telephony/cdma/CDMAPhone.smali +--- stock-telephony-common/smali/com/android/internal/telephony/cdma/CDMAPhone.smali 2013-08-10 20:38:01.563214232 -0700 ++++ pdroid-telephony-common/smali/com/android/internal/telephony/cdma/CDMAPhone.smali 2013-08-10 20:38:02.519214272 -0700 +@@ -3487,7 +3487,7 @@ + return-void + .end method + +-.method notifyLocationChanged()V ++.method public notifyLocationChanged()V + .registers 2 + + iget-object v0, p0, Lcom/android/internal/telephony/cdma/CDMAPhone;->mNotifier:Lcom/android/internal/telephony/PhoneNotifier; +diff -Npru stock-telephony-common/smali/com/android/internal/telephony/cdma/CdmaServiceStateTracker.smali pdroid-telephony-common/smali/com/android/internal/telephony/cdma/CdmaServiceStateTracker.smali +--- stock-telephony-common/smali/com/android/internal/telephony/cdma/CdmaServiceStateTracker.smali 2013-08-10 20:38:01.615214235 -0700 ++++ pdroid-telephony-common/smali/com/android/internal/telephony/cdma/CdmaServiceStateTracker.smali 2013-08-10 20:38:03.279214304 -0700 +@@ -38,6 +38,8 @@ + + .field mCellLoc:Landroid/telephony/cdma/CdmaCellLocation; + ++.field private mContext:Landroid/content/Context; ++ + .field private mCr:Landroid/content/ContentResolver; + + .field protected mCurPlmn:Ljava/lang/String; +@@ -100,6 +102,8 @@ + + .field private mZoneTime:J + ++.field private pSetMan:Landroid/privacy/PrivacySettingsManager; ++ + + # direct methods + .method public constructor (Lcom/android/internal/telephony/cdma/CDMAPhone;)V +@@ -251,7 +255,7 @@ + + move-result v2 + +- if-nez v2, :cond_f5 ++ if-nez v2, :cond_10e + + move v2, v3 + +@@ -351,12 +355,36 @@ + + invoke-virtual {p0}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->setSignalStrengthDefaultValues()V + ++ invoke-virtual {p1}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getContext()Landroid/content/Context; ++ ++ move-result-object v2 ++ ++ iput-object v2, p0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mContext:Landroid/content/Context; ++ ++ new-instance v2, Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v3, p0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mContext:Landroid/content/Context; ++ ++ const-string v4, "privacy" ++ ++ invoke-static {v4}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v4 ++ ++ invoke-static {v4}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v4 ++ ++ invoke-direct {v2, v3, v4}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v2, p0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ + return-void + +- :cond_f5 ++ :cond_10e + move v2, v4 + +- goto :goto_8e ++ goto/16 :goto_8e + .end method + + .method static synthetic access$000(Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;)V +@@ -3854,7 +3882,7 @@ + .end method + + .method public handleMessage(Landroid/os/Message;)V +- .registers 22 ++ .registers 24 + + move-object/from16 v0, p0 + +@@ -3868,9 +3896,9 @@ + + invoke-direct {v3}, Ljava/lang/StringBuilder;->()V + +- const-string v18, "Received message " ++ const-string v20, "Received message " + +- move-object/from16 v0, v18 ++ move-object/from16 v0, v20 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +@@ -3882,9 +3910,9 @@ + + move-result-object v3 + +- const-string v18, "[" ++ const-string v20, "[" + +- move-object/from16 v0, v18 ++ move-object/from16 v0, v20 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +@@ -3894,25 +3922,25 @@ + + iget v0, v0, Landroid/os/Message;->what:I + +- move/from16 v18, v0 ++ move/from16 v20, v0 + +- move/from16 v0, v18 ++ move/from16 v0, v20 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + + move-result-object v3 + +- const-string v18, "]" ++ const-string v20, "]" + +- move-object/from16 v0, v18 ++ move-object/from16 v0, v20 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + move-result-object v3 + +- const-string v18, " while being destroyed. Ignoring." ++ const-string v20, " while being destroyed. Ignoring." + +- move-object/from16 v0, v18 ++ move-object/from16 v0, v20 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +@@ -3935,7 +3963,7 @@ + + iget v3, v0, Landroid/os/Message;->what:I + +- packed-switch v3, :pswitch_data_320 ++ packed-switch v3, :pswitch_data_384 + + :pswitch_50 + invoke-super/range {p0 .. p1}, Lcom/android/internal/telephony/ServiceStateTracker;->handleMessage(Landroid/os/Message;)V +@@ -3972,9 +4000,9 @@ + + move-result v3 + +- const/16 v18, 0x1 ++ const/16 v20, 0x1 + +- move/from16 v0, v18 ++ move/from16 v0, v20 + + if-ne v3, v0, :cond_88 + +@@ -4020,9 +4048,9 @@ + + move-result-object v3 + +- sget-object v18, Lcom/android/internal/telephony/CommandsInterface$RadioState;->RADIO_ON:Lcom/android/internal/telephony/CommandsInterface$RadioState; ++ sget-object v20, Lcom/android/internal/telephony/CommandsInterface$RadioState;->RADIO_ON:Lcom/android/internal/telephony/CommandsInterface$RadioState; + +- move-object/from16 v0, v18 ++ move-object/from16 v0, v20 + + if-ne v3, v0, :cond_b5 + +@@ -4092,15 +4120,15 @@ + + iget-object v3, v9, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable; + +- if-nez v3, :cond_15b ++ if-nez v3, :cond_185 + + iget-object v3, v9, Landroid/os/AsyncResult;->result:Ljava/lang/Object; + + check-cast v3, [Ljava/lang/String; + +- move-object/from16 v17, v3 ++ move-object/from16 v18, v3 + +- check-cast v17, [Ljava/lang/String; ++ check-cast v18, [Ljava/lang/String; + + const/4 v4, -0x1 + +@@ -4112,26 +4140,26 @@ + + const/4 v8, -0x1 + +- move-object/from16 v0, v17 ++ move-object/from16 v0, v18 + + array-length v3, v0 + +- const/16 v18, 0x9 ++ const/16 v20, 0x9 + +- move/from16 v0, v18 ++ move/from16 v0, v20 + + if-le v3, v0, :cond_14d + + const/4 v3, 0x4 + + :try_start_104 +- aget-object v3, v17, v3 ++ aget-object v3, v18, v3 + + if-eqz v3, :cond_10f + + const/4 v3, 0x4 + +- aget-object v3, v17, v3 ++ aget-object v3, v18, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + +@@ -4140,13 +4168,13 @@ + :cond_10f + const/4 v3, 0x5 + +- aget-object v3, v17, v3 ++ aget-object v3, v18, v3 + + if-eqz v3, :cond_11b + + const/4 v3, 0x5 + +- aget-object v3, v17, v3 ++ aget-object v3, v18, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + +@@ -4155,13 +4183,13 @@ + :cond_11b + const/4 v3, 0x6 + +- aget-object v3, v17, v3 ++ aget-object v3, v18, v3 + + if-eqz v3, :cond_127 + + const/4 v3, 0x6 + +- aget-object v3, v17, v3 ++ aget-object v3, v18, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + +@@ -4179,13 +4207,13 @@ + :cond_131 + const/16 v3, 0x8 + +- aget-object v3, v17, v3 ++ aget-object v3, v18, v3 + + if-eqz v3, :cond_13f + + const/16 v3, 0x8 + +- aget-object v3, v17, v3 ++ aget-object v3, v18, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + +@@ -4194,17 +4222,17 @@ + :cond_13f + const/16 v3, 0x9 + +- aget-object v3, v17, v3 ++ aget-object v3, v18, v3 + + if-eqz v3, :cond_14d + + const/16 v3, 0x9 + +- aget-object v3, v17, v3 ++ aget-object v3, v18, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + :try_end_14c +- .catch Ljava/lang/NumberFormatException; {:try_start_104 .. :try_end_14c} :catch_160 ++ .catch Ljava/lang/NumberFormatException; {:try_start_104 .. :try_end_14c} :catch_18a + + move-result v8 + +@@ -4212,31 +4240,74 @@ + :goto_14d + move-object/from16 v0, p0 + ++ iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mContext:Landroid/content/Context; ++ ++ move-object/from16 v20, v0 ++ ++ invoke-virtual/range {v20 .. v20}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v20 ++ ++ const/16 v21, 0x0 ++ ++ move-object/from16 v0, v20 ++ ++ move/from16 v1, v21 ++ ++ invoke-virtual {v3, v0, v1}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v17 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v3, :cond_1a6 ++ ++ if-eqz v17, :cond_1a6 ++ ++ invoke-virtual/range {v17 .. v17}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const/16 v20, 0x1 ++ ++ move/from16 v0, v20 ++ ++ if-ne v3, v0, :cond_1a6 ++ ++ move-object/from16 v0, p0 ++ + iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mCellLoc:Landroid/telephony/cdma/CdmaCellLocation; + +- invoke-virtual/range {v3 .. v8}, Landroid/telephony/cdma/CdmaCellLocation;->setCellLocationData(IIIII)V ++ invoke-virtual {v3}, Landroid/telephony/cdma/CdmaCellLocation;->setStateInvalid()V + ++ :goto_17e + move-object/from16 v0, p0 + + iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mPhone:Lcom/android/internal/telephony/cdma/CDMAPhone; + + invoke-virtual {v3}, Lcom/android/internal/telephony/cdma/CDMAPhone;->notifyLocationChanged()V + +- :cond_15b ++ :cond_185 + invoke-virtual/range {p0 .. p0}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->disableSingleLocationUpdate()V + + goto/16 :goto_48 + +- :catch_160 ++ :catch_18a + move-exception v11 + + new-instance v3, Ljava/lang/StringBuilder; + + invoke-direct {v3}, Ljava/lang/StringBuilder;->()V + +- const-string v18, "error parsing cell location data: " ++ const-string v20, "error parsing cell location data: " + +- move-object/from16 v0, v18 ++ move-object/from16 v0, v20 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +@@ -4256,7 +4327,67 @@ + + goto :goto_14d + +- :pswitch_17c ++ :cond_1a6 ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v3, :cond_1d9 ++ ++ if-eqz v17, :cond_1d9 ++ ++ invoke-virtual/range {v17 .. v17}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const/16 v20, 0x3 ++ ++ move/from16 v0, v20 ++ ++ if-ne v3, v0, :cond_1d9 ++ ++ new-instance v19, Ljava/util/Random; ++ ++ invoke-direct/range {v19 .. v19}, Ljava/util/Random;->()V ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mCellLoc:Landroid/telephony/cdma/CdmaCellLocation; ++ ++ invoke-virtual/range {v19 .. v19}, Ljava/util/Random;->nextInt()I ++ ++ move-result v4 ++ ++ invoke-virtual/range {v19 .. v19}, Ljava/util/Random;->nextInt()I ++ ++ move-result v5 ++ ++ invoke-virtual/range {v19 .. v19}, Ljava/util/Random;->nextInt()I ++ ++ move-result v6 ++ ++ invoke-virtual/range {v19 .. v19}, Ljava/util/Random;->nextInt()I ++ ++ move-result v7 ++ ++ invoke-virtual/range {v19 .. v19}, Ljava/util/Random;->nextInt()I ++ ++ move-result v8 ++ ++ invoke-virtual/range {v3 .. v8}, Landroid/telephony/cdma/CdmaCellLocation;->setCellLocationData(IIIII)V ++ ++ goto :goto_17e ++ ++ :cond_1d9 ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mCellLoc:Landroid/telephony/cdma/CdmaCellLocation; ++ ++ invoke-virtual/range {v3 .. v8}, Landroid/telephony/cdma/CdmaCellLocation;->setCellLocationData(IIIII)V ++ ++ goto :goto_17e ++ ++ :pswitch_1e1 + move-object/from16 v0, p1 + + iget-object v9, v0, Landroid/os/Message;->obj:Ljava/lang/Object; +@@ -4273,7 +4404,7 @@ + + goto/16 :goto_48 + +- :pswitch_18d ++ :pswitch_1f2 + move-object/from16 v0, p1 + + iget-object v9, v0, Landroid/os/Message;->obj:Ljava/lang/Object; +@@ -4292,15 +4423,15 @@ + + check-cast v10, [Ljava/lang/String; + +- if-eqz v10, :cond_21f ++ if-eqz v10, :cond_284 + + array-length v3, v10 + +- const/16 v18, 0x5 ++ const/16 v20, 0x5 + +- move/from16 v0, v18 ++ move/from16 v0, v20 + +- if-lt v3, v0, :cond_21f ++ if-lt v3, v0, :cond_284 + + const/4 v3, 0x0 + +@@ -4314,13 +4445,13 @@ + + aget-object v3, v10, v3 + +- const/16 v18, 0x2 ++ const/16 v20, 0x2 + +- aget-object v18, v10, v18 ++ aget-object v20, v10, v20 + + move-object/from16 v0, p0 + +- move-object/from16 v1, v18 ++ move-object/from16 v1, v20 + + invoke-virtual {v0, v3, v1}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->parseSidNid(Ljava/lang/String;Ljava/lang/String;)V + +@@ -4344,9 +4475,9 @@ + + invoke-direct {v3}, Ljava/lang/StringBuilder;->()V + +- const-string v18, "GET_CDMA_SUBSCRIPTION: MDN=" ++ const-string v20, "GET_CDMA_SUBSCRIPTION: MDN=" + +- move-object/from16 v0, v18 ++ move-object/from16 v0, v20 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +@@ -4356,9 +4487,9 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mMdn:Ljava/lang/String; + +- move-object/from16 v18, v0 ++ move-object/from16 v20, v0 + +- move-object/from16 v0, v18 ++ move-object/from16 v0, v20 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +@@ -4384,13 +4515,13 @@ + + iget-boolean v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mIsSubscriptionFromRuim:Z + +- if-nez v3, :cond_216 ++ if-nez v3, :cond_27b + + move-object/from16 v0, p0 + + iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mIccRecords:Lcom/android/internal/telephony/uicc/IccRecords; + +- if-eqz v3, :cond_216 ++ if-eqz v3, :cond_27b + + const-string v3, "GET_CDMA_SUBSCRIPTION set imsi in mIccRecords" + +@@ -4404,15 +4535,15 @@ + + invoke-virtual/range {p0 .. p0}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->getImsi()Ljava/lang/String; + +- move-result-object v18 ++ move-result-object v20 + +- move-object/from16 v0, v18 ++ move-object/from16 v0, v20 + + invoke-virtual {v3, v0}, Lcom/android/internal/telephony/uicc/IccRecords;->setImsi(Ljava/lang/String;)V + + goto/16 :goto_48 + +- :cond_216 ++ :cond_27b + const-string v3, "GET_CDMA_SUBSCRIPTION either mIccRecords is null or NV type device - not setting Imsi in mIccRecords" + + move-object/from16 v0, p0 +@@ -4421,14 +4552,14 @@ + + goto/16 :goto_48 + +- :cond_21f ++ :cond_284 + new-instance v3, Ljava/lang/StringBuilder; + + invoke-direct {v3}, Ljava/lang/StringBuilder;->()V + +- const-string v18, "GET_CDMA_SUBSCRIPTION: error parsing cdmaSubscription params num=" ++ const-string v20, "GET_CDMA_SUBSCRIPTION: error parsing cdmaSubscription params num=" + +- move-object/from16 v0, v18 ++ move-object/from16 v0, v20 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +@@ -4436,9 +4567,9 @@ + + array-length v0, v10 + +- move/from16 v18, v0 ++ move/from16 v20, v0 + +- move/from16 v0, v18 ++ move/from16 v0, v20 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + +@@ -4454,28 +4585,28 @@ + + goto/16 :goto_48 + +- :pswitch_240 ++ :pswitch_2a5 + move-object/from16 v0, p0 + + iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mCi:Lcom/android/internal/telephony/CommandsInterface; + +- const/16 v18, 0x3 ++ const/16 v20, 0x3 + + move-object/from16 v0, p0 + +- move/from16 v1, v18 ++ move/from16 v1, v20 + + invoke-virtual {v0, v1}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->obtainMessage(I)Landroid/os/Message; + +- move-result-object v18 ++ move-result-object v20 + +- move-object/from16 v0, v18 ++ move-object/from16 v0, v20 + + invoke-interface {v3, v0}, Lcom/android/internal/telephony/CommandsInterface;->getSignalStrength(Landroid/os/Message;)V + + goto/16 :goto_48 + +- :pswitch_255 ++ :pswitch_2ba + move-object/from16 v0, p1 + + iget-object v9, v0, Landroid/os/Message;->obj:Ljava/lang/Object; +@@ -4488,9 +4619,9 @@ + + check-cast v3, [Ljava/lang/Object; + +- const/16 v18, 0x0 ++ const/16 v20, 0x0 + +- aget-object v15, v3, v18 ++ aget-object v15, v3, v20 + + check-cast v15, Ljava/lang/String; + +@@ -4500,9 +4631,9 @@ + + check-cast v3, [Ljava/lang/Object; + +- const/16 v18, 0x1 ++ const/16 v20, 0x1 + +- aget-object v3, v3, v18 ++ aget-object v3, v3, v20 + + check-cast v3, Ljava/lang/Long; + +@@ -4516,7 +4647,7 @@ + + goto/16 :goto_48 + +- :pswitch_27e ++ :pswitch_2e3 + move-object/from16 v0, p1 + + iget-object v9, v0, Landroid/os/Message;->obj:Ljava/lang/Object; +@@ -4537,12 +4668,12 @@ + + goto/16 :goto_48 + +- :pswitch_291 ++ :pswitch_2f6 + invoke-virtual/range {p0 .. p0}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->updateSpnDisplay()V + + goto/16 :goto_48 + +- :pswitch_296 ++ :pswitch_2fb + move-object/from16 v0, p1 + + iget-object v9, v0, Landroid/os/Message;->obj:Ljava/lang/Object; +@@ -4557,27 +4688,27 @@ + + iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mCi:Lcom/android/internal/telephony/CommandsInterface; + +- const/16 v18, 0x1f ++ const/16 v20, 0x1f + +- const/16 v19, 0x0 ++ const/16 v21, 0x0 + + move-object/from16 v0, p0 + +- move/from16 v1, v18 ++ move/from16 v1, v20 + +- move-object/from16 v2, v19 ++ move-object/from16 v2, v21 + + invoke-virtual {v0, v1, v2}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message; + +- move-result-object v18 ++ move-result-object v20 + +- move-object/from16 v0, v18 ++ move-object/from16 v0, v20 + + invoke-interface {v3, v0}, Lcom/android/internal/telephony/CommandsInterface;->getVoiceRegistrationState(Landroid/os/Message;)V + + goto/16 :goto_48 + +- :pswitch_2b9 ++ :pswitch_31e + const-string v3, "[CdmaServiceStateTracker] ERI file has been loaded, repolling." + + move-object/from16 v0, p0 +@@ -4588,7 +4719,7 @@ + + goto/16 :goto_48 + +- :pswitch_2c5 ++ :pswitch_32a + move-object/from16 v0, p1 + + iget-object v9, v0, Landroid/os/Message;->obj:Ljava/lang/Object; +@@ -4615,7 +4746,7 @@ + + move/from16 v0, v16 + +- if-eq v0, v3, :cond_2e5 ++ if-eq v0, v3, :cond_34a + + const/16 v3, 0xa + +@@ -4623,7 +4754,7 @@ + + if-ne v0, v3, :cond_48 + +- :cond_2e5 ++ :cond_34a + const-string v3, "EVENT_OTA_PROVISION_STATUS_CHANGE: Complete, Reload MDN" + + move-object/from16 v0, p0 +@@ -4634,23 +4765,23 @@ + + iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mCi:Lcom/android/internal/telephony/CommandsInterface; + +- const/16 v18, 0x22 ++ const/16 v20, 0x22 + + move-object/from16 v0, p0 + +- move/from16 v1, v18 ++ move/from16 v1, v20 + + invoke-virtual {v0, v1}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->obtainMessage(I)Landroid/os/Message; + +- move-result-object v18 ++ move-result-object v20 + +- move-object/from16 v0, v18 ++ move-object/from16 v0, v20 + + invoke-interface {v3, v0}, Lcom/android/internal/telephony/CommandsInterface;->getCDMASubscription(Landroid/os/Message;)V + + goto/16 :goto_48 + +- :pswitch_301 ++ :pswitch_366 + move-object/from16 v0, p1 + + iget-object v9, v0, Landroid/os/Message;->obj:Ljava/lang/Object; +@@ -4683,50 +4814,48 @@ + + goto/16 :goto_48 + +- nop +- +- :pswitch_data_320 ++ :pswitch_data_384 + .packed-switch 0x1 + :pswitch_97 + :pswitch_50 + :pswitch_c0 + :pswitch_50 +- :pswitch_17c ++ :pswitch_1e1 + :pswitch_50 + :pswitch_50 + :pswitch_50 + :pswitch_50 +- :pswitch_240 +- :pswitch_255 +- :pswitch_27e ++ :pswitch_2a5 ++ :pswitch_2ba ++ :pswitch_2e3 + :pswitch_50 + :pswitch_50 + :pswitch_50 + :pswitch_50 + :pswitch_50 +- :pswitch_296 ++ :pswitch_2fb + :pswitch_50 + :pswitch_50 + :pswitch_50 + :pswitch_50 + :pswitch_50 +- :pswitch_17c +- :pswitch_17c ++ :pswitch_1e1 ++ :pswitch_1e1 + :pswitch_62 +- :pswitch_291 ++ :pswitch_2f6 + :pswitch_50 + :pswitch_50 + :pswitch_bc + :pswitch_df + :pswitch_50 + :pswitch_50 +- :pswitch_18d ++ :pswitch_1f2 + :pswitch_93 +- :pswitch_2b9 +- :pswitch_2c5 ++ :pswitch_31e ++ :pswitch_32a + :pswitch_50 + :pswitch_54 +- :pswitch_301 ++ :pswitch_366 + .end packed-switch + .end method + +@@ -5159,9 +5288,33 @@ + .end method + + .method protected handlePollStateResultMessage(ILandroid/os/AsyncResult;)V +- .registers 28 ++ .registers 30 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mContext:Landroid/content/Context; + +- sparse-switch p1, :sswitch_data_340 ++ move-object/from16 v24, v0 ++ ++ invoke-virtual/range {v24 .. v24}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v24 ++ ++ const/16 v25, 0x0 ++ ++ move-object/from16 v0, v24 ++ ++ move/from16 v1, v25 ++ ++ invoke-virtual {v3, v0, v1}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v20 ++ ++ sparse-switch p1, :sswitch_data_3ee + + const-string v3, "handlePollStateResultMessage: RIL response handle in wrong phone! Expected CDMA RIL request and get GSM RIL request." + +@@ -5169,54 +5322,54 @@ + + invoke-virtual {v0, v3}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->loge(Ljava/lang/String;)V + +- :cond_a +- :goto_a ++ :cond_22 ++ :goto_22 + return-void + +- :sswitch_b ++ :sswitch_23 + move-object/from16 v0, p2 + + iget-object v3, v0, Landroid/os/AsyncResult;->result:Ljava/lang/Object; + + check-cast v3, [Ljava/lang/String; + +- move-object/from16 v20, v3 ++ move-object/from16 v21, v3 + +- check-cast v20, [Ljava/lang/String; ++ check-cast v21, [Ljava/lang/String; + + new-instance v3, Ljava/lang/StringBuilder; + + invoke-direct {v3}, Ljava/lang/StringBuilder;->()V + +- const-string v22, "handlePollStateResultMessage: EVENT_POLL_STATE_GPRS states.length=" ++ const-string v24, "handlePollStateResultMessage: EVENT_POLL_STATE_GPRS states.length=" + +- move-object/from16 v0, v22 ++ move-object/from16 v0, v24 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + move-result-object v3 + +- move-object/from16 v0, v20 ++ move-object/from16 v0, v21 + + array-length v0, v0 + +- move/from16 v22, v0 ++ move/from16 v24, v0 + +- move/from16 v0, v22 ++ move/from16 v0, v24 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + + move-result-object v3 + +- const-string v22, " states=" ++ const-string v24, " states=" + +- move-object/from16 v0, v22 ++ move-object/from16 v0, v24 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + move-result-object v3 + +- move-object/from16 v0, v20 ++ move-object/from16 v0, v21 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; + +@@ -5234,49 +5387,49 @@ + + const/4 v10, 0x0 + +- move-object/from16 v0, v20 ++ move-object/from16 v0, v21 + + array-length v3, v0 + +- if-lez v3, :cond_68 ++ if-lez v3, :cond_80 + + const/4 v3, 0x0 + +- :try_start_4d +- aget-object v3, v20, v3 ++ :try_start_65 ++ aget-object v3, v21, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + + move-result v17 + +- move-object/from16 v0, v20 ++ move-object/from16 v0, v21 + + array-length v3, v0 + +- const/16 v22, 0x4 ++ const/16 v24, 0x4 + +- move/from16 v0, v22 ++ move/from16 v0, v24 + +- if-lt v3, v0, :cond_68 ++ if-lt v3, v0, :cond_80 + + const/4 v3, 0x3 + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + +- if-eqz v3, :cond_68 ++ if-eqz v3, :cond_80 + + const/4 v3, 0x3 + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I +- :try_end_67 +- .catch Ljava/lang/NumberFormatException; {:try_start_4d .. :try_end_67} :catch_b4 ++ :try_end_7f ++ .catch Ljava/lang/NumberFormatException; {:try_start_65 .. :try_end_7f} :catch_cc + + move-result v10 + +- :cond_68 +- :goto_68 ++ :cond_80 ++ :goto_80 + move-object/from16 v0, p0 + + move/from16 v1, v17 +@@ -5301,9 +5454,9 @@ + + invoke-direct {v3}, Ljava/lang/StringBuilder;->()V + +- const-string v22, "handlPollStateResultMessage: cdma setDataRegState=" ++ const-string v24, "handlPollStateResultMessage: cdma setDataRegState=" + +- move-object/from16 v0, v22 ++ move-object/from16 v0, v24 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +@@ -5313,9 +5466,9 @@ + + move-result-object v3 + +- const-string v22, " regState=" ++ const-string v24, " regState=" + +- move-object/from16 v0, v22 ++ move-object/from16 v0, v24 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +@@ -5327,9 +5480,9 @@ + + move-result-object v3 + +- const-string v22, " dataRadioTechnology=" ++ const-string v24, " dataRadioTechnology=" + +- move-object/from16 v0, v22 ++ move-object/from16 v0, v24 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +@@ -5347,18 +5500,18 @@ + + invoke-virtual {v0, v3}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->log(Ljava/lang/String;)V + +- goto/16 :goto_a ++ goto/16 :goto_22 + +- :catch_b4 ++ :catch_cc + move-exception v13 + + new-instance v3, Ljava/lang/StringBuilder; + + invoke-direct {v3}, Ljava/lang/StringBuilder;->()V + +- const-string v22, "handlePollStateResultMessage: error parsing GprsRegistrationState: " ++ const-string v24, "handlePollStateResultMessage: error parsing GprsRegistrationState: " + +- move-object/from16 v0, v22 ++ move-object/from16 v0, v24 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +@@ -5376,18 +5529,18 @@ + + invoke-virtual {v0, v3}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->loge(Ljava/lang/String;)V + +- goto :goto_68 ++ goto :goto_80 + +- :sswitch_d0 ++ :sswitch_e8 + move-object/from16 v0, p2 + + iget-object v3, v0, Landroid/os/AsyncResult;->result:Ljava/lang/Object; + + check-cast v3, [Ljava/lang/String; + +- move-object/from16 v20, v3 ++ move-object/from16 v21, v3 + +- check-cast v20, [Ljava/lang/String; ++ check-cast v21, [Ljava/lang/String; + + const/16 v18, 0x4 + +@@ -5407,215 +5560,215 @@ + + const/16 v19, -0x1 + +- const/16 v21, 0x0 ++ const/16 v22, 0x0 + + const/4 v12, 0x0 + + const/16 v16, 0x0 + +- move-object/from16 v0, v20 ++ move-object/from16 v0, v21 + + array-length v3, v0 + +- const/16 v22, 0xe ++ const/16 v24, 0xe + +- move/from16 v0, v22 ++ move/from16 v0, v24 + +- if-lt v3, v0, :cond_24f ++ if-lt v3, v0, :cond_279 + + const/4 v3, 0x0 + +- :try_start_f8 +- aget-object v3, v20, v3 ++ :try_start_110 ++ aget-object v3, v21, v3 + +- if-eqz v3, :cond_103 ++ if-eqz v3, :cond_11b + + const/4 v3, 0x0 + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + + move-result v18 + +- :cond_103 ++ :cond_11b + const/4 v3, 0x3 + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + +- if-eqz v3, :cond_10f ++ if-eqz v3, :cond_127 + + const/4 v3, 0x3 + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + + move-result v15 + +- :cond_10f ++ :cond_127 + const/4 v3, 0x4 + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + +- if-eqz v3, :cond_11b ++ if-eqz v3, :cond_133 + + const/4 v3, 0x4 + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + + move-result v4 + +- :cond_11b ++ :cond_133 + const/4 v3, 0x5 + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + +- if-eqz v3, :cond_127 ++ if-eqz v3, :cond_13f + + const/4 v3, 0x5 + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + + move-result v5 + +- :cond_127 ++ :cond_13f + const/4 v3, 0x6 + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + +- if-eqz v3, :cond_133 ++ if-eqz v3, :cond_14b + + const/4 v3, 0x6 + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + + move-result v6 + +- :cond_133 +- if-nez v5, :cond_13d ++ :cond_14b ++ if-nez v5, :cond_155 + +- if-nez v6, :cond_13d ++ if-nez v6, :cond_155 + + const v5, 0x7fffffff + + const v6, 0x7fffffff + +- :cond_13d ++ :cond_155 + const/4 v3, 0x7 + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + +- if-eqz v3, :cond_149 ++ if-eqz v3, :cond_161 + + const/4 v3, 0x7 + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + + move-result v9 + +- :cond_149 ++ :cond_161 + const/16 v3, 0x8 + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + +- if-eqz v3, :cond_157 ++ if-eqz v3, :cond_16f + + const/16 v3, 0x8 + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + + move-result v7 + +- :cond_157 ++ :cond_16f + const/16 v3, 0x9 + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + +- if-eqz v3, :cond_165 ++ if-eqz v3, :cond_17d + + const/16 v3, 0x9 + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + + move-result v8 + +- :cond_165 ++ :cond_17d + const/16 v3, 0xa + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + +- if-eqz v3, :cond_173 ++ if-eqz v3, :cond_18b + + const/16 v3, 0xa + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + + move-result v19 + +- :cond_173 ++ :cond_18b + const/16 v3, 0xb + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + +- if-eqz v3, :cond_181 ++ if-eqz v3, :cond_199 + + const/16 v3, 0xb + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + +- move-result v21 ++ move-result v22 + +- :cond_181 ++ :cond_199 + const/16 v3, 0xc + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + +- if-eqz v3, :cond_18f ++ if-eqz v3, :cond_1a7 + + const/16 v3, 0xc + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + + move-result v12 + +- :cond_18f ++ :cond_1a7 + const/16 v3, 0xd + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + +- if-eqz v3, :cond_19d ++ if-eqz v3, :cond_1b5 + + const/16 v3, 0xd + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + + invoke-static {v3}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I +- :try_end_19c +- .catch Ljava/lang/NumberFormatException; {:try_start_f8 .. :try_end_19c} :catch_232 ++ :try_end_1b4 ++ .catch Ljava/lang/NumberFormatException; {:try_start_110 .. :try_end_1b4} :catch_25c + + move-result v16 + +- :cond_19d +- :goto_19d ++ :cond_1b5 ++ :goto_1b5 + move/from16 v0, v18 + + move-object/from16 v1, p0 +@@ -5630,11 +5783,11 @@ + + move-result v3 + +- if-eqz v3, :cond_275 ++ if-eqz v3, :cond_29f + + const/16 v3, 0xa + +- aget-object v3, v20, v3 ++ aget-object v3, v21, v3 + + move-object/from16 v0, p0 + +@@ -5642,11 +5795,11 @@ + + move-result v3 + +- if-nez v3, :cond_275 ++ if-nez v3, :cond_29f + + const/4 v3, 0x1 + +- :goto_1ba ++ :goto_1d2 + move-object/from16 v0, p0 + + iput-boolean v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mCdmaRoaming:Z +@@ -5661,9 +5814,9 @@ + + invoke-virtual {v0, v1}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->regCodeToServiceState(I)I + +- move-result v22 ++ move-result v24 + +- move/from16 v0, v22 ++ move/from16 v0, v24 + + invoke-virtual {v3, v0}, Landroid/telephony/ServiceState;->setState(I)V + +@@ -5691,11 +5844,11 @@ + + iput v0, v1, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mRoamingIndicator:I + +- if-nez v21, :cond_278 ++ if-nez v22, :cond_2a2 + + const/4 v3, 0x0 + +- :goto_1ed ++ :goto_205 + move-object/from16 v0, p0 + + iput-boolean v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mIsInPrl:Z +@@ -5706,11 +5859,30 @@ + + move-object/from16 v0, p0 + ++ iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v3, :cond_2a5 ++ ++ if-eqz v20, :cond_2a5 ++ ++ invoke-virtual/range {v20 .. v20}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v3 ++ ++ const/16 v24, 0x1 ++ ++ move/from16 v0, v24 ++ ++ if-ne v3, v0, :cond_2a5 ++ ++ move-object/from16 v0, p0 ++ + iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewCellLoc:Landroid/telephony/cdma/CdmaCellLocation; + +- invoke-virtual/range {v3 .. v8}, Landroid/telephony/cdma/CdmaCellLocation;->setCellLocationData(IIIII)V ++ invoke-virtual {v3}, Landroid/telephony/cdma/CdmaCellLocation;->setStateInvalid()V + +- if-nez v16, :cond_27b ++ :goto_226 ++ if-nez v16, :cond_2e2 + + const-string v3, "General" + +@@ -5718,24 +5890,24 @@ + + iput-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mRegistrationDeniedReason:Ljava/lang/String; + +- :goto_204 ++ :goto_22e + move-object/from16 v0, p0 + + iget v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mRegistrationState:I + +- const/16 v22, 0x3 ++ const/16 v24, 0x3 + +- move/from16 v0, v22 ++ move/from16 v0, v24 + +- if-ne v3, v0, :cond_a ++ if-ne v3, v0, :cond_22 + + new-instance v3, Ljava/lang/StringBuilder; + + invoke-direct {v3}, Ljava/lang/StringBuilder;->()V + +- const-string v22, "Registration denied, " ++ const-string v24, "Registration denied, " + +- move-object/from16 v0, v22 ++ move-object/from16 v0, v24 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +@@ -5745,9 +5917,9 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mRegistrationDeniedReason:Ljava/lang/String; + +- move-object/from16 v22, v0 ++ move-object/from16 v24, v0 + +- move-object/from16 v0, v22 ++ move-object/from16 v0, v24 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +@@ -5761,18 +5933,18 @@ + + invoke-virtual {v0, v3}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->log(Ljava/lang/String;)V + +- goto/16 :goto_a ++ goto/16 :goto_22 + +- :catch_232 ++ :catch_25c + move-exception v13 + + new-instance v3, Ljava/lang/StringBuilder; + + invoke-direct {v3}, Ljava/lang/StringBuilder;->()V + +- const-string v22, "EVENT_POLL_STATE_REGISTRATION_CDMA: error parsing: " ++ const-string v24, "EVENT_POLL_STATE_REGISTRATION_CDMA: error parsing: " + +- move-object/from16 v0, v22 ++ move-object/from16 v0, v24 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +@@ -5790,82 +5962,142 @@ + + invoke-virtual {v0, v3}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->loge(Ljava/lang/String;)V + +- goto/16 :goto_19d ++ goto/16 :goto_1b5 + +- :cond_24f ++ :cond_279 + new-instance v3, Ljava/lang/RuntimeException; + +- new-instance v22, Ljava/lang/StringBuilder; ++ new-instance v24, Ljava/lang/StringBuilder; + +- invoke-direct/range {v22 .. v22}, Ljava/lang/StringBuilder;->()V ++ invoke-direct/range {v24 .. v24}, Ljava/lang/StringBuilder;->()V + +- const-string v23, "Warning! Wrong number of parameters returned from RIL_REQUEST_REGISTRATION_STATE: expected 14 or more strings and got " ++ const-string v25, "Warning! Wrong number of parameters returned from RIL_REQUEST_REGISTRATION_STATE: expected 14 or more strings and got " + +- invoke-virtual/range {v22 .. v23}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v24 .. v25}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v22 ++ move-result-object v24 + +- move-object/from16 v0, v20 ++ move-object/from16 v0, v21 + + array-length v0, v0 + +- move/from16 v23, v0 ++ move/from16 v25, v0 + +- invoke-virtual/range {v22 .. v23}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v24 .. v25}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + +- move-result-object v22 ++ move-result-object v24 + +- const-string v23, " strings" ++ const-string v25, " strings" + +- invoke-virtual/range {v22 .. v23}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v24 .. v25}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v22 ++ move-result-object v24 + +- invoke-virtual/range {v22 .. v22}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual/range {v24 .. v24}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v22 ++ move-result-object v24 + +- move-object/from16 v0, v22 ++ move-object/from16 v0, v24 + + invoke-direct {v3, v0}, Ljava/lang/RuntimeException;->(Ljava/lang/String;)V + + throw v3 + +- :cond_275 ++ :cond_29f + const/4 v3, 0x0 + +- goto/16 :goto_1ba ++ goto/16 :goto_1d2 + +- :cond_278 ++ :cond_2a2 + const/4 v3, 0x1 + +- goto/16 :goto_1ed ++ goto/16 :goto_205 + +- :cond_27b +- const/4 v3, 0x1 ++ :cond_2a5 ++ move-object/from16 v0, p0 + +- move/from16 v0, v16 ++ iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; + +- if-ne v0, v3, :cond_288 ++ if-eqz v3, :cond_2d9 + +- const-string v3, "Authentication Failure" ++ if-eqz v20, :cond_2d9 + +- move-object/from16 v0, p0 ++ invoke-virtual/range {v20 .. v20}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B + +- iput-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mRegistrationDeniedReason:Ljava/lang/String; ++ move-result v3 + +- goto/16 :goto_204 ++ const/16 v24, 0x3 + +- :cond_288 +- const-string v3, "" ++ move/from16 v0, v24 ++ ++ if-ne v3, v0, :cond_2d9 ++ ++ new-instance v23, Ljava/util/Random; ++ ++ invoke-direct/range {v23 .. v23}, Ljava/util/Random;->()V ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewCellLoc:Landroid/telephony/cdma/CdmaCellLocation; ++ ++ invoke-virtual/range {v23 .. v23}, Ljava/util/Random;->nextInt()I ++ ++ move-result v4 ++ ++ invoke-virtual/range {v23 .. v23}, Ljava/util/Random;->nextInt()I ++ ++ move-result v5 ++ ++ invoke-virtual/range {v23 .. v23}, Ljava/util/Random;->nextInt()I ++ ++ move-result v6 ++ ++ invoke-virtual/range {v23 .. v23}, Ljava/util/Random;->nextInt()I ++ ++ move-result v7 ++ ++ invoke-virtual/range {v23 .. v23}, Ljava/util/Random;->nextInt()I ++ ++ move-result v8 ++ ++ invoke-virtual/range {v3 .. v8}, Landroid/telephony/cdma/CdmaCellLocation;->setCellLocationData(IIIII)V ++ ++ goto/16 :goto_226 ++ ++ :cond_2d9 ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewCellLoc:Landroid/telephony/cdma/CdmaCellLocation; ++ ++ invoke-virtual/range {v3 .. v8}, Landroid/telephony/cdma/CdmaCellLocation;->setCellLocationData(IIIII)V ++ ++ goto/16 :goto_226 ++ ++ :cond_2e2 ++ const/4 v3, 0x1 ++ ++ move/from16 v0, v16 ++ ++ if-ne v0, v3, :cond_2ef ++ ++ const-string v3, "Authentication Failure" ++ ++ move-object/from16 v0, p0 ++ ++ iput-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mRegistrationDeniedReason:Ljava/lang/String; ++ ++ goto/16 :goto_22e ++ ++ :cond_2ef ++ const-string v3, "" + + move-object/from16 v0, p0 + + iput-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mRegistrationDeniedReason:Ljava/lang/String; + +- goto/16 :goto_204 ++ goto/16 :goto_22e + +- :sswitch_290 ++ :sswitch_2f7 + move-object/from16 v0, p2 + + iget-object v3, v0, Landroid/os/AsyncResult;->result:Ljava/lang/Object; +@@ -5876,21 +6108,21 @@ + + check-cast v14, [Ljava/lang/String; + +- if-eqz v14, :cond_337 ++ if-eqz v14, :cond_3e4 + + array-length v3, v14 + +- const/16 v22, 0x3 ++ const/16 v24, 0x3 + +- move/from16 v0, v22 ++ move/from16 v0, v24 + +- if-lt v3, v0, :cond_337 ++ if-lt v3, v0, :cond_3e4 + + const/4 v3, 0x2 + + aget-object v3, v14, v3 + +- if-eqz v3, :cond_2c2 ++ if-eqz v3, :cond_329 + + const/4 v3, 0x2 + +@@ -5900,72 +6132,72 @@ + + move-result v3 + +- const/16 v22, 0x5 ++ const/16 v24, 0x5 + +- move/from16 v0, v22 ++ move/from16 v0, v24 + +- if-lt v3, v0, :cond_2c2 ++ if-lt v3, v0, :cond_329 + + const-string v3, "00000" + +- const/16 v22, 0x2 ++ const/16 v24, 0x2 + +- aget-object v22, v14, v22 ++ aget-object v24, v14, v24 + +- move-object/from16 v0, v22 ++ move-object/from16 v0, v24 + + invoke-virtual {v3, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z + + move-result v3 + +- if-eqz v3, :cond_2fd ++ if-eqz v3, :cond_364 + +- :cond_2c2 ++ :cond_329 + const/4 v3, 0x2 + +- sget-object v22, Lcom/android/internal/telephony/cdma/CDMAPhone;->PROPERTY_CDMA_HOME_OPERATOR_NUMERIC:Ljava/lang/String; ++ sget-object v24, Lcom/android/internal/telephony/cdma/CDMAPhone;->PROPERTY_CDMA_HOME_OPERATOR_NUMERIC:Ljava/lang/String; + +- const-string v23, "00000" ++ const-string v25, "00000" + +- invoke-static/range {v22 .. v23}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; ++ invoke-static/range {v24 .. v25}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + +- move-result-object v22 ++ move-result-object v24 + +- aput-object v22, v14, v3 ++ aput-object v24, v14, v3 + + new-instance v3, Ljava/lang/StringBuilder; + + invoke-direct {v3}, Ljava/lang/StringBuilder;->()V + +- const-string v22, "RIL_REQUEST_OPERATOR.response[2], the numeric, is bad. Using SystemProperties \'" ++ const-string v24, "RIL_REQUEST_OPERATOR.response[2], the numeric, is bad. Using SystemProperties \'" + +- move-object/from16 v0, v22 ++ move-object/from16 v0, v24 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + move-result-object v3 + +- sget-object v22, Lcom/android/internal/telephony/cdma/CDMAPhone;->PROPERTY_CDMA_HOME_OPERATOR_NUMERIC:Ljava/lang/String; ++ sget-object v24, Lcom/android/internal/telephony/cdma/CDMAPhone;->PROPERTY_CDMA_HOME_OPERATOR_NUMERIC:Ljava/lang/String; + +- move-object/from16 v0, v22 ++ move-object/from16 v0, v24 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + move-result-object v3 + +- const-string v22, "\'= " ++ const-string v24, "\'= " + +- move-object/from16 v0, v22 ++ move-object/from16 v0, v24 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + move-result-object v3 + +- const/16 v22, 0x2 ++ const/16 v24, 0x2 + +- aget-object v22, v14, v22 ++ aget-object v24, v14, v24 + +- move-object/from16 v0, v22 ++ move-object/from16 v0, v24 + + invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +@@ -5979,78 +6211,150 @@ + + invoke-virtual {v0, v3}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->log(Ljava/lang/String;)V + +- :cond_2fd ++ :cond_364 + move-object/from16 v0, p0 + + iget-boolean v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mIsSubscriptionFromRuim:Z + +- if-nez v3, :cond_31c ++ if-nez v3, :cond_3a6 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v3, :cond_38d ++ ++ if-eqz v20, :cond_38d ++ ++ invoke-virtual/range {v20 .. v20}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_38d + + move-object/from16 v0, p0 + + iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- const/16 v22, 0x0 ++ const/16 v24, 0x0 + +- const/16 v23, 0x1 ++ const-string v25, "" + +- aget-object v23, v14, v23 ++ const-string v26, "" + +- const/16 v24, 0x2 ++ move-object/from16 v0, v24 + +- aget-object v24, v14, v24 ++ move-object/from16 v1, v25 + +- move-object/from16 v0, v22 ++ move-object/from16 v2, v26 + +- move-object/from16 v1, v23 ++ invoke-virtual {v3, v0, v1, v2}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + +- move-object/from16 v2, v24 ++ goto/16 :goto_22 ++ ++ :cond_38d ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; ++ ++ const/16 v24, 0x0 ++ ++ const/16 v25, 0x1 ++ ++ aget-object v25, v14, v25 ++ ++ const/16 v26, 0x2 ++ ++ aget-object v26, v14, v26 ++ ++ move-object/from16 v0, v24 ++ ++ move-object/from16 v1, v25 ++ ++ move-object/from16 v2, v26 + + invoke-virtual {v3, v0, v1, v2}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + +- goto/16 :goto_a ++ goto/16 :goto_22 ++ ++ :cond_3a6 ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v3, :cond_3c9 ++ ++ if-eqz v20, :cond_3c9 ++ ++ invoke-virtual/range {v20 .. v20}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v3 ++ ++ if-eqz v3, :cond_3c9 + +- :cond_31c + move-object/from16 v0, p0 + + iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- const/16 v22, 0x0 ++ const-string v24, "" + +- aget-object v22, v14, v22 ++ const-string v25, "" + +- const/16 v23, 0x1 ++ const-string v26, "" + +- aget-object v23, v14, v23 ++ move-object/from16 v0, v24 + +- const/16 v24, 0x2 ++ move-object/from16 v1, v25 ++ ++ move-object/from16 v2, v26 ++ ++ invoke-virtual {v3, v0, v1, v2}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V ++ ++ goto/16 :goto_22 ++ ++ :cond_3c9 ++ move-object/from16 v0, p0 ++ ++ iget-object v3, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; ++ ++ const/16 v24, 0x0 + + aget-object v24, v14, v24 + +- move-object/from16 v0, v22 ++ const/16 v25, 0x1 + +- move-object/from16 v1, v23 ++ aget-object v25, v14, v25 + +- move-object/from16 v2, v24 ++ const/16 v26, 0x2 ++ ++ aget-object v26, v14, v26 ++ ++ move-object/from16 v0, v24 ++ ++ move-object/from16 v1, v25 ++ ++ move-object/from16 v2, v26 + + invoke-virtual {v3, v0, v1, v2}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + +- goto/16 :goto_a ++ goto/16 :goto_22 + +- :cond_337 ++ :cond_3e4 + const-string v3, "EVENT_POLL_STATE_OPERATOR_CDMA: error parsing opNames" + + move-object/from16 v0, p0 + + invoke-virtual {v0, v3}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->log(Ljava/lang/String;)V + +- goto/16 :goto_a ++ goto/16 :goto_22 ++ ++ nop + +- :sswitch_data_340 ++ :sswitch_data_3ee + .sparse-switch +- 0x5 -> :sswitch_b +- 0x18 -> :sswitch_d0 +- 0x19 -> :sswitch_290 ++ 0x5 -> :sswitch_23 ++ 0x18 -> :sswitch_e8 ++ 0x19 -> :sswitch_2f7 + .end sparse-switch + .end method + +@@ -6605,83 +6909,83 @@ + .end method + + .method protected pollStateDone()V +- .registers 28 ++ .registers 29 + +- new-instance v23, Ljava/lang/StringBuilder; ++ new-instance v24, Ljava/lang/StringBuilder; + +- invoke-direct/range {v23 .. v23}, Ljava/lang/StringBuilder;->()V ++ invoke-direct/range {v24 .. v24}, Ljava/lang/StringBuilder;->()V + +- const-string v24, "pollStateDone: cdma oldSS=[" ++ const-string v25, "pollStateDone: cdma oldSS=[" + +- invoke-virtual/range {v23 .. v24}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v24 .. v25}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v23 ++ move-result-object v24 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v24, v0 ++ move-object/from16 v25, v0 + +- invoke-virtual/range {v23 .. v24}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v24 .. v25}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; + +- move-result-object v23 ++ move-result-object v24 + +- const-string v24, "] newSS=[" ++ const-string v25, "] newSS=[" + +- invoke-virtual/range {v23 .. v24}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v24 .. v25}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v23 ++ move-result-object v24 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v24, v0 ++ move-object/from16 v25, v0 + +- invoke-virtual/range {v23 .. v24}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v24 .. v25}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; + +- move-result-object v23 ++ move-result-object v24 + +- const-string v24, "]" ++ const-string v25, "]" + +- invoke-virtual/range {v23 .. v24}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v24 .. v25}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v23 ++ move-result-object v24 + +- invoke-virtual/range {v23 .. v23}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual/range {v24 .. v24}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v23 ++ move-result-object v24 + + move-object/from16 v0, p0 + +- move-object/from16 v1, v23 ++ move-object/from16 v1, v24 + + invoke-virtual {v0, v1}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->log(Ljava/lang/String;)V + +- sget-boolean v23, Landroid/os/Build;->IS_DEBUGGABLE:Z ++ sget-boolean v24, Landroid/os/Build;->IS_DEBUGGABLE:Z + +- if-eqz v23, :cond_4f ++ if-eqz v24, :cond_4f + +- const-string v23, "telephony.test.forceRoaming" ++ const-string v24, "telephony.test.forceRoaming" + +- const/16 v24, 0x0 ++ const/16 v25, 0x0 + +- invoke-static/range {v23 .. v24}, Landroid/os/SystemProperties;->getBoolean(Ljava/lang/String;Z)Z ++ invoke-static/range {v24 .. v25}, Landroid/os/SystemProperties;->getBoolean(Ljava/lang/String;Z)Z + +- move-result v23 ++ move-result v24 + +- if-eqz v23, :cond_4f ++ if-eqz v24, :cond_4f + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- const/16 v24, 0x1 ++ const/16 v25, 0x1 + +- invoke-virtual/range {v23 .. v24}, Landroid/telephony/ServiceState;->setRoaming(Z)V ++ invoke-virtual/range {v24 .. v25}, Landroid/telephony/ServiceState;->setRoaming(Z)V + + :cond_4f + invoke-virtual/range {p0 .. p0}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->useDataRegStateForDataOnlyDevices()V +@@ -6690,25 +6994,25 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getVoiceRegState()I ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getVoiceRegState()I + +- move-result v23 ++ move-result v24 + +- if-eqz v23, :cond_342 ++ if-eqz v24, :cond_360 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getVoiceRegState()I ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getVoiceRegState()I + +- move-result v23 ++ move-result v24 + +- if-nez v23, :cond_342 ++ if-nez v24, :cond_360 + + const/4 v13, 0x1 + +@@ -6717,25 +7021,25 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getVoiceRegState()I ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getVoiceRegState()I + +- move-result v23 ++ move-result v24 + +- if-nez v23, :cond_345 ++ if-nez v24, :cond_363 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getVoiceRegState()I ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getVoiceRegState()I + +- move-result v23 ++ move-result v24 + +- if-eqz v23, :cond_345 ++ if-eqz v24, :cond_363 + + const/4 v11, 0x1 + +@@ -6744,25 +7048,25 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getDataRegState()I ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getDataRegState()I + +- move-result v23 ++ move-result v24 + +- if-eqz v23, :cond_348 ++ if-eqz v24, :cond_366 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getDataRegState()I ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getDataRegState()I + +- move-result v23 ++ move-result v24 + +- if-nez v23, :cond_348 ++ if-nez v24, :cond_366 + + const/4 v7, 0x1 + +@@ -6771,25 +7075,25 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getDataRegState()I ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getDataRegState()I + +- move-result v23 ++ move-result v24 + +- if-nez v23, :cond_34b ++ if-nez v24, :cond_369 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getDataRegState()I ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getDataRegState()I + +- move-result v23 ++ move-result v24 + +- if-eqz v23, :cond_34b ++ if-eqz v24, :cond_369 + + const/4 v9, 0x1 + +@@ -6798,27 +7102,27 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getDataRegState()I ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getDataRegState()I + +- move-result v23 ++ move-result v24 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v24, v0 ++ move-object/from16 v25, v0 + +- invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getDataRegState()I ++ invoke-virtual/range {v25 .. v25}, Landroid/telephony/ServiceState;->getDataRegState()I + +- move-result v24 ++ move-result v25 + +- move/from16 v0, v23 ++ move/from16 v0, v24 + +- move/from16 v1, v24 ++ move/from16 v1, v25 + +- if-eq v0, v1, :cond_34e ++ if-eq v0, v1, :cond_36c + + const/4 v8, 0x1 + +@@ -6827,27 +7131,27 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getRilDataRadioTechnology()I ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getRilDataRadioTechnology()I + +- move-result v23 ++ move-result v24 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v24, v0 ++ move-object/from16 v25, v0 + +- invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getRilDataRadioTechnology()I ++ invoke-virtual/range {v25 .. v25}, Landroid/telephony/ServiceState;->getRilDataRadioTechnology()I + +- move-result v24 ++ move-result v25 + +- move/from16 v0, v23 ++ move/from16 v0, v24 + +- move/from16 v1, v24 ++ move/from16 v1, v25 + +- if-eq v0, v1, :cond_351 ++ if-eq v0, v1, :cond_36f + + const/4 v14, 0x1 + +@@ -6856,19 +7160,19 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v24, v0 ++ move-object/from16 v25, v0 + +- invoke-virtual/range {v23 .. v24}, Landroid/telephony/ServiceState;->equals(Ljava/lang/Object;)Z ++ invoke-virtual/range {v24 .. v25}, Landroid/telephony/ServiceState;->equals(Ljava/lang/Object;)Z + +- move-result v23 ++ move-result v24 + +- if-nez v23, :cond_354 ++ if-nez v24, :cond_372 + + const/4 v10, 0x1 + +@@ -6877,25 +7181,25 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getRoaming()Z ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getRoaming()Z + +- move-result v23 ++ move-result v24 + +- if-nez v23, :cond_357 ++ if-nez v24, :cond_375 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getRoaming()Z ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getRoaming()Z + +- move-result v23 ++ move-result v24 + +- if-eqz v23, :cond_357 ++ if-eqz v24, :cond_375 + + const/16 v16, 0x1 + +@@ -6904,25 +7208,25 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getRoaming()Z ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getRoaming()Z + +- move-result v23 ++ move-result v24 + +- if-eqz v23, :cond_35b ++ if-eqz v24, :cond_379 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getRoaming()Z ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getRoaming()Z + +- move-result v23 ++ move-result v24 + +- if-nez v23, :cond_35b ++ if-nez v24, :cond_379 + + const/4 v15, 0x1 + +@@ -6931,19 +7235,19 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewCellLoc:Landroid/telephony/cdma/CdmaCellLocation; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mCellLoc:Landroid/telephony/cdma/CdmaCellLocation; + +- move-object/from16 v24, v0 ++ move-object/from16 v25, v0 + +- invoke-virtual/range {v23 .. v24}, Landroid/telephony/cdma/CdmaCellLocation;->equals(Ljava/lang/Object;)Z ++ invoke-virtual/range {v24 .. v25}, Landroid/telephony/cdma/CdmaCellLocation;->equals(Ljava/lang/Object;)Z + +- move-result v23 ++ move-result v24 + +- if-nez v23, :cond_35e ++ if-nez v24, :cond_37c + + const/4 v12, 0x1 + +@@ -6952,25 +7256,25 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getVoiceRegState()I ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getVoiceRegState()I + +- move-result v23 ++ move-result v24 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v24, v0 ++ move-object/from16 v25, v0 + +- invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getVoiceRegState()I ++ invoke-virtual/range {v25 .. v25}, Landroid/telephony/ServiceState;->getVoiceRegState()I + +- move-result v24 ++ move-result v25 + +- move/from16 v0, v23 ++ move/from16 v0, v24 + +- move/from16 v1, v24 ++ move/from16 v1, v25 + + if-ne v0, v1, :cond_179 + +@@ -6978,133 +7282,133 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getDataRegState()I ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getDataRegState()I + +- move-result v23 ++ move-result v24 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v24, v0 ++ move-object/from16 v25, v0 + +- invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getDataRegState()I ++ invoke-virtual/range {v25 .. v25}, Landroid/telephony/ServiceState;->getDataRegState()I + +- move-result v24 ++ move-result v25 + +- move/from16 v0, v23 ++ move/from16 v0, v24 + +- move/from16 v1, v24 ++ move/from16 v1, v25 + + if-eq v0, v1, :cond_1cf + + :cond_179 +- const v23, 0xc3c4 ++ const v24, 0xc3c4 + +- const/16 v24, 0x4 ++ const/16 v25, 0x4 + +- move/from16 v0, v24 ++ move/from16 v0, v25 + + new-array v0, v0, [Ljava/lang/Object; + +- move-object/from16 v24, v0 ++ move-object/from16 v25, v0 + +- const/16 v25, 0x0 ++ const/16 v26, 0x0 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v26, v0 ++ move-object/from16 v27, v0 + +- invoke-virtual/range {v26 .. v26}, Landroid/telephony/ServiceState;->getVoiceRegState()I ++ invoke-virtual/range {v27 .. v27}, Landroid/telephony/ServiceState;->getVoiceRegState()I + +- move-result v26 ++ move-result v27 + +- invoke-static/range {v26 .. v26}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ invoke-static/range {v27 .. v27}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; + +- move-result-object v26 ++ move-result-object v27 + +- aput-object v26, v24, v25 ++ aput-object v27, v25, v26 + +- const/16 v25, 0x1 ++ const/16 v26, 0x1 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v26, v0 ++ move-object/from16 v27, v0 + +- invoke-virtual/range {v26 .. v26}, Landroid/telephony/ServiceState;->getDataRegState()I ++ invoke-virtual/range {v27 .. v27}, Landroid/telephony/ServiceState;->getDataRegState()I + +- move-result v26 ++ move-result v27 + +- invoke-static/range {v26 .. v26}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ invoke-static/range {v27 .. v27}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; + +- move-result-object v26 ++ move-result-object v27 + +- aput-object v26, v24, v25 ++ aput-object v27, v25, v26 + +- const/16 v25, 0x2 ++ const/16 v26, 0x2 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v26, v0 ++ move-object/from16 v27, v0 + +- invoke-virtual/range {v26 .. v26}, Landroid/telephony/ServiceState;->getVoiceRegState()I ++ invoke-virtual/range {v27 .. v27}, Landroid/telephony/ServiceState;->getVoiceRegState()I + +- move-result v26 ++ move-result v27 + +- invoke-static/range {v26 .. v26}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ invoke-static/range {v27 .. v27}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; + +- move-result-object v26 ++ move-result-object v27 + +- aput-object v26, v24, v25 ++ aput-object v27, v25, v26 + +- const/16 v25, 0x3 ++ const/16 v26, 0x3 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v26, v0 ++ move-object/from16 v27, v0 + +- invoke-virtual/range {v26 .. v26}, Landroid/telephony/ServiceState;->getDataRegState()I ++ invoke-virtual/range {v27 .. v27}, Landroid/telephony/ServiceState;->getDataRegState()I + +- move-result v26 ++ move-result v27 + +- invoke-static/range {v26 .. v26}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ invoke-static/range {v27 .. v27}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; + +- move-result-object v26 ++ move-result-object v27 + +- aput-object v26, v24, v25 ++ aput-object v27, v25, v26 + +- invoke-static/range {v23 .. v24}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I ++ invoke-static/range {v24 .. v25}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I + + :cond_1cf + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v22, v0 ++ move-object/from16 v23, v0 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- move-object/from16 v0, v23 ++ move-object/from16 v0, v24 + + move-object/from16 v1, p0 + + iput-object v0, v1, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v0, v22 ++ move-object/from16 v0, v23 + + move-object/from16 v1, p0 + +@@ -7114,29 +7418,29 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->setStateOutOfService()V ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->setStateOutOfService()V + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mCellLoc:Landroid/telephony/cdma/CdmaCellLocation; + +- move-object/from16 v21, v0 ++ move-object/from16 v22, v0 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewCellLoc:Landroid/telephony/cdma/CdmaCellLocation; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- move-object/from16 v0, v23 ++ move-object/from16 v0, v24 + + move-object/from16 v1, p0 + + iput-object v0, v1, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mCellLoc:Landroid/telephony/cdma/CdmaCellLocation; + +- move-object/from16 v0, v21 ++ move-object/from16 v0, v22 + + move-object/from16 v1, p0 + +@@ -7146,9 +7450,9 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->setStateOutOfService()V ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->setStateOutOfService()V + + if-eqz v14, :cond_22c + +@@ -7156,25 +7460,25 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mPhone:Lcom/android/internal/telephony/cdma/CDMAPhone; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- const-string v24, "gsm.network.type" ++ const-string v25, "gsm.network.type" + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v25, v0 ++ move-object/from16 v26, v0 + +- invoke-virtual/range {v25 .. v25}, Landroid/telephony/ServiceState;->getRilDataRadioTechnology()I ++ invoke-virtual/range {v26 .. v26}, Landroid/telephony/ServiceState;->getRilDataRadioTechnology()I + +- move-result v25 ++ move-result v26 + +- invoke-static/range {v25 .. v25}, Landroid/telephony/ServiceState;->rilRadioTechnologyToString(I)Ljava/lang/String; ++ invoke-static/range {v26 .. v26}, Landroid/telephony/ServiceState;->rilRadioTechnologyToString(I)Ljava/lang/String; + +- move-result-object v25 ++ move-result-object v26 + +- invoke-virtual/range {v23 .. v25}, Lcom/android/internal/telephony/cdma/CDMAPhone;->setSystemProperty(Ljava/lang/String;Ljava/lang/String;)V ++ invoke-virtual/range {v24 .. v26}, Lcom/android/internal/telephony/cdma/CDMAPhone;->setSystemProperty(Ljava/lang/String;Ljava/lang/String;)V + + :cond_22c + if-eqz v13, :cond_237 +@@ -7183,96 +7487,126 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNetworkAttachedRegistrants:Landroid/os/RegistrantList; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/os/RegistrantList;->notifyRegistrants()V ++ invoke-virtual/range {v24 .. v24}, Landroid/os/RegistrantList;->notifyRegistrants()V + + :cond_237 +- if-eqz v10, :cond_2fb ++ if-eqz v10, :cond_319 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mCi:Lcom/android/internal/telephony/CommandsInterface; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-interface/range {v23 .. v23}, Lcom/android/internal/telephony/CommandsInterface;->getRadioState()Lcom/android/internal/telephony/CommandsInterface$RadioState; ++ invoke-interface/range {v24 .. v24}, Lcom/android/internal/telephony/CommandsInterface;->getRadioState()Lcom/android/internal/telephony/CommandsInterface$RadioState; + +- move-result-object v23 ++ move-result-object v24 + +- invoke-virtual/range {v23 .. v23}, Lcom/android/internal/telephony/CommandsInterface$RadioState;->isOn()Z ++ invoke-virtual/range {v24 .. v24}, Lcom/android/internal/telephony/CommandsInterface$RadioState;->isOn()Z + +- move-result v23 ++ move-result v24 + +- if-eqz v23, :cond_272 ++ if-eqz v24, :cond_290 + + move-object/from16 v0, p0 + + iget-boolean v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mIsSubscriptionFromRuim:Z + +- move/from16 v23, v0 ++ move/from16 v24, v0 + +- if-nez v23, :cond_272 ++ if-nez v24, :cond_290 + + move-object/from16 v0, p0 + +- iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; ++ iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getVoiceRegState()I ++ move-object/from16 v0, p0 + +- move-result v23 ++ iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mContext:Landroid/content/Context; ++ ++ move-object/from16 v25, v0 ++ ++ invoke-virtual/range {v25 .. v25}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v25 + +- if-nez v23, :cond_361 ++ const/16 v26, 0x0 ++ ++ invoke-virtual/range {v24 .. v26}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v21 + + move-object/from16 v0, p0 + +- iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mPhone:Lcom/android/internal/telephony/cdma/CDMAPhone; ++ iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getCdmaEriText()Ljava/lang/String; ++ if-eqz v24, :cond_396 + +- move-result-object v5 ++ if-eqz v21, :cond_396 ++ ++ invoke-virtual/range {v21 .. v21}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v24 ++ ++ if-eqz v24, :cond_396 + +- :goto_267 + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- move-object/from16 v0, v23 ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getVoiceRegState()I ++ ++ move-result v24 ++ ++ if-nez v24, :cond_37f ++ ++ const-string v5, "" ++ ++ :goto_285 ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; ++ ++ move-object/from16 v24, v0 ++ ++ move-object/from16 v0, v24 + + invoke-virtual {v0, v5}, Landroid/telephony/ServiceState;->setOperatorAlphaLong(Ljava/lang/String;)V + +- :cond_272 ++ :cond_290 + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mPhone:Lcom/android/internal/telephony/cdma/CDMAPhone; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- const-string v24, "gsm.operator.alpha" ++ const-string v25, "gsm.operator.alpha" + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v25, v0 ++ move-object/from16 v26, v0 + +- invoke-virtual/range {v25 .. v25}, Landroid/telephony/ServiceState;->getOperatorAlphaLong()Ljava/lang/String; ++ invoke-virtual/range {v26 .. v26}, Landroid/telephony/ServiceState;->getOperatorAlphaLong()Ljava/lang/String; + +- move-result-object v25 ++ move-result-object v26 + +- invoke-virtual/range {v23 .. v25}, Lcom/android/internal/telephony/cdma/CDMAPhone;->setSystemProperty(Ljava/lang/String;Ljava/lang/String;)V ++ invoke-virtual/range {v24 .. v26}, Lcom/android/internal/telephony/cdma/CDMAPhone;->setSystemProperty(Ljava/lang/String;Ljava/lang/String;)V + +- const-string v23, "gsm.operator.numeric" ++ const-string v24, "gsm.operator.numeric" + +- const-string v24, "" ++ const-string v25, "" + +- invoke-static/range {v23 .. v24}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; ++ invoke-static/range {v24 .. v25}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + + move-result-object v20 + +@@ -7280,9 +7614,9 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getOperatorNumeric()Ljava/lang/String; ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getOperatorNumeric()Ljava/lang/String; + + move-result-object v19 + +@@ -7290,25 +7624,25 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mPhone:Lcom/android/internal/telephony/cdma/CDMAPhone; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- const-string v24, "gsm.operator.numeric" ++ const-string v25, "gsm.operator.numeric" + +- move-object/from16 v0, v23 ++ move-object/from16 v0, v24 + +- move-object/from16 v1, v24 ++ move-object/from16 v1, v25 + + move-object/from16 v2, v19 + + invoke-virtual {v0, v1, v2}, Lcom/android/internal/telephony/cdma/CDMAPhone;->setSystemProperty(Ljava/lang/String;Ljava/lang/String;)V + +- if-nez v19, :cond_378 ++ if-nez v19, :cond_3c5 + +- const-string v23, "operatorNumeric is null" ++ const-string v24, "operatorNumeric is null" + + move-object/from16 v0, p0 + +- move-object/from16 v1, v23 ++ move-object/from16 v1, v24 + + invoke-virtual {v0, v1}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->log(Ljava/lang/String;)V + +@@ -7316,52 +7650,52 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mPhone:Lcom/android/internal/telephony/cdma/CDMAPhone; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- const-string v24, "gsm.operator.iso-country" ++ const-string v25, "gsm.operator.iso-country" + +- const-string v25, "" ++ const-string v26, "" + +- invoke-virtual/range {v23 .. v25}, Lcom/android/internal/telephony/cdma/CDMAPhone;->setSystemProperty(Ljava/lang/String;Ljava/lang/String;)V ++ invoke-virtual/range {v24 .. v26}, Lcom/android/internal/telephony/cdma/CDMAPhone;->setSystemProperty(Ljava/lang/String;Ljava/lang/String;)V + +- const/16 v23, 0x0 ++ const/16 v24, 0x0 + +- move/from16 v0, v23 ++ move/from16 v0, v24 + + move-object/from16 v1, p0 + + iput-boolean v0, v1, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mGotCountryCode:Z + +- :cond_2ca +- :goto_2ca ++ :cond_2e8 ++ :goto_2e8 + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mPhone:Lcom/android/internal/telephony/cdma/CDMAPhone; + +- move-object/from16 v24, v0 ++ move-object/from16 v25, v0 + +- const-string v25, "gsm.operator.isroaming" ++ const-string v26, "gsm.operator.isroaming" + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/telephony/ServiceState;->getRoaming()Z ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getRoaming()Z + +- move-result v23 ++ move-result v24 + +- if-eqz v23, :cond_418 ++ if-eqz v24, :cond_465 + +- const-string v23, "true" ++ const-string v24, "true" + +- :goto_2e0 +- move-object/from16 v0, v24 ++ :goto_2fe ++ move-object/from16 v0, v25 + +- move-object/from16 v1, v25 ++ move-object/from16 v1, v26 + +- move-object/from16 v2, v23 ++ move-object/from16 v2, v24 + + invoke-virtual {v0, v1, v2}, Lcom/android/internal/telephony/cdma/CDMAPhone;->setSystemProperty(Ljava/lang/String;Ljava/lang/String;)V + +@@ -7371,226 +7705,274 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mPhone:Lcom/android/internal/telephony/cdma/CDMAPhone; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; + +- move-object/from16 v24, v0 ++ move-object/from16 v25, v0 + +- invoke-virtual/range {v23 .. v24}, Lcom/android/internal/telephony/cdma/CDMAPhone;->notifyServiceStateChanged(Landroid/telephony/ServiceState;)V ++ invoke-virtual/range {v24 .. v25}, Lcom/android/internal/telephony/cdma/CDMAPhone;->notifyServiceStateChanged(Landroid/telephony/ServiceState;)V + +- :cond_2fb +- if-eqz v7, :cond_306 ++ :cond_319 ++ if-eqz v7, :cond_324 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mAttachedRegistrants:Landroid/os/RegistrantList; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/os/RegistrantList;->notifyRegistrants()V ++ invoke-virtual/range {v24 .. v24}, Landroid/os/RegistrantList;->notifyRegistrants()V + +- :cond_306 +- if-eqz v9, :cond_311 ++ :cond_324 ++ if-eqz v9, :cond_32f + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mDetachedRegistrants:Landroid/os/RegistrantList; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/os/RegistrantList;->notifyRegistrants()V ++ invoke-virtual/range {v24 .. v24}, Landroid/os/RegistrantList;->notifyRegistrants()V + +- :cond_311 +- if-nez v8, :cond_315 ++ :cond_32f ++ if-nez v8, :cond_333 + +- if-eqz v14, :cond_320 ++ if-eqz v14, :cond_33e + +- :cond_315 ++ :cond_333 + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mPhone:Lcom/android/internal/telephony/cdma/CDMAPhone; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- const/16 v24, 0x0 ++ const/16 v25, 0x0 + +- invoke-virtual/range {v23 .. v24}, Lcom/android/internal/telephony/cdma/CDMAPhone;->notifyDataConnection(Ljava/lang/String;)V ++ invoke-virtual/range {v24 .. v25}, Lcom/android/internal/telephony/cdma/CDMAPhone;->notifyDataConnection(Ljava/lang/String;)V + +- :cond_320 +- if-eqz v16, :cond_32b ++ :cond_33e ++ if-eqz v16, :cond_349 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mRoamingOnRegistrants:Landroid/os/RegistrantList; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/os/RegistrantList;->notifyRegistrants()V ++ invoke-virtual/range {v24 .. v24}, Landroid/os/RegistrantList;->notifyRegistrants()V + +- :cond_32b +- if-eqz v15, :cond_336 ++ :cond_349 ++ if-eqz v15, :cond_354 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mRoamingOffRegistrants:Landroid/os/RegistrantList; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Landroid/os/RegistrantList;->notifyRegistrants()V ++ invoke-virtual/range {v24 .. v24}, Landroid/os/RegistrantList;->notifyRegistrants()V + +- :cond_336 +- if-eqz v12, :cond_341 ++ :cond_354 ++ if-eqz v12, :cond_35f + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mPhone:Lcom/android/internal/telephony/cdma/CDMAPhone; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Lcom/android/internal/telephony/cdma/CDMAPhone;->notifyLocationChanged()V ++ invoke-virtual/range {v24 .. v24}, Lcom/android/internal/telephony/cdma/CDMAPhone;->notifyLocationChanged()V + +- :cond_341 ++ :cond_35f + return-void + +- :cond_342 ++ :cond_360 + const/4 v13, 0x0 + + goto/16 :goto_6b + +- :cond_345 ++ :cond_363 + const/4 v11, 0x0 + + goto/16 :goto_84 + +- :cond_348 ++ :cond_366 + const/4 v7, 0x0 + + goto/16 :goto_9d + +- :cond_34b ++ :cond_369 + const/4 v9, 0x0 + + goto/16 :goto_b6 + +- :cond_34e ++ :cond_36c + const/4 v8, 0x0 + + goto/16 :goto_d1 + +- :cond_351 ++ :cond_36f + const/4 v14, 0x0 + + goto/16 :goto_ec + +- :cond_354 ++ :cond_372 + const/4 v10, 0x0 + + goto/16 :goto_ff + +- :cond_357 ++ :cond_375 + const/16 v16, 0x0 + + goto/16 :goto_119 + +- :cond_35b ++ :cond_379 + const/4 v15, 0x0 + + goto/16 :goto_132 + +- :cond_35e ++ :cond_37c + const/4 v12, 0x0 + + goto/16 :goto_145 + +- :cond_361 ++ :cond_37f + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mPhone:Lcom/android/internal/telephony/cdma/CDMAPhone; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 ++ ++ invoke-virtual/range {v24 .. v24}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getContext()Landroid/content/Context; ++ ++ move-result-object v24 ++ ++ const v25, 0x10400c2 ++ ++ invoke-virtual/range {v24 .. v25}, Landroid/content/Context;->getText(I)Ljava/lang/CharSequence; ++ ++ move-result-object v24 ++ ++ invoke-virtual/range {v24 .. v24}, Ljava/lang/Object;->toString()Ljava/lang/String; ++ ++ move-result-object v5 + +- invoke-virtual/range {v23 .. v23}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getContext()Landroid/content/Context; ++ goto/16 :goto_285 + +- move-result-object v23 ++ :cond_396 ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mSS:Landroid/telephony/ServiceState; ++ ++ move-object/from16 v24, v0 ++ ++ invoke-virtual/range {v24 .. v24}, Landroid/telephony/ServiceState;->getVoiceRegState()I ++ ++ move-result v24 ++ ++ if-nez v24, :cond_3ae ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mPhone:Lcom/android/internal/telephony/cdma/CDMAPhone; ++ ++ move-object/from16 v24, v0 ++ ++ invoke-virtual/range {v24 .. v24}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getCdmaEriText()Ljava/lang/String; ++ ++ move-result-object v5 + +- const v24, 0x10400c2 ++ goto/16 :goto_285 + +- invoke-virtual/range {v23 .. v24}, Landroid/content/Context;->getText(I)Ljava/lang/CharSequence; ++ :cond_3ae ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mPhone:Lcom/android/internal/telephony/cdma/CDMAPhone; + +- move-result-object v23 ++ move-object/from16 v24, v0 + +- invoke-virtual/range {v23 .. v23}, Ljava/lang/Object;->toString()Ljava/lang/String; ++ invoke-virtual/range {v24 .. v24}, Lcom/android/internal/telephony/cdma/CDMAPhone;->getContext()Landroid/content/Context; ++ ++ move-result-object v24 ++ ++ const v25, 0x10400c2 ++ ++ invoke-virtual/range {v24 .. v25}, Landroid/content/Context;->getText(I)Ljava/lang/CharSequence; ++ ++ move-result-object v24 ++ ++ invoke-virtual/range {v24 .. v24}, Ljava/lang/Object;->toString()Ljava/lang/String; + + move-result-object v5 + +- goto/16 :goto_267 ++ goto/16 :goto_285 + +- :cond_378 ++ :cond_3c5 + const-string v17, "" + +- const/16 v23, 0x0 ++ const/16 v24, 0x0 + +- const/16 v24, 0x3 ++ const/16 v25, 0x3 + + move-object/from16 v0, v19 + +- move/from16 v1, v23 ++ move/from16 v1, v24 + +- move/from16 v2, v24 ++ move/from16 v2, v25 + + invoke-virtual {v0, v1, v2}, Ljava/lang/String;->substring(II)Ljava/lang/String; + + move-result-object v18 + +- const/16 v23, 0x0 ++ const/16 v24, 0x0 + +- const/16 v24, 0x3 ++ const/16 v25, 0x3 + +- :try_start_38c ++ :try_start_3d9 + move-object/from16 v0, v19 + +- move/from16 v1, v23 ++ move/from16 v1, v24 + +- move/from16 v2, v24 ++ move/from16 v2, v25 + + invoke-virtual {v0, v1, v2}, Ljava/lang/String;->substring(II)Ljava/lang/String; + +- move-result-object v23 ++ move-result-object v24 + +- invoke-static/range {v23 .. v23}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I ++ invoke-static/range {v24 .. v24}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + +- move-result v23 ++ move-result v24 + +- invoke-static/range {v23 .. v23}, Lcom/android/internal/telephony/MccTable;->countryCodeForMcc(I)Ljava/lang/String; +- :try_end_39d +- .catch Ljava/lang/NumberFormatException; {:try_start_38c .. :try_end_39d} :catch_3dc +- .catch Ljava/lang/StringIndexOutOfBoundsException; {:try_start_38c .. :try_end_39d} :catch_3fa ++ invoke-static/range {v24 .. v24}, Lcom/android/internal/telephony/MccTable;->countryCodeForMcc(I)Ljava/lang/String; ++ :try_end_3ea ++ .catch Ljava/lang/NumberFormatException; {:try_start_3d9 .. :try_end_3ea} :catch_429 ++ .catch Ljava/lang/StringIndexOutOfBoundsException; {:try_start_3d9 .. :try_end_3ea} :catch_447 + + move-result-object v17 + +- :goto_39e ++ :goto_3eb + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mPhone:Lcom/android/internal/telephony/cdma/CDMAPhone; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + +- const-string v24, "gsm.operator.iso-country" ++ const-string v25, "gsm.operator.iso-country" + +- move-object/from16 v0, v23 ++ move-object/from16 v0, v24 + +- move-object/from16 v1, v24 ++ move-object/from16 v1, v25 + + move-object/from16 v2, v17 + + invoke-virtual {v0, v1, v2}, Lcom/android/internal/telephony/cdma/CDMAPhone;->setSystemProperty(Ljava/lang/String;Ljava/lang/String;)V + +- const/16 v23, 0x1 ++ const/16 v24, 0x1 + +- move/from16 v0, v23 ++ move/from16 v0, v24 + + move-object/from16 v1, p0 + +@@ -7600,29 +7982,29 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mPhone:Lcom/android/internal/telephony/cdma/CDMAPhone; + +- move-object/from16 v23, v0 ++ move-object/from16 v24, v0 + + move-object/from16 v0, p0 + + iget-boolean v0, v0, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->mNeedFixZone:Z + +- move/from16 v24, v0 ++ move/from16 v25, v0 + + move-object/from16 v0, p0 + +- move-object/from16 v1, v23 ++ move-object/from16 v1, v24 + + move-object/from16 v2, v19 + + move-object/from16 v3, v20 + +- move/from16 v4, v24 ++ move/from16 v4, v25 + + invoke-virtual {v0, v1, v2, v3, v4}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->shouldFixTimeZoneNow(Lcom/android/internal/telephony/PhoneBase;Ljava/lang/String;Ljava/lang/String;Z)Z + +- move-result v23 ++ move-result v24 + +- if-eqz v23, :cond_2ca ++ if-eqz v24, :cond_2e8 + + move-object/from16 v0, p0 + +@@ -7630,74 +8012,74 @@ + + invoke-virtual {v0, v1}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->fixTimeZone(Ljava/lang/String;)V + +- goto/16 :goto_2ca ++ goto/16 :goto_2e8 + +- :catch_3dc ++ :catch_429 + move-exception v6 + +- new-instance v23, Ljava/lang/StringBuilder; ++ new-instance v24, Ljava/lang/StringBuilder; + +- invoke-direct/range {v23 .. v23}, Ljava/lang/StringBuilder;->()V ++ invoke-direct/range {v24 .. v24}, Ljava/lang/StringBuilder;->()V + +- const-string v24, "pollStateDone: countryCodeForMcc error" ++ const-string v25, "pollStateDone: countryCodeForMcc error" + +- invoke-virtual/range {v23 .. v24}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v24 .. v25}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v23 ++ move-result-object v24 + +- move-object/from16 v0, v23 ++ move-object/from16 v0, v24 + + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; + +- move-result-object v23 ++ move-result-object v24 + +- invoke-virtual/range {v23 .. v23}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual/range {v24 .. v24}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v23 ++ move-result-object v24 + + move-object/from16 v0, p0 + +- move-object/from16 v1, v23 ++ move-object/from16 v1, v24 + + invoke-virtual {v0, v1}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->loge(Ljava/lang/String;)V + +- goto :goto_39e ++ goto :goto_3eb + +- :catch_3fa ++ :catch_447 + move-exception v6 + +- new-instance v23, Ljava/lang/StringBuilder; ++ new-instance v24, Ljava/lang/StringBuilder; + +- invoke-direct/range {v23 .. v23}, Ljava/lang/StringBuilder;->()V ++ invoke-direct/range {v24 .. v24}, Ljava/lang/StringBuilder;->()V + +- const-string v24, "pollStateDone: countryCodeForMcc error" ++ const-string v25, "pollStateDone: countryCodeForMcc error" + +- invoke-virtual/range {v23 .. v24}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v24 .. v25}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v23 ++ move-result-object v24 + +- move-object/from16 v0, v23 ++ move-object/from16 v0, v24 + + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; + +- move-result-object v23 ++ move-result-object v24 + +- invoke-virtual/range {v23 .. v23}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual/range {v24 .. v24}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v23 ++ move-result-object v24 + + move-object/from16 v0, p0 + +- move-object/from16 v1, v23 ++ move-object/from16 v1, v24 + + invoke-virtual {v0, v1}, Lcom/android/internal/telephony/cdma/CdmaServiceStateTracker;->loge(Ljava/lang/String;)V + +- goto :goto_39e ++ goto :goto_3eb + +- :cond_418 +- const-string v23, "false" ++ :cond_465 ++ const-string v24, "false" + +- goto/16 :goto_2e0 ++ goto/16 :goto_2fe + .end method + + .method protected radioTechnologyToDataServiceState(I)I +diff -Npru stock-telephony-common/smali/com/android/internal/telephony/cdma/CdmaSMSDispatcher$1.smali pdroid-telephony-common/smali/com/android/internal/telephony/cdma/CdmaSMSDispatcher$1.smali +--- stock-telephony-common/smali/com/android/internal/telephony/cdma/CdmaSMSDispatcher$1.smali 2013-08-10 20:38:01.627214234 -0700 ++++ pdroid-telephony-common/smali/com/android/internal/telephony/cdma/CdmaSMSDispatcher$1.smali 2013-08-10 20:38:03.287214303 -0700 +@@ -252,7 +252,7 @@ + + invoke-interface {v11, v12, v13}, Lcom/android/internal/telephony/CommandsInterface;->sendCdmaSms([BLandroid/os/Message;)V + :try_end_d1 +- .catchall {:try_start_79 .. :try_end_d1} :catchall_e6 ++ .catchall {:try_start_79 .. :try_end_d1} :catchall_e9 + .catch Ljava/io/IOException; {:try_start_79 .. :try_end_d1} :catch_d9 + + :try_start_d1 +@@ -277,28 +277,33 @@ + + invoke-static {v11, v12, v4}, Landroid/telephony/Rlog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I + :try_end_e1 +- .catchall {:try_start_da .. :try_end_e1} :catchall_e6 ++ .catchall {:try_start_da .. :try_end_e1} :catchall_e9 + + :try_start_e1 + invoke-virtual {v3}, Ljava/io/DataOutputStream;->close()V + :try_end_e4 +- .catch Ljava/io/IOException; {:try_start_e1 .. :try_end_e4} :catch_d6 ++ .catch Ljava/io/IOException; {:try_start_e1 .. :try_end_e4} :catch_e6 + + goto/16 :goto_25 + +- :catchall_e6 ++ :catch_e6 + move-exception v11 + +- :try_start_e7 ++ goto/16 :goto_25 ++ ++ :catchall_e9 ++ move-exception v11 ++ ++ :try_start_ea + invoke-virtual {v3}, Ljava/io/DataOutputStream;->close()V +- :try_end_ea +- .catch Ljava/io/IOException; {:try_start_e7 .. :try_end_ea} :catch_eb ++ :try_end_ed ++ .catch Ljava/io/IOException; {:try_start_ea .. :try_end_ed} :catch_ee + +- :goto_ea ++ :goto_ed + throw v11 + +- :catch_eb ++ :catch_ee + move-exception v12 + +- goto :goto_ea ++ goto :goto_ed + .end method +diff -Npru stock-telephony-common/smali/com/android/internal/telephony/gsm/GSMPhone.smali pdroid-telephony-common/smali/com/android/internal/telephony/gsm/GSMPhone.smali +--- stock-telephony-common/smali/com/android/internal/telephony/gsm/GSMPhone.smali 2013-08-10 20:38:01.783214241 -0700 ++++ pdroid-telephony-common/smali/com/android/internal/telephony/gsm/GSMPhone.smali 2013-08-10 20:38:02.575214274 -0700 +@@ -3255,7 +3255,7 @@ + return-void + .end method + +-.method notifyLocationChanged()V ++.method public notifyLocationChanged()V + .registers 2 + + iget-object v0, p0, Lcom/android/internal/telephony/gsm/GSMPhone;->mNotifier:Lcom/android/internal/telephony/PhoneNotifier; +@@ -3273,7 +3273,7 @@ + return-void + .end method + +-.method notifyPhoneStateChanged()V ++.method public notifyPhoneStateChanged()V + .registers 2 + + iget-object v0, p0, Lcom/android/internal/telephony/gsm/GSMPhone;->mNotifier:Lcom/android/internal/telephony/PhoneNotifier; +diff -Npru stock-telephony-common/smali/com/android/internal/telephony/gsm/GsmServiceStateTracker.smali pdroid-telephony-common/smali/com/android/internal/telephony/gsm/GsmServiceStateTracker.smali +--- stock-telephony-common/smali/com/android/internal/telephony/gsm/GsmServiceStateTracker.smali 2013-08-10 20:38:01.831214243 -0700 ++++ pdroid-telephony-common/smali/com/android/internal/telephony/gsm/GsmServiceStateTracker.smali 2013-08-10 20:38:03.419214309 -0700 +@@ -42,6 +42,8 @@ + + .field mCellLoc:Landroid/telephony/gsm/GsmCellLocation; + ++.field private mContext:Landroid/content/Context; ++ + .field private mCr:Landroid/content/ContentResolver; + + .field private mCurPlmn:Ljava/lang/String; +@@ -100,6 +102,8 @@ + + .field private mZoneTime:J + ++.field private pSetMan:Landroid/privacy/PrivacySettingsManager; ++ + + # direct methods + .method public constructor (Lcom/android/internal/telephony/gsm/GSMPhone;)V +@@ -314,6 +318,30 @@ + + invoke-virtual {v3, v4, v1}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; + ++ invoke-virtual {p1}, Lcom/android/internal/telephony/gsm/GSMPhone;->getContext()Landroid/content/Context; ++ ++ move-result-object v3 ++ ++ iput-object v3, p0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mContext:Landroid/content/Context; ++ ++ new-instance v3, Landroid/privacy/PrivacySettingsManager; ++ ++ iget-object v4, p0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mContext:Landroid/content/Context; ++ ++ const-string v5, "privacy" ++ ++ invoke-static {v5}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v5 ++ ++ invoke-static {v5}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v5 ++ ++ invoke-direct {v3, v4, v5}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v3, p0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ + const/4 v3, 0x3 + + invoke-virtual {p1, v3}, Lcom/android/internal/telephony/gsm/GSMPhone;->notifyOtaspChanged(I)V +@@ -5928,718 +5956,965 @@ + .end method + + .method public handleMessage(Landroid/os/Message;)V +- .registers 19 ++ .registers 23 + + move-object/from16 v0, p0 + +- iget-object v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPhone:Lcom/android/internal/telephony/gsm/GSMPhone; ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPhone:Lcom/android/internal/telephony/gsm/GSMPhone; ++ ++ move-object/from16 v17, v0 + +- iget-boolean v13, v13, Lcom/android/internal/telephony/gsm/GSMPhone;->mIsTheCurrentActivePhone:Z ++ move-object/from16 v0, v17 + +- if-nez v13, :cond_37 ++ iget-boolean v0, v0, Lcom/android/internal/telephony/gsm/GSMPhone;->mIsTheCurrentActivePhone:Z + +- const-string v13, "GsmSST" ++ move/from16 v17, v0 + +- new-instance v14, Ljava/lang/StringBuilder; ++ if-nez v17, :cond_41 + +- invoke-direct {v14}, Ljava/lang/StringBuilder;->()V ++ const-string v17, "GsmSST" + +- const-string v15, "Received message " ++ new-instance v18, Ljava/lang/StringBuilder; + +- invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-direct/range {v18 .. v18}, Ljava/lang/StringBuilder;->()V + +- move-result-object v14 ++ const-string v19, "Received message " + +- move-object/from16 v0, p1 ++ invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- invoke-virtual {v14, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ move-result-object v18 + +- move-result-object v14 ++ move-object/from16 v0, v18 ++ ++ move-object/from16 v1, p1 ++ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ ++ move-result-object v18 + +- const-string v15, "[" ++ const-string v19, "[" + +- invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v14 ++ move-result-object v18 + + move-object/from16 v0, p1 + +- iget v15, v0, Landroid/os/Message;->what:I ++ iget v0, v0, Landroid/os/Message;->what:I + +- invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ move/from16 v19, v0 + +- move-result-object v14 ++ invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + +- const-string v15, "] while being destroyed. Ignoring." ++ move-result-object v18 + +- invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ const-string v19, "] while being destroyed. Ignoring." + +- move-result-object v14 ++ invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- invoke-virtual {v14}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ move-result-object v18 + +- move-result-object v14 ++ invoke-virtual/range {v18 .. v18}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- invoke-static {v13, v14}, Landroid/telephony/Rlog;->e(Ljava/lang/String;Ljava/lang/String;)I ++ move-result-object v18 + +- :cond_36 +- :goto_36 +- :pswitch_36 ++ invoke-static/range {v17 .. v18}, Landroid/telephony/Rlog;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ :cond_40 ++ :goto_40 ++ :pswitch_40 + return-void + +- :cond_37 ++ :cond_41 + move-object/from16 v0, p1 + +- iget v13, v0, Landroid/os/Message;->what:I ++ iget v0, v0, Landroid/os/Message;->what:I ++ ++ move/from16 v17, v0 + +- packed-switch v13, :pswitch_data_260 ++ packed-switch v17, :pswitch_data_36e + +- :pswitch_3e ++ :pswitch_4a + invoke-super/range {p0 .. p1}, Lcom/android/internal/telephony/ServiceStateTracker;->handleMessage(Landroid/os/Message;)V + +- goto :goto_36 ++ goto :goto_40 + +- :pswitch_42 ++ :pswitch_4e + move-object/from16 v0, p0 + +- iget-object v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mCi:Lcom/android/internal/telephony/CommandsInterface; ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mCi:Lcom/android/internal/telephony/CommandsInterface; ++ ++ move-object/from16 v17, v0 + +- invoke-interface {v13}, Lcom/android/internal/telephony/CommandsInterface;->setCurrentPreferredNetworkType()V ++ invoke-interface/range {v17 .. v17}, Lcom/android/internal/telephony/CommandsInterface;->setCurrentPreferredNetworkType()V + + move-object/from16 v0, p0 + +- iget-object v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPhone:Lcom/android/internal/telephony/gsm/GSMPhone; ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPhone:Lcom/android/internal/telephony/gsm/GSMPhone; ++ ++ move-object/from16 v17, v0 + +- invoke-virtual {v13}, Lcom/android/internal/telephony/gsm/GSMPhone;->getContext()Landroid/content/Context; ++ invoke-virtual/range {v17 .. v17}, Lcom/android/internal/telephony/gsm/GSMPhone;->getContext()Landroid/content/Context; + +- move-result-object v13 ++ move-result-object v17 + +- invoke-virtual {v13}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; ++ invoke-virtual/range {v17 .. v17}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; + +- move-result-object v13 ++ move-result-object v17 + +- const v14, 0x111003a ++ const v18, 0x111003a + +- invoke-virtual {v13, v14}, Landroid/content/res/Resources;->getBoolean(I)Z ++ invoke-virtual/range {v17 .. v18}, Landroid/content/res/Resources;->getBoolean(I)Z + +- move-result v10 ++ move-result v13 + +- if-nez v10, :cond_66 ++ if-nez v13, :cond_79 + + move-object/from16 v0, p0 + +- iget-object v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPhone:Lcom/android/internal/telephony/gsm/GSMPhone; ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPhone:Lcom/android/internal/telephony/gsm/GSMPhone; + +- const/4 v14, 0x0 ++ move-object/from16 v17, v0 + +- invoke-virtual {v13, v14}, Lcom/android/internal/telephony/gsm/GSMPhone;->restoreSavedNetworkSelection(Landroid/os/Message;)V ++ const/16 v18, 0x0 ++ ++ invoke-virtual/range {v17 .. v18}, Lcom/android/internal/telephony/gsm/GSMPhone;->restoreSavedNetworkSelection(Landroid/os/Message;)V + +- :cond_66 ++ :cond_79 + invoke-direct/range {p0 .. p0}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->pollState()V + + invoke-direct/range {p0 .. p0}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->queueNextSignalStrengthPoll()V + +- goto :goto_36 ++ goto :goto_40 + +- :pswitch_6d ++ :pswitch_80 + invoke-virtual/range {p0 .. p0}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->setPowerStateToDesired()V + + invoke-direct/range {p0 .. p0}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->pollState()V + +- goto :goto_36 ++ goto :goto_40 + +- :pswitch_74 ++ :pswitch_87 + invoke-direct/range {p0 .. p0}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->pollState()V + +- goto :goto_36 ++ goto :goto_40 + +- :pswitch_78 ++ :pswitch_8b + move-object/from16 v0, p0 + +- iget-object v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mCi:Lcom/android/internal/telephony/CommandsInterface; ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mCi:Lcom/android/internal/telephony/CommandsInterface; + +- invoke-interface {v13}, Lcom/android/internal/telephony/CommandsInterface;->getRadioState()Lcom/android/internal/telephony/CommandsInterface$RadioState; ++ move-object/from16 v17, v0 + +- move-result-object v13 ++ invoke-interface/range {v17 .. v17}, Lcom/android/internal/telephony/CommandsInterface;->getRadioState()Lcom/android/internal/telephony/CommandsInterface$RadioState; + +- invoke-virtual {v13}, Lcom/android/internal/telephony/CommandsInterface$RadioState;->isOn()Z ++ move-result-object v17 + +- move-result v13 ++ invoke-virtual/range {v17 .. v17}, Lcom/android/internal/telephony/CommandsInterface$RadioState;->isOn()Z ++ ++ move-result v17 + +- if-eqz v13, :cond_36 ++ if-eqz v17, :cond_40 + + move-object/from16 v0, p1 + +- iget-object v1, v0, Landroid/os/Message;->obj:Ljava/lang/Object; ++ iget-object v3, v0, Landroid/os/Message;->obj:Ljava/lang/Object; + +- check-cast v1, Landroid/os/AsyncResult; ++ check-cast v3, Landroid/os/AsyncResult; + +- const/4 v13, 0x1 ++ const/16 v17, 0x1 + + move-object/from16 v0, p0 + +- invoke-virtual {v0, v1, v13}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->onSignalStrengthResult(Landroid/os/AsyncResult;Z)Z ++ move/from16 v1, v17 ++ ++ invoke-virtual {v0, v3, v1}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->onSignalStrengthResult(Landroid/os/AsyncResult;Z)Z + + invoke-direct/range {p0 .. p0}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->queueNextSignalStrengthPoll()V + +- goto :goto_36 ++ goto :goto_40 + +- :pswitch_96 ++ :pswitch_ae + move-object/from16 v0, p1 + +- iget-object v1, v0, Landroid/os/Message;->obj:Ljava/lang/Object; ++ iget-object v3, v0, Landroid/os/Message;->obj:Ljava/lang/Object; ++ ++ check-cast v3, Landroid/os/AsyncResult; + +- check-cast v1, Landroid/os/AsyncResult; ++ iget-object v0, v3, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable; + +- iget-object v13, v1, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable; ++ move-object/from16 v17, v0 + +- if-nez v13, :cond_e9 ++ if-nez v17, :cond_143 + +- iget-object v13, v1, Landroid/os/AsyncResult;->result:Ljava/lang/Object; ++ iget-object v0, v3, Landroid/os/AsyncResult;->result:Ljava/lang/Object; + +- check-cast v13, [Ljava/lang/String; ++ move-object/from16 v17, v0 + +- move-object v11, v13 ++ check-cast v17, [Ljava/lang/String; + +- check-cast v11, [Ljava/lang/String; ++ move-object/from16 v14, v17 + +- const/4 v4, -0x1 ++ check-cast v14, [Ljava/lang/String; + +- const/4 v2, -0x1 ++ const/4 v6, -0x1 + +- array-length v13, v11 ++ const/4 v4, -0x1 + +- const/4 v14, 0x3 ++ array-length v0, v14 + +- if-lt v13, v14, :cond_db ++ move/from16 v17, v0 + +- const/4 v13, 0x1 ++ const/16 v18, 0x3 + +- :try_start_ae +- aget-object v13, v11, v13 ++ move/from16 v0, v17 ++ ++ move/from16 v1, v18 + +- if-eqz v13, :cond_c4 ++ if-lt v0, v1, :cond_105 + +- const/4 v13, 0x1 ++ const/16 v17, 0x1 + +- aget-object v13, v11, v13 ++ :try_start_d3 ++ aget-object v17, v14, v17 + +- invoke-virtual {v13}, Ljava/lang/String;->length()I ++ if-eqz v17, :cond_eb + +- move-result v13 ++ const/16 v17, 0x1 + +- if-lez v13, :cond_c4 ++ aget-object v17, v14, v17 + +- const/4 v13, 0x1 ++ invoke-virtual/range {v17 .. v17}, Ljava/lang/String;->length()I + +- aget-object v13, v11, v13 ++ move-result v17 + +- const/16 v14, 0x10 ++ if-lez v17, :cond_eb + +- invoke-static {v13, v14}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;I)I ++ const/16 v17, 0x1 + +- move-result v4 ++ aget-object v17, v14, v17 + +- :cond_c4 +- const/4 v13, 0x2 ++ const/16 v18, 0x10 + +- aget-object v13, v11, v13 ++ invoke-static/range {v17 .. v18}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;I)I + +- if-eqz v13, :cond_db ++ move-result v6 + +- const/4 v13, 0x2 ++ :cond_eb ++ const/16 v17, 0x2 + +- aget-object v13, v11, v13 ++ aget-object v17, v14, v17 + +- invoke-virtual {v13}, Ljava/lang/String;->length()I ++ if-eqz v17, :cond_105 + +- move-result v13 ++ const/16 v17, 0x2 + +- if-lez v13, :cond_db ++ aget-object v17, v14, v17 + +- const/4 v13, 0x2 ++ invoke-virtual/range {v17 .. v17}, Ljava/lang/String;->length()I + +- aget-object v13, v11, v13 ++ move-result v17 + +- const/16 v14, 0x10 ++ if-lez v17, :cond_105 + +- invoke-static {v13, v14}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;I)I +- :try_end_da +- .catch Ljava/lang/NumberFormatException; {:try_start_ae .. :try_end_da} :catch_ee ++ const/16 v17, 0x2 + +- move-result v2 ++ aget-object v17, v14, v17 + +- :cond_db +- :goto_db +- move-object/from16 v0, p0 ++ const/16 v18, 0x10 + +- iget-object v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mCellLoc:Landroid/telephony/gsm/GsmCellLocation; ++ invoke-static/range {v17 .. v18}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;I)I ++ :try_end_104 ++ .catch Ljava/lang/NumberFormatException; {:try_start_d3 .. :try_end_104} :catch_148 + +- invoke-virtual {v13, v4, v2}, Landroid/telephony/gsm/GsmCellLocation;->setLacAndCid(II)V ++ move-result v4 + ++ :cond_105 ++ :goto_105 + move-object/from16 v0, p0 + +- iget-object v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPhone:Lcom/android/internal/telephony/gsm/GSMPhone; ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; + +- invoke-virtual {v13}, Lcom/android/internal/telephony/gsm/GSMPhone;->notifyLocationChanged()V +- +- :cond_e9 +- invoke-virtual/range {p0 .. p0}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->disableSingleLocationUpdate()V ++ move-object/from16 v17, v0 + +- goto/16 :goto_36 ++ move-object/from16 v0, p0 + +- :catch_ee +- move-exception v3 ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mContext:Landroid/content/Context; + +- const-string v13, "GsmSST" ++ move-object/from16 v18, v0 + +- new-instance v14, Ljava/lang/StringBuilder; ++ invoke-virtual/range {v18 .. v18}, Landroid/content/Context;->getPackageName()Ljava/lang/String; + +- invoke-direct {v14}, Ljava/lang/StringBuilder;->()V ++ move-result-object v18 + +- const-string v15, "error parsing location: " ++ const/16 v19, 0x0 + +- invoke-virtual {v14, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v17 .. v19}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; + +- move-result-object v14 ++ move-result-object v12 + +- invoke-virtual {v14, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ move-object/from16 v0, p0 + +- move-result-object v14 ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; + +- invoke-virtual {v14}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ move-object/from16 v17, v0 + +- move-result-object v14 ++ if-eqz v17, :cond_164 + +- invoke-static {v13, v14}, Landroid/telephony/Rlog;->w(Ljava/lang/String;Ljava/lang/String;)I ++ if-eqz v12, :cond_164 + +- goto :goto_db ++ invoke-virtual {v12}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B + +- :pswitch_108 +- move-object/from16 v0, p1 ++ move-result v17 + +- iget-object v1, v0, Landroid/os/Message;->obj:Ljava/lang/Object; ++ const/16 v18, 0x1 + +- check-cast v1, Landroid/os/AsyncResult; ++ move/from16 v0, v17 + +- move-object/from16 v0, p1 ++ move/from16 v1, v18 + +- iget v13, v0, Landroid/os/Message;->what:I ++ if-ne v0, v1, :cond_164 + + move-object/from16 v0, p0 + +- invoke-virtual {v0, v13, v1}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->handlePollStateResult(ILandroid/os/AsyncResult;)V ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mCellLoc:Landroid/telephony/gsm/GsmCellLocation; ++ ++ move-object/from16 v17, v0 + +- goto/16 :goto_36 ++ invoke-virtual/range {v17 .. v17}, Landroid/telephony/gsm/GsmCellLocation;->setStateInvalid()V + +- :pswitch_119 + move-object/from16 v0, p0 + +- iget-object v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mCi:Lcom/android/internal/telephony/CommandsInterface; ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPhone:Lcom/android/internal/telephony/gsm/GSMPhone; + +- const/4 v14, 0x3 ++ move-object/from16 v17, v0 + +- move-object/from16 v0, p0 ++ invoke-virtual/range {v17 .. v17}, Lcom/android/internal/telephony/gsm/GSMPhone;->notifyLocationChanged()V + +- invoke-virtual {v0, v14}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->obtainMessage(I)Landroid/os/Message; ++ :cond_143 ++ :goto_143 ++ invoke-virtual/range {p0 .. p0}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->disableSingleLocationUpdate()V + +- move-result-object v14 ++ goto/16 :goto_40 + +- invoke-interface {v13, v14}, Lcom/android/internal/telephony/CommandsInterface;->getSignalStrength(Landroid/os/Message;)V ++ :catch_148 ++ move-exception v5 + +- goto/16 :goto_36 ++ const-string v17, "GsmSST" + +- :pswitch_129 +- move-object/from16 v0, p1 ++ new-instance v18, Ljava/lang/StringBuilder; + +- iget-object v1, v0, Landroid/os/Message;->obj:Ljava/lang/Object; ++ invoke-direct/range {v18 .. v18}, Ljava/lang/StringBuilder;->()V + +- check-cast v1, Landroid/os/AsyncResult; ++ const-string v19, "error parsing location: " + +- iget-object v13, v1, Landroid/os/AsyncResult;->result:Ljava/lang/Object; ++ invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- check-cast v13, [Ljava/lang/Object; ++ move-result-object v18 + +- check-cast v13, [Ljava/lang/Object; ++ move-object/from16 v0, v18 + +- const/4 v14, 0x0 ++ invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; + +- aget-object v9, v13, v14 ++ move-result-object v18 + +- check-cast v9, Ljava/lang/String; ++ invoke-virtual/range {v18 .. v18}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- iget-object v13, v1, Landroid/os/AsyncResult;->result:Ljava/lang/Object; ++ move-result-object v18 + +- check-cast v13, [Ljava/lang/Object; ++ invoke-static/range {v17 .. v18}, Landroid/telephony/Rlog;->w(Ljava/lang/String;Ljava/lang/String;)I + +- check-cast v13, [Ljava/lang/Object; ++ goto :goto_105 + +- const/4 v14, 0x1 ++ :cond_164 ++ move-object/from16 v0, p0 + +- aget-object v13, v13, v14 ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; + +- check-cast v13, Ljava/lang/Long; ++ move-object/from16 v17, v0 + +- invoke-virtual {v13}, Ljava/lang/Long;->longValue()J ++ if-eqz v17, :cond_19a + +- move-result-wide v7 ++ if-eqz v12, :cond_19a + +- move-object/from16 v0, p0 ++ invoke-virtual {v12}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B + +- invoke-direct {v0, v9, v7, v8}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->setTimeFromNITZString(Ljava/lang/String;J)V ++ move-result v17 + +- goto/16 :goto_36 ++ const/16 v18, 0x3 + +- :pswitch_150 +- move-object/from16 v0, p1 ++ move/from16 v0, v17 ++ ++ move/from16 v1, v18 + +- iget-object v1, v0, Landroid/os/Message;->obj:Ljava/lang/Object; ++ if-ne v0, v1, :cond_19a + +- check-cast v1, Landroid/os/AsyncResult; ++ new-instance v16, Ljava/util/Random; + +- const/4 v13, 0x1 ++ invoke-direct/range {v16 .. v16}, Ljava/util/Random;->()V + + move-object/from16 v0, p0 + +- iput-boolean v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mDontPollSignalStrength:Z ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mCellLoc:Landroid/telephony/gsm/GsmCellLocation; + +- const/4 v13, 0x1 ++ move-object/from16 v17, v0 + +- move-object/from16 v0, p0 ++ invoke-virtual/range {v16 .. v16}, Ljava/util/Random;->nextInt()I + +- invoke-virtual {v0, v1, v13}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->onSignalStrengthResult(Landroid/os/AsyncResult;Z)Z ++ move-result v18 + +- goto/16 :goto_36 ++ invoke-virtual/range {v16 .. v16}, Ljava/util/Random;->nextInt()I + +- :pswitch_163 +- invoke-virtual/range {p0 .. p0}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->updateSpnDisplay()V ++ move-result v19 + +- goto/16 :goto_36 ++ invoke-virtual/range {v17 .. v19}, Landroid/telephony/gsm/GsmCellLocation;->setLacAndCid(II)V + +- :pswitch_168 +- move-object/from16 v0, p1 ++ move-object/from16 v0, p0 + +- iget-object v1, v0, Landroid/os/Message;->obj:Ljava/lang/Object; ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPhone:Lcom/android/internal/telephony/gsm/GSMPhone; + +- check-cast v1, Landroid/os/AsyncResult; ++ move-object/from16 v17, v0 + +- iget-object v13, v1, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable; ++ invoke-virtual/range {v17 .. v17}, Lcom/android/internal/telephony/gsm/GSMPhone;->notifyLocationChanged()V + +- if-nez v13, :cond_36 ++ goto :goto_143 + ++ :cond_19a + move-object/from16 v0, p0 + +- iget-object v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mCi:Lcom/android/internal/telephony/CommandsInterface; ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mCellLoc:Landroid/telephony/gsm/GsmCellLocation; ++ ++ move-object/from16 v17, v0 + +- const/16 v14, 0xf ++ move-object/from16 v0, v17 + +- const/4 v15, 0x0 ++ invoke-virtual {v0, v6, v4}, Landroid/telephony/gsm/GsmCellLocation;->setLacAndCid(II)V + + move-object/from16 v0, p0 + +- invoke-virtual {v0, v14, v15}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message; ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPhone:Lcom/android/internal/telephony/gsm/GSMPhone; + +- move-result-object v14 ++ move-object/from16 v17, v0 + +- invoke-interface {v13, v14}, Lcom/android/internal/telephony/CommandsInterface;->getVoiceRegistrationState(Landroid/os/Message;)V ++ invoke-virtual/range {v17 .. v17}, Lcom/android/internal/telephony/gsm/GSMPhone;->notifyLocationChanged()V + +- goto/16 :goto_36 ++ goto :goto_143 + +- :pswitch_184 ++ :pswitch_1af + move-object/from16 v0, p1 + +- iget-object v1, v0, Landroid/os/Message;->obj:Ljava/lang/Object; ++ iget-object v3, v0, Landroid/os/Message;->obj:Ljava/lang/Object; + +- check-cast v1, Landroid/os/AsyncResult; ++ check-cast v3, Landroid/os/AsyncResult; + +- const/16 v13, 0x15 ++ move-object/from16 v0, p1 + +- iget-object v14, v1, Landroid/os/AsyncResult;->userObj:Ljava/lang/Object; ++ iget v0, v0, Landroid/os/Message;->what:I + +- move-object/from16 v0, p0 ++ move/from16 v17, v0 + +- invoke-virtual {v0, v13, v14}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message; ++ move-object/from16 v0, p0 + +- move-result-object v6 ++ move/from16 v1, v17 + +- move-object/from16 v0, p0 ++ invoke-virtual {v0, v1, v3}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->handlePollStateResult(ILandroid/os/AsyncResult;)V + +- iget-object v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mCi:Lcom/android/internal/telephony/CommandsInterface; ++ goto/16 :goto_40 + ++ :pswitch_1c4 + move-object/from16 v0, p0 + +- iget v14, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPreferredNetworkType:I ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mCi:Lcom/android/internal/telephony/CommandsInterface; + +- invoke-interface {v13, v14, v6}, Lcom/android/internal/telephony/CommandsInterface;->setPreferredNetworkType(ILandroid/os/Message;)V ++ move-object/from16 v17, v0 + +- goto/16 :goto_36 ++ const/16 v18, 0x3 + +- :pswitch_1a1 +- move-object/from16 v0, p1 ++ move-object/from16 v0, p0 + +- iget-object v1, v0, Landroid/os/Message;->obj:Ljava/lang/Object; ++ move/from16 v1, v18 + +- check-cast v1, Landroid/os/AsyncResult; ++ invoke-virtual {v0, v1}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->obtainMessage(I)Landroid/os/Message; + +- iget-object v13, v1, Landroid/os/AsyncResult;->userObj:Ljava/lang/Object; ++ move-result-object v18 + +- if-eqz v13, :cond_36 ++ invoke-interface/range {v17 .. v18}, Lcom/android/internal/telephony/CommandsInterface;->getSignalStrength(Landroid/os/Message;)V + +- iget-object v13, v1, Landroid/os/AsyncResult;->userObj:Ljava/lang/Object; ++ goto/16 :goto_40 + +- check-cast v13, Landroid/os/Message; ++ :pswitch_1d9 ++ move-object/from16 v0, p1 + +- invoke-static {v13}, Landroid/os/AsyncResult;->forMessage(Landroid/os/Message;)Landroid/os/AsyncResult; ++ iget-object v3, v0, Landroid/os/Message;->obj:Ljava/lang/Object; + +- move-result-object v13 ++ check-cast v3, Landroid/os/AsyncResult; + +- iget-object v14, v1, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable; ++ iget-object v0, v3, Landroid/os/AsyncResult;->result:Ljava/lang/Object; + +- iput-object v14, v13, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable; ++ move-object/from16 v17, v0 + +- iget-object v13, v1, Landroid/os/AsyncResult;->userObj:Ljava/lang/Object; ++ check-cast v17, [Ljava/lang/Object; + +- check-cast v13, Landroid/os/Message; ++ check-cast v17, [Ljava/lang/Object; + +- invoke-virtual {v13}, Landroid/os/Message;->sendToTarget()V ++ const/16 v18, 0x0 + +- goto/16 :goto_36 ++ aget-object v11, v17, v18 + +- :pswitch_1c0 +- move-object/from16 v0, p1 ++ check-cast v11, Ljava/lang/String; + +- iget-object v1, v0, Landroid/os/Message;->obj:Ljava/lang/Object; ++ iget-object v0, v3, Landroid/os/AsyncResult;->result:Ljava/lang/Object; + +- check-cast v1, Landroid/os/AsyncResult; ++ move-object/from16 v17, v0 + +- iget-object v13, v1, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable; ++ check-cast v17, [Ljava/lang/Object; + +- if-nez v13, :cond_1eb ++ check-cast v17, [Ljava/lang/Object; + +- iget-object v13, v1, Landroid/os/AsyncResult;->result:Ljava/lang/Object; ++ const/16 v18, 0x1 + +- check-cast v13, [I ++ aget-object v17, v17, v18 + +- check-cast v13, [I ++ check-cast v17, Ljava/lang/Long; + +- const/4 v14, 0x0 ++ invoke-virtual/range {v17 .. v17}, Ljava/lang/Long;->longValue()J + +- aget v13, v13, v14 ++ move-result-wide v9 + + move-object/from16 v0, p0 + +- iput v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPreferredNetworkType:I ++ invoke-direct {v0, v11, v9, v10}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->setTimeFromNITZString(Ljava/lang/String;J)V + +- :goto_1d7 +- const/16 v13, 0x14 ++ goto/16 :goto_40 + +- iget-object v14, v1, Landroid/os/AsyncResult;->userObj:Ljava/lang/Object; ++ :pswitch_206 ++ move-object/from16 v0, p1 + +- move-object/from16 v0, p0 ++ iget-object v3, v0, Landroid/os/Message;->obj:Ljava/lang/Object; + +- invoke-virtual {v0, v13, v14}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message; ++ check-cast v3, Landroid/os/AsyncResult; + +- move-result-object v6 ++ const/16 v17, 0x1 + +- const/4 v12, 0x7 ++ move/from16 v0, v17 + +- move-object/from16 v0, p0 ++ move-object/from16 v1, p0 + +- iget-object v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mCi:Lcom/android/internal/telephony/CommandsInterface; ++ iput-boolean v0, v1, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mDontPollSignalStrength:Z + +- invoke-interface {v13, v12, v6}, Lcom/android/internal/telephony/CommandsInterface;->setPreferredNetworkType(ILandroid/os/Message;)V ++ const/16 v17, 0x1 + +- goto/16 :goto_36 ++ move-object/from16 v0, p0 + +- :cond_1eb +- const/4 v13, 0x7 ++ move/from16 v1, v17 + +- move-object/from16 v0, p0 ++ invoke-virtual {v0, v3, v1}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->onSignalStrengthResult(Landroid/os/AsyncResult;Z)Z + +- iput v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPreferredNetworkType:I ++ goto/16 :goto_40 + +- goto :goto_1d7 ++ :pswitch_21f ++ invoke-virtual/range {p0 .. p0}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->updateSpnDisplay()V + +- :pswitch_1f1 +- move-object/from16 v0, p0 ++ goto/16 :goto_40 + +- iget-object v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mSS:Landroid/telephony/ServiceState; ++ :pswitch_224 ++ move-object/from16 v0, p1 + +- if-eqz v13, :cond_242 ++ iget-object v3, v0, Landroid/os/Message;->obj:Ljava/lang/Object; + +- move-object/from16 v0, p0 ++ check-cast v3, Landroid/os/AsyncResult; + +- iget-object v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mSS:Landroid/telephony/ServiceState; ++ iget-object v0, v3, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable; + +- invoke-virtual {v13}, Landroid/telephony/ServiceState;->getDataRegState()I ++ move-object/from16 v17, v0 + +- move-result v13 ++ if-nez v17, :cond_40 + + move-object/from16 v0, p0 + +- iget-object v14, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mSS:Landroid/telephony/ServiceState; ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mCi:Lcom/android/internal/telephony/CommandsInterface; ++ ++ move-object/from16 v17, v0 + +- invoke-virtual {v14}, Landroid/telephony/ServiceState;->getVoiceRegState()I ++ const/16 v18, 0xf + +- move-result v14 ++ const/16 v19, 0x0 + + move-object/from16 v0, p0 + +- invoke-direct {v0, v13, v14}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->isGprsConsistent(II)Z ++ move/from16 v1, v18 + +- move-result v13 ++ move-object/from16 v2, v19 + +- if-nez v13, :cond_242 ++ invoke-virtual {v0, v1, v2}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message; + +- move-object/from16 v0, p0 ++ move-result-object v18 + +- iget-object v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPhone:Lcom/android/internal/telephony/gsm/GSMPhone; ++ invoke-interface/range {v17 .. v18}, Lcom/android/internal/telephony/CommandsInterface;->getVoiceRegistrationState(Landroid/os/Message;)V + +- invoke-virtual {v13}, Lcom/android/internal/telephony/gsm/GSMPhone;->getCellLocation()Landroid/telephony/CellLocation; ++ goto/16 :goto_40 + +- move-result-object v5 ++ :pswitch_249 ++ move-object/from16 v0, p1 + +- check-cast v5, Landroid/telephony/gsm/GsmCellLocation; ++ iget-object v3, v0, Landroid/os/Message;->obj:Ljava/lang/Object; + +- const v14, 0xc3bb ++ check-cast v3, Landroid/os/AsyncResult; + +- const/4 v13, 0x2 ++ const/16 v17, 0x15 + +- new-array v15, v13, [Ljava/lang/Object; ++ iget-object v0, v3, Landroid/os/AsyncResult;->userObj:Ljava/lang/Object; + +- const/4 v13, 0x0 ++ move-object/from16 v18, v0 + + move-object/from16 v0, p0 + +- iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mSS:Landroid/telephony/ServiceState; ++ move/from16 v1, v17 + +- move-object/from16 v16, v0 ++ move-object/from16 v2, v18 + +- invoke-virtual/range {v16 .. v16}, Landroid/telephony/ServiceState;->getOperatorNumeric()Ljava/lang/String; ++ invoke-virtual {v0, v1, v2}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message; + +- move-result-object v16 ++ move-result-object v8 + +- aput-object v16, v15, v13 ++ move-object/from16 v0, p0 + +- const/16 v16, 0x1 ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mCi:Lcom/android/internal/telephony/CommandsInterface; + +- if-eqz v5, :cond_249 ++ move-object/from16 v17, v0 + +- invoke-virtual {v5}, Landroid/telephony/gsm/GsmCellLocation;->getCid()I ++ move-object/from16 v0, p0 + +- move-result v13 ++ iget v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPreferredNetworkType:I + +- :goto_234 +- invoke-static {v13}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ move/from16 v18, v0 + +- move-result-object v13 ++ move-object/from16 v0, v17 + +- aput-object v13, v15, v16 ++ move/from16 v1, v18 + +- invoke-static {v14, v15}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I ++ invoke-interface {v0, v1, v8}, Lcom/android/internal/telephony/CommandsInterface;->setPreferredNetworkType(ILandroid/os/Message;)V + +- const/4 v13, 0x1 ++ goto/16 :goto_40 + +- move-object/from16 v0, p0 ++ :pswitch_274 ++ move-object/from16 v0, p1 + +- iput-boolean v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mReportedGprsNoReg:Z ++ iget-object v3, v0, Landroid/os/Message;->obj:Ljava/lang/Object; + +- :cond_242 +- const/4 v13, 0x0 ++ check-cast v3, Landroid/os/AsyncResult; + +- move-object/from16 v0, p0 ++ iget-object v0, v3, Landroid/os/AsyncResult;->userObj:Ljava/lang/Object; + +- iput-boolean v13, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mStartedGprsRegCheck:Z ++ move-object/from16 v17, v0 + +- goto/16 :goto_36 ++ if-eqz v17, :cond_40 + +- :cond_249 +- const/4 v13, -0x1 ++ iget-object v0, v3, Landroid/os/AsyncResult;->userObj:Ljava/lang/Object; + +- goto :goto_234 ++ move-object/from16 v17, v0 + +- :pswitch_24b +- const-string v13, "EVENT_RESTRICTED_STATE_CHANGED" ++ check-cast v17, Landroid/os/Message; + +- move-object/from16 v0, p0 ++ invoke-static/range {v17 .. v17}, Landroid/os/AsyncResult;->forMessage(Landroid/os/Message;)Landroid/os/AsyncResult; + +- invoke-virtual {v0, v13}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->log(Ljava/lang/String;)V ++ move-result-object v17 + +- move-object/from16 v0, p1 ++ iget-object v0, v3, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable; + +- iget-object v1, v0, Landroid/os/Message;->obj:Ljava/lang/Object; ++ move-object/from16 v18, v0 + +- check-cast v1, Landroid/os/AsyncResult; ++ move-object/from16 v0, v18 + +- move-object/from16 v0, p0 ++ move-object/from16 v1, v17 + +- invoke-direct {v0, v1}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->onRestrictedStateChanged(Landroid/os/AsyncResult;)V ++ iput-object v0, v1, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable; + +- goto/16 :goto_36 ++ iget-object v0, v3, Landroid/os/AsyncResult;->userObj:Ljava/lang/Object; + +- nop ++ move-object/from16 v17, v0 + +- :pswitch_data_260 +- .packed-switch 0x1 +- :pswitch_6d +- :pswitch_74 +- :pswitch_78 +- :pswitch_108 +- :pswitch_108 +- :pswitch_108 +- :pswitch_3e +- :pswitch_3e +- :pswitch_3e +- :pswitch_119 +- :pswitch_129 +- :pswitch_150 +- :pswitch_36 +- :pswitch_108 +- :pswitch_96 +- :pswitch_163 +- :pswitch_42 +- :pswitch_168 +- :pswitch_1c0 +- :pswitch_184 +- :pswitch_1a1 +- :pswitch_1f1 +- :pswitch_24b +- .end packed-switch +-.end method ++ check-cast v17, Landroid/os/Message; + +-.method protected handlePollStateResult(ILandroid/os/AsyncResult;)V +- .registers 24 ++ invoke-virtual/range {v17 .. v17}, Landroid/os/Message;->sendToTarget()V + +- move-object/from16 v0, p2 ++ goto/16 :goto_40 + +- iget-object v0, v0, Landroid/os/AsyncResult;->userObj:Ljava/lang/Object; ++ :pswitch_29f ++ move-object/from16 v0, p1 + +- move-object/from16 v17, v0 ++ iget-object v3, v0, Landroid/os/Message;->obj:Ljava/lang/Object; + +- move-object/from16 v0, p0 ++ check-cast v3, Landroid/os/AsyncResult; + +- iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPollingContext:[I ++ iget-object v0, v3, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable; + +- move-object/from16 v18, v0 ++ move-object/from16 v17, v0 + +- move-object/from16 v0, v17 ++ if-nez v17, :cond_2db + +- move-object/from16 v1, v18 ++ iget-object v0, v3, Landroid/os/AsyncResult;->result:Ljava/lang/Object; + +- if-eq v0, v1, :cond_13 ++ move-object/from16 v17, v0 + +- :cond_12 +- :goto_12 +- return-void ++ check-cast v17, [I + +- :cond_13 ++ check-cast v17, [I ++ ++ const/16 v18, 0x0 ++ ++ aget v17, v17, v18 ++ ++ move/from16 v0, v17 ++ ++ move-object/from16 v1, p0 ++ ++ iput v0, v1, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPreferredNetworkType:I ++ ++ :goto_2bd ++ const/16 v17, 0x14 ++ ++ iget-object v0, v3, Landroid/os/AsyncResult;->userObj:Ljava/lang/Object; ++ ++ move-object/from16 v18, v0 ++ ++ move-object/from16 v0, p0 ++ ++ move/from16 v1, v17 ++ ++ move-object/from16 v2, v18 ++ ++ invoke-virtual {v0, v1, v2}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message; ++ ++ move-result-object v8 ++ ++ const/4 v15, 0x7 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mCi:Lcom/android/internal/telephony/CommandsInterface; ++ ++ move-object/from16 v17, v0 ++ ++ move-object/from16 v0, v17 ++ ++ invoke-interface {v0, v15, v8}, Lcom/android/internal/telephony/CommandsInterface;->setPreferredNetworkType(ILandroid/os/Message;)V ++ ++ goto/16 :goto_40 ++ ++ :cond_2db ++ const/16 v17, 0x7 ++ ++ move/from16 v0, v17 ++ ++ move-object/from16 v1, p0 ++ ++ iput v0, v1, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPreferredNetworkType:I ++ ++ goto :goto_2bd ++ ++ :pswitch_2e4 ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mSS:Landroid/telephony/ServiceState; ++ ++ move-object/from16 v17, v0 ++ ++ if-eqz v17, :cond_34a ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mSS:Landroid/telephony/ServiceState; ++ ++ move-object/from16 v17, v0 ++ ++ invoke-virtual/range {v17 .. v17}, Landroid/telephony/ServiceState;->getDataRegState()I ++ ++ move-result v17 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mSS:Landroid/telephony/ServiceState; ++ ++ move-object/from16 v18, v0 ++ ++ invoke-virtual/range {v18 .. v18}, Landroid/telephony/ServiceState;->getVoiceRegState()I ++ ++ move-result v18 ++ ++ move-object/from16 v0, p0 ++ ++ move/from16 v1, v17 ++ ++ move/from16 v2, v18 ++ ++ invoke-direct {v0, v1, v2}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->isGprsConsistent(II)Z ++ ++ move-result v17 ++ ++ if-nez v17, :cond_34a ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPhone:Lcom/android/internal/telephony/gsm/GSMPhone; ++ ++ move-object/from16 v17, v0 ++ ++ invoke-virtual/range {v17 .. v17}, Lcom/android/internal/telephony/gsm/GSMPhone;->getCellLocation()Landroid/telephony/CellLocation; ++ ++ move-result-object v7 ++ ++ check-cast v7, Landroid/telephony/gsm/GsmCellLocation; ++ ++ const v18, 0xc3bb ++ ++ const/16 v17, 0x2 ++ ++ move/from16 v0, v17 ++ ++ new-array v0, v0, [Ljava/lang/Object; ++ ++ move-object/from16 v19, v0 ++ ++ const/16 v17, 0x0 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mSS:Landroid/telephony/ServiceState; ++ ++ move-object/from16 v20, v0 ++ ++ invoke-virtual/range {v20 .. v20}, Landroid/telephony/ServiceState;->getOperatorNumeric()Ljava/lang/String; ++ ++ move-result-object v20 ++ ++ aput-object v20, v19, v17 ++ ++ const/16 v20, 0x1 ++ ++ if-eqz v7, :cond_354 ++ ++ invoke-virtual {v7}, Landroid/telephony/gsm/GsmCellLocation;->getCid()I ++ ++ move-result v17 ++ ++ :goto_339 ++ invoke-static/range {v17 .. v17}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; ++ ++ move-result-object v17 ++ ++ aput-object v17, v19, v20 ++ ++ invoke-static/range {v18 .. v19}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I ++ ++ const/16 v17, 0x1 ++ ++ move/from16 v0, v17 ++ ++ move-object/from16 v1, p0 ++ ++ iput-boolean v0, v1, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mReportedGprsNoReg:Z ++ ++ :cond_34a ++ const/16 v17, 0x0 ++ ++ move/from16 v0, v17 ++ ++ move-object/from16 v1, p0 ++ ++ iput-boolean v0, v1, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mStartedGprsRegCheck:Z ++ ++ goto/16 :goto_40 ++ ++ :cond_354 ++ const/16 v17, -0x1 ++ ++ goto :goto_339 ++ ++ :pswitch_357 ++ const-string v17, "EVENT_RESTRICTED_STATE_CHANGED" ++ ++ move-object/from16 v0, p0 ++ ++ move-object/from16 v1, v17 ++ ++ invoke-virtual {v0, v1}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->log(Ljava/lang/String;)V ++ ++ move-object/from16 v0, p1 ++ ++ iget-object v3, v0, Landroid/os/Message;->obj:Ljava/lang/Object; ++ ++ check-cast v3, Landroid/os/AsyncResult; ++ ++ move-object/from16 v0, p0 ++ ++ invoke-direct {v0, v3}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->onRestrictedStateChanged(Landroid/os/AsyncResult;)V ++ ++ goto/16 :goto_40 ++ ++ nop ++ ++ :pswitch_data_36e ++ .packed-switch 0x1 ++ :pswitch_80 ++ :pswitch_87 ++ :pswitch_8b ++ :pswitch_1af ++ :pswitch_1af ++ :pswitch_1af ++ :pswitch_4a ++ :pswitch_4a ++ :pswitch_4a ++ :pswitch_1c4 ++ :pswitch_1d9 ++ :pswitch_206 ++ :pswitch_40 ++ :pswitch_1af ++ :pswitch_ae ++ :pswitch_21f ++ :pswitch_4e ++ :pswitch_224 ++ :pswitch_29f ++ :pswitch_249 ++ :pswitch_274 ++ :pswitch_2e4 ++ :pswitch_357 ++ .end packed-switch ++.end method ++ ++.method protected handlePollStateResult(ILandroid/os/AsyncResult;)V ++ .registers 26 ++ ++ move-object/from16 v0, p2 ++ ++ iget-object v0, v0, Landroid/os/AsyncResult;->userObj:Ljava/lang/Object; ++ ++ move-object/from16 v19, v0 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPollingContext:[I ++ ++ move-object/from16 v20, v0 ++ ++ move-object/from16 v0, v19 ++ ++ move-object/from16 v1, v20 ++ ++ if-eq v0, v1, :cond_13 ++ ++ :cond_12 ++ :goto_12 ++ return-void ++ ++ :cond_13 + move-object/from16 v0, p2 + + iget-object v0, v0, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable; + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + +- if-eqz v17, :cond_e7 ++ if-eqz v19, :cond_e7 + + const/4 v5, 0x0 + +@@ -6647,34 +6922,34 @@ + + iget-object v0, v0, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable; + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + +- move-object/from16 v0, v17 ++ move-object/from16 v0, v19 + + instance-of v0, v0, Lcom/android/internal/telephony/CommandException; + +- move/from16 v17, v0 ++ move/from16 v19, v0 + +- if-eqz v17, :cond_38 ++ if-eqz v19, :cond_38 + + move-object/from16 v0, p2 + + iget-object v0, v0, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable; + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + +- check-cast v17, Lcom/android/internal/telephony/CommandException; ++ check-cast v19, Lcom/android/internal/telephony/CommandException; + +- check-cast v17, Lcom/android/internal/telephony/CommandException; ++ check-cast v19, Lcom/android/internal/telephony/CommandException; + +- invoke-virtual/range {v17 .. v17}, Lcom/android/internal/telephony/CommandException;->getCommandError()Lcom/android/internal/telephony/CommandException$Error; ++ invoke-virtual/range {v19 .. v19}, Lcom/android/internal/telephony/CommandException;->getCommandError()Lcom/android/internal/telephony/CommandException$Error; + + move-result-object v5 + + :cond_38 +- sget-object v17, Lcom/android/internal/telephony/CommandException$Error;->RADIO_NOT_AVAILABLE:Lcom/android/internal/telephony/CommandException$Error; ++ sget-object v19, Lcom/android/internal/telephony/CommandException$Error;->RADIO_NOT_AVAILABLE:Lcom/android/internal/telephony/CommandException$Error; + +- move-object/from16 v0, v17 ++ move-object/from16 v0, v19 + + if-ne v5, v0, :cond_42 + +@@ -6687,56 +6962,56 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mCi:Lcom/android/internal/telephony/CommandsInterface; + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + +- invoke-interface/range {v17 .. v17}, Lcom/android/internal/telephony/CommandsInterface;->getRadioState()Lcom/android/internal/telephony/CommandsInterface$RadioState; ++ invoke-interface/range {v19 .. v19}, Lcom/android/internal/telephony/CommandsInterface;->getRadioState()Lcom/android/internal/telephony/CommandsInterface$RadioState; + +- move-result-object v17 ++ move-result-object v19 + +- invoke-virtual/range {v17 .. v17}, Lcom/android/internal/telephony/CommandsInterface$RadioState;->isOn()Z ++ invoke-virtual/range {v19 .. v19}, Lcom/android/internal/telephony/CommandsInterface$RadioState;->isOn()Z + +- move-result v17 ++ move-result v19 + +- if-nez v17, :cond_56 ++ if-nez v19, :cond_56 + + invoke-virtual/range {p0 .. p0}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->cancelPollState()V + + goto :goto_12 + + :cond_56 +- sget-object v17, Lcom/android/internal/telephony/CommandException$Error;->OP_NOT_ALLOWED_BEFORE_REG_NW:Lcom/android/internal/telephony/CommandException$Error; ++ sget-object v19, Lcom/android/internal/telephony/CommandException$Error;->OP_NOT_ALLOWED_BEFORE_REG_NW:Lcom/android/internal/telephony/CommandException$Error; + +- move-object/from16 v0, v17 ++ move-object/from16 v0, v19 + + if-eq v5, v0, :cond_7c + +- new-instance v17, Ljava/lang/StringBuilder; ++ new-instance v19, Ljava/lang/StringBuilder; + +- invoke-direct/range {v17 .. v17}, Ljava/lang/StringBuilder;->()V ++ invoke-direct/range {v19 .. v19}, Ljava/lang/StringBuilder;->()V + +- const-string v18, "RIL implementation has returned an error where it must succeed" ++ const-string v20, "RIL implementation has returned an error where it must succeed" + +- invoke-virtual/range {v17 .. v18}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v19 .. v20}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v17 ++ move-result-object v19 + + move-object/from16 v0, p2 + + iget-object v0, v0, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable; + +- move-object/from16 v18, v0 ++ move-object/from16 v20, v0 + +- invoke-virtual/range {v17 .. v18}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v19 .. v20}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; + +- move-result-object v17 ++ move-result-object v19 + +- invoke-virtual/range {v17 .. v17}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual/range {v19 .. v19}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v17 ++ move-result-object v19 + + move-object/from16 v0, p0 + +- move-object/from16 v1, v17 ++ move-object/from16 v1, v19 + + invoke-virtual {v0, v1}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->loge(Ljava/lang/String;)V + +@@ -6746,43 +7021,43 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPollingContext:[I + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + +- const/16 v18, 0x0 ++ const/16 v20, 0x0 + +- aget v19, v17, v18 ++ aget v21, v19, v20 + +- add-int/lit8 v19, v19, -0x1 ++ add-int/lit8 v21, v21, -0x1 + +- aput v19, v17, v18 ++ aput v21, v19, v20 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPollingContext:[I + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + +- const/16 v18, 0x0 ++ const/16 v20, 0x0 + +- aget v17, v17, v18 ++ aget v19, v19, v20 + +- if-nez v17, :cond_12 ++ if-nez v19, :cond_12 + + move-object/from16 v0, p0 + + iget-boolean v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mGsmRoaming:Z + +- move/from16 v17, v0 ++ move/from16 v19, v0 + +- if-nez v17, :cond_a6 ++ if-nez v19, :cond_a6 + + move-object/from16 v0, p0 + + iget-boolean v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mDataRoaming:Z + +- move/from16 v17, v0 ++ move/from16 v19, v0 + +- if-eqz v17, :cond_3a3 ++ if-eqz v19, :cond_452 + + :cond_a6 + const/4 v14, 0x1 +@@ -6792,33 +7067,33 @@ + + iget-boolean v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mGsmRoaming:Z + +- move/from16 v17, v0 ++ move/from16 v19, v0 + +- if-eqz v17, :cond_c8 ++ if-eqz v19, :cond_c8 + + move-object/from16 v0, p0 + + iget-boolean v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mGsmRoaming:Z + +- move/from16 v17, v0 ++ move/from16 v19, v0 + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v18, v0 ++ move-object/from16 v20, v0 + + move-object/from16 v0, p0 + +- move/from16 v1, v17 ++ move/from16 v1, v19 + +- move-object/from16 v2, v18 ++ move-object/from16 v2, v20 + + invoke-direct {v0, v1, v2}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->isRoamingBetweenOperators(ZLandroid/telephony/ServiceState;)Z + +- move-result v17 ++ move-result v19 + +- if-nez v17, :cond_c8 ++ if-nez v19, :cond_c8 + + const/4 v14, 0x0 + +@@ -6827,9 +7102,9 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + +- move-object/from16 v0, v17 ++ move-object/from16 v0, v19 + + invoke-virtual {v0, v14}, Landroid/telephony/ServiceState;->setRoaming(Z)V + +@@ -6837,46 +7112,68 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + + move-object/from16 v0, p0 + + iget-boolean v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mEmergencyOnly:Z + +- move/from16 v18, v0 ++ move/from16 v20, v0 + +- invoke-virtual/range {v17 .. v18}, Landroid/telephony/ServiceState;->setEmergencyOnly(Z)V ++ invoke-virtual/range {v19 .. v20}, Landroid/telephony/ServiceState;->setEmergencyOnly(Z)V + + invoke-direct/range {p0 .. p0}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->pollStateDone()V + + goto/16 :goto_12 + + :cond_e7 +- sparse-switch p1, :sswitch_data_3a6 ++ :try_start_e7 ++ move-object/from16 v0, p0 + +- goto :goto_7c ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; + +- :sswitch_eb +- :try_start_eb ++ move-object/from16 v19, v0 ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mContext:Landroid/content/Context; ++ ++ move-object/from16 v20, v0 ++ ++ invoke-virtual/range {v20 .. v20}, Landroid/content/Context;->getPackageName()Ljava/lang/String; ++ ++ move-result-object v20 ++ ++ const/16 v21, 0x0 ++ ++ invoke-virtual/range {v19 .. v21}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v15 ++ ++ sparse-switch p1, :sswitch_data_456 ++ ++ goto/16 :goto_7c ++ ++ :sswitch_102 + move-object/from16 v0, p2 + + iget-object v0, v0, Landroid/os/AsyncResult;->result:Ljava/lang/Object; + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + +- check-cast v17, [Ljava/lang/String; ++ check-cast v19, [Ljava/lang/String; + +- move-object/from16 v0, v17 ++ move-object/from16 v0, v19 + + check-cast v0, [Ljava/lang/String; + +- move-object v15, v0 ++ move-object/from16 v16, v0 + + const/4 v9, -0x1 + + const/4 v3, -0x1 + +- const/16 v16, 0x0 ++ const/16 v17, 0x0 + + const/4 v13, 0x4 + +@@ -6884,167 +7181,175 @@ + + const/4 v11, -0x1 + +- array-length v0, v15 ++ move-object/from16 v0, v16 + +- move/from16 v17, v0 +- :try_end_102 +- .catch Ljava/lang/RuntimeException; {:try_start_eb .. :try_end_102} :catch_200 ++ array-length v0, v0 + +- if-lez v17, :cond_189 ++ move/from16 v19, v0 ++ :try_end_11c ++ .catch Ljava/lang/RuntimeException; {:try_start_e7 .. :try_end_11c} :catch_234 + +- const/16 v17, 0x0 ++ if-lez v19, :cond_1a9 + +- :try_start_106 +- aget-object v17, v15, v17 ++ const/16 v19, 0x0 ++ ++ :try_start_120 ++ aget-object v19, v16, v19 + +- invoke-static/range {v17 .. v17}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I ++ invoke-static/range {v19 .. v19}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + + move-result v13 + +- array-length v0, v15 ++ move-object/from16 v0, v16 + +- move/from16 v17, v0 ++ array-length v0, v0 + +- const/16 v18, 0x3 ++ move/from16 v19, v0 + +- move/from16 v0, v17 ++ const/16 v20, 0x3 + +- move/from16 v1, v18 ++ move/from16 v0, v19 + +- if-lt v0, v1, :cond_164 ++ move/from16 v1, v20 + +- const/16 v17, 0x1 ++ if-lt v0, v1, :cond_182 + +- aget-object v17, v15, v17 ++ const/16 v19, 0x1 + +- if-eqz v17, :cond_131 ++ aget-object v19, v16, v19 + +- const/16 v17, 0x1 ++ if-eqz v19, :cond_14d + +- aget-object v17, v15, v17 ++ const/16 v19, 0x1 + +- invoke-virtual/range {v17 .. v17}, Ljava/lang/String;->length()I ++ aget-object v19, v16, v19 + +- move-result v17 ++ invoke-virtual/range {v19 .. v19}, Ljava/lang/String;->length()I + +- if-lez v17, :cond_131 ++ move-result v19 + +- const/16 v17, 0x1 ++ if-lez v19, :cond_14d + +- aget-object v17, v15, v17 ++ const/16 v19, 0x1 + +- const/16 v18, 0x10 ++ aget-object v19, v16, v19 + +- invoke-static/range {v17 .. v18}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;I)I ++ const/16 v20, 0x10 ++ ++ invoke-static/range {v19 .. v20}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;I)I + + move-result v9 + +- :cond_131 +- const/16 v17, 0x2 ++ :cond_14d ++ const/16 v19, 0x2 + +- aget-object v17, v15, v17 ++ aget-object v19, v16, v19 + +- if-eqz v17, :cond_14b ++ if-eqz v19, :cond_167 + +- const/16 v17, 0x2 ++ const/16 v19, 0x2 + +- aget-object v17, v15, v17 ++ aget-object v19, v16, v19 + +- invoke-virtual/range {v17 .. v17}, Ljava/lang/String;->length()I ++ invoke-virtual/range {v19 .. v19}, Ljava/lang/String;->length()I + +- move-result v17 ++ move-result v19 + +- if-lez v17, :cond_14b ++ if-lez v19, :cond_167 + +- const/16 v17, 0x2 ++ const/16 v19, 0x2 + +- aget-object v17, v15, v17 ++ aget-object v19, v16, v19 + +- const/16 v18, 0x10 ++ const/16 v20, 0x10 + +- invoke-static/range {v17 .. v18}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;I)I ++ invoke-static/range {v19 .. v20}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;I)I + + move-result v3 + +- :cond_14b +- array-length v0, v15 ++ :cond_167 ++ move-object/from16 v0, v16 + +- move/from16 v17, v0 ++ array-length v0, v0 + +- const/16 v18, 0x4 ++ move/from16 v19, v0 + +- move/from16 v0, v17 ++ const/16 v20, 0x4 + +- move/from16 v1, v18 ++ move/from16 v0, v19 + +- if-lt v0, v1, :cond_164 ++ move/from16 v1, v20 + +- const/16 v17, 0x3 ++ if-lt v0, v1, :cond_182 + +- aget-object v17, v15, v17 ++ const/16 v19, 0x3 + +- if-eqz v17, :cond_164 ++ aget-object v19, v16, v19 + +- const/16 v17, 0x3 ++ if-eqz v19, :cond_182 + +- aget-object v17, v15, v17 ++ const/16 v19, 0x3 + +- invoke-static/range {v17 .. v17}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I ++ aget-object v19, v16, v19 + +- move-result v16 ++ invoke-static/range {v19 .. v19}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + +- :cond_164 +- array-length v0, v15 ++ move-result v17 + +- move/from16 v17, v0 ++ :cond_182 ++ move-object/from16 v0, v16 + +- const/16 v18, 0xe ++ array-length v0, v0 + +- move/from16 v0, v17 ++ move/from16 v19, v0 + +- move/from16 v1, v18 ++ const/16 v20, 0xe + +- if-le v0, v1, :cond_189 ++ move/from16 v0, v19 + +- const/16 v17, 0xe ++ move/from16 v1, v20 + +- aget-object v17, v15, v17 ++ if-le v0, v1, :cond_1a9 + +- if-eqz v17, :cond_189 ++ const/16 v19, 0xe + +- const/16 v17, 0xe ++ aget-object v19, v16, v19 + +- aget-object v17, v15, v17 ++ if-eqz v19, :cond_1a9 + +- invoke-virtual/range {v17 .. v17}, Ljava/lang/String;->length()I ++ const/16 v19, 0xe + +- move-result v17 ++ aget-object v19, v16, v19 + +- if-lez v17, :cond_189 ++ invoke-virtual/range {v19 .. v19}, Ljava/lang/String;->length()I + +- const/16 v17, 0xe ++ move-result v19 + +- aget-object v17, v15, v17 ++ if-lez v19, :cond_1a9 + +- const/16 v18, 0x10 ++ const/16 v19, 0xe + +- invoke-static/range {v17 .. v18}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;I)I +- :try_end_188 +- .catch Ljava/lang/NumberFormatException; {:try_start_106 .. :try_end_188} :catch_21f +- .catch Ljava/lang/RuntimeException; {:try_start_106 .. :try_end_188} :catch_200 ++ aget-object v19, v16, v19 ++ ++ const/16 v20, 0x10 ++ ++ invoke-static/range {v19 .. v20}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;I)I ++ :try_end_1a8 ++ .catch Ljava/lang/NumberFormatException; {:try_start_120 .. :try_end_1a8} :catch_253 ++ .catch Ljava/lang/RuntimeException; {:try_start_120 .. :try_end_1a8} :catch_234 + + move-result v11 + +- :cond_189 +- :goto_189 +- :try_start_189 ++ :cond_1a9 ++ :goto_1a9 ++ :try_start_1a9 + move-object/from16 v0, p0 + + invoke-direct {v0, v13}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->regCodeIsRoaming(I)Z + +- move-result v17 ++ move-result v19 + +- move/from16 v0, v17 ++ move/from16 v0, v19 + + move-object/from16 v1, p0 + +@@ -7054,25 +7359,25 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + + move-object/from16 v0, p0 + + invoke-direct {v0, v13}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->regCodeToServiceState(I)I + +- move-result v18 ++ move-result v20 + +- invoke-virtual/range {v17 .. v18}, Landroid/telephony/ServiceState;->setState(I)V ++ invoke-virtual/range {v19 .. v20}, Landroid/telephony/ServiceState;->setState(I)V + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + +- move-object/from16 v0, v17 ++ move-object/from16 v0, v19 + +- move/from16 v1, v16 ++ move/from16 v1, v17 + + invoke-virtual {v0, v1}, Landroid/telephony/ServiceState;->setRilVoiceRadioTechnology(I)V + +@@ -7080,300 +7385,406 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mPhoneBase:Lcom/android/internal/telephony/PhoneBase; + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + +- invoke-virtual/range {v17 .. v17}, Lcom/android/internal/telephony/PhoneBase;->getContext()Landroid/content/Context; ++ invoke-virtual/range {v19 .. v19}, Lcom/android/internal/telephony/PhoneBase;->getContext()Landroid/content/Context; + +- move-result-object v17 ++ move-result-object v19 + +- invoke-virtual/range {v17 .. v17}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; ++ invoke-virtual/range {v19 .. v19}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; + +- move-result-object v17 ++ move-result-object v19 + +- const v18, 0x1110034 ++ const v20, 0x1110034 + +- invoke-virtual/range {v17 .. v18}, Landroid/content/res/Resources;->getBoolean(I)Z ++ invoke-virtual/range {v19 .. v20}, Landroid/content/res/Resources;->getBoolean(I)Z + + move-result v8 + +- const/16 v17, 0xd ++ const/16 v19, 0xd + +- move/from16 v0, v17 ++ move/from16 v0, v19 + +- if-eq v13, v0, :cond_1de ++ if-eq v13, v0, :cond_1fe + +- const/16 v17, 0xa ++ const/16 v19, 0xa + +- move/from16 v0, v17 ++ move/from16 v0, v19 + +- if-eq v13, v0, :cond_1de ++ if-eq v13, v0, :cond_1fe + +- const/16 v17, 0xc ++ const/16 v19, 0xc + +- move/from16 v0, v17 ++ move/from16 v0, v19 + +- if-eq v13, v0, :cond_1de ++ if-eq v13, v0, :cond_1fe + +- const/16 v17, 0xe ++ const/16 v19, 0xe + +- move/from16 v0, v17 ++ move/from16 v0, v19 + +- if-ne v13, v0, :cond_23e ++ if-ne v13, v0, :cond_272 + +- :cond_1de +- if-eqz v8, :cond_23e ++ :cond_1fe ++ if-eqz v8, :cond_272 + +- const/16 v17, 0x1 ++ const/16 v19, 0x1 + +- move/from16 v0, v17 ++ move/from16 v0, v19 + + move-object/from16 v1, p0 + + iput-boolean v0, v1, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mEmergencyOnly:Z + +- :goto_1e8 ++ :goto_208 + move-object/from16 v0, p0 + +- iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewCellLoc:Landroid/telephony/gsm/GsmCellLocation; ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + +- move-object/from16 v0, v17 ++ if-eqz v19, :cond_27b + +- invoke-virtual {v0, v9, v3}, Landroid/telephony/gsm/GsmCellLocation;->setLacAndCid(II)V ++ if-eqz v15, :cond_27b ++ ++ invoke-virtual {v15}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v19 ++ ++ const/16 v20, 0x1 ++ ++ move/from16 v0, v19 ++ ++ move/from16 v1, v20 ++ ++ if-ne v0, v1, :cond_27b + + move-object/from16 v0, p0 + + iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewCellLoc:Landroid/telephony/gsm/GsmCellLocation; + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + +- move-object/from16 v0, v17 ++ invoke-virtual/range {v19 .. v19}, Landroid/telephony/gsm/GsmCellLocation;->setStateInvalid()V ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewCellLoc:Landroid/telephony/gsm/GsmCellLocation; ++ ++ move-object/from16 v19, v0 ++ ++ move-object/from16 v0, v19 + + invoke-virtual {v0, v11}, Landroid/telephony/gsm/GsmCellLocation;->setPsc(I)V +- :try_end_1fe +- .catch Ljava/lang/RuntimeException; {:try_start_189 .. :try_end_1fe} :catch_200 ++ :try_end_232 ++ .catch Ljava/lang/RuntimeException; {:try_start_1a9 .. :try_end_232} :catch_234 + + goto/16 :goto_7c + +- :catch_200 ++ :catch_234 + move-exception v6 + +- new-instance v17, Ljava/lang/StringBuilder; ++ new-instance v19, Ljava/lang/StringBuilder; + +- invoke-direct/range {v17 .. v17}, Ljava/lang/StringBuilder;->()V ++ invoke-direct/range {v19 .. v19}, Ljava/lang/StringBuilder;->()V + +- const-string v18, "Exception while polling service state. Probably malformed RIL response." ++ const-string v20, "Exception while polling service state. Probably malformed RIL response." + +- invoke-virtual/range {v17 .. v18}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v19 .. v20}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v17 ++ move-result-object v19 + +- move-object/from16 v0, v17 ++ move-object/from16 v0, v19 + + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; + +- move-result-object v17 ++ move-result-object v19 + +- invoke-virtual/range {v17 .. v17}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual/range {v19 .. v19}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v17 ++ move-result-object v19 + + move-object/from16 v0, p0 + +- move-object/from16 v1, v17 ++ move-object/from16 v1, v19 + + invoke-virtual {v0, v1}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->loge(Ljava/lang/String;)V + + goto/16 :goto_7c + +- :catch_21f ++ :catch_253 + move-exception v6 + +- :try_start_220 +- new-instance v17, Ljava/lang/StringBuilder; ++ :try_start_254 ++ new-instance v19, Ljava/lang/StringBuilder; + +- invoke-direct/range {v17 .. v17}, Ljava/lang/StringBuilder;->()V ++ invoke-direct/range {v19 .. v19}, Ljava/lang/StringBuilder;->()V + +- const-string v18, "error parsing RegistrationState: " ++ const-string v20, "error parsing RegistrationState: " + +- invoke-virtual/range {v17 .. v18}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v19 .. v20}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v17 ++ move-result-object v19 + +- move-object/from16 v0, v17 ++ move-object/from16 v0, v19 + + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; + +- move-result-object v17 ++ move-result-object v19 + +- invoke-virtual/range {v17 .. v17}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual/range {v19 .. v19}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v17 ++ move-result-object v19 + + move-object/from16 v0, p0 + +- move-object/from16 v1, v17 ++ move-object/from16 v1, v19 + + invoke-virtual {v0, v1}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->loge(Ljava/lang/String;)V + +- goto/16 :goto_189 ++ goto/16 :goto_1a9 + +- :cond_23e +- const/16 v17, 0x0 ++ :cond_272 ++ const/16 v19, 0x0 + +- move/from16 v0, v17 ++ move/from16 v0, v19 + + move-object/from16 v1, p0 + + iput-boolean v0, v1, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mEmergencyOnly:Z + +- goto :goto_1e8 ++ goto :goto_208 ++ ++ :cond_27b ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ move-object/from16 v19, v0 ++ ++ if-eqz v19, :cond_2b4 ++ ++ if-eqz v15, :cond_2b4 ++ ++ invoke-virtual {v15}, Landroid/privacy/PrivacySettings;->getLocationNetworkSetting()B ++ ++ move-result v19 ++ ++ const/16 v20, 0x3 ++ ++ move/from16 v0, v19 ++ ++ move/from16 v1, v20 ++ ++ if-ne v0, v1, :cond_2b4 ++ ++ new-instance v18, Ljava/util/Random; ++ ++ invoke-direct/range {v18 .. v18}, Ljava/util/Random;->()V ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewCellLoc:Landroid/telephony/gsm/GsmCellLocation; ++ ++ move-object/from16 v19, v0 ++ ++ invoke-virtual/range {v18 .. v18}, Ljava/util/Random;->nextInt()I ++ ++ move-result v20 ++ ++ invoke-virtual/range {v18 .. v18}, Ljava/util/Random;->nextInt()I ++ ++ move-result v21 ++ ++ invoke-virtual/range {v19 .. v21}, Landroid/telephony/gsm/GsmCellLocation;->setLacAndCid(II)V ++ ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewCellLoc:Landroid/telephony/gsm/GsmCellLocation; ++ ++ move-object/from16 v19, v0 ++ ++ move-object/from16 v0, v19 ++ ++ invoke-virtual {v0, v11}, Landroid/telephony/gsm/GsmCellLocation;->setPsc(I)V ++ ++ goto/16 :goto_7c ++ ++ :cond_2b4 ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewCellLoc:Landroid/telephony/gsm/GsmCellLocation; ++ ++ move-object/from16 v19, v0 ++ ++ move-object/from16 v0, v19 ++ ++ invoke-virtual {v0, v9, v3}, Landroid/telephony/gsm/GsmCellLocation;->setLacAndCid(II)V ++ ++ move-object/from16 v0, p0 + +- :sswitch_247 ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewCellLoc:Landroid/telephony/gsm/GsmCellLocation; ++ ++ move-object/from16 v19, v0 ++ ++ move-object/from16 v0, v19 ++ ++ invoke-virtual {v0, v11}, Landroid/telephony/gsm/GsmCellLocation;->setPsc(I)V ++ ++ goto/16 :goto_7c ++ ++ :sswitch_2cc + move-object/from16 v0, p2 + + iget-object v0, v0, Landroid/os/AsyncResult;->result:Ljava/lang/Object; + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + +- check-cast v17, [Ljava/lang/String; ++ check-cast v19, [Ljava/lang/String; + +- move-object/from16 v0, v17 ++ move-object/from16 v0, v19 + + check-cast v0, [Ljava/lang/String; + +- move-object v15, v0 ++ move-object/from16 v16, v0 + +- const/16 v16, 0x0 ++ const/16 v17, 0x0 + + const/4 v13, 0x4 + +- const/16 v17, -0x1 ++ const/16 v19, -0x1 + +- move/from16 v0, v17 ++ move/from16 v0, v19 + + move-object/from16 v1, p0 + + iput v0, v1, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewReasonDataDenied:I + +- const/16 v17, 0x1 ++ const/16 v19, 0x1 + +- move/from16 v0, v17 ++ move/from16 v0, v19 + + move-object/from16 v1, p0 + + iput v0, v1, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewMaxDataCalls:I + +- array-length v0, v15 ++ move-object/from16 v0, v16 ++ ++ array-length v0, v0 + +- move/from16 v17, v0 +- :try_end_26a +- .catch Ljava/lang/RuntimeException; {:try_start_220 .. :try_end_26a} :catch_200 ++ move/from16 v19, v0 ++ :try_end_2f2 ++ .catch Ljava/lang/RuntimeException; {:try_start_254 .. :try_end_2f2} :catch_234 + +- if-lez v17, :cond_2c5 ++ if-lez v19, :cond_353 + +- const/16 v17, 0x0 ++ const/16 v19, 0x0 + +- :try_start_26e +- aget-object v17, v15, v17 ++ :try_start_2f6 ++ aget-object v19, v16, v19 + +- invoke-static/range {v17 .. v17}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I ++ invoke-static/range {v19 .. v19}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + + move-result v13 + +- array-length v0, v15 ++ move-object/from16 v0, v16 + +- move/from16 v17, v0 ++ array-length v0, v0 + +- const/16 v18, 0x4 ++ move/from16 v19, v0 + +- move/from16 v0, v17 ++ const/16 v20, 0x4 + +- move/from16 v1, v18 ++ move/from16 v0, v19 + +- if-lt v0, v1, :cond_28d ++ move/from16 v1, v20 + +- const/16 v17, 0x3 ++ if-lt v0, v1, :cond_317 + +- aget-object v17, v15, v17 ++ const/16 v19, 0x3 + +- if-eqz v17, :cond_28d ++ aget-object v19, v16, v19 + +- const/16 v17, 0x3 ++ if-eqz v19, :cond_317 + +- aget-object v17, v15, v17 ++ const/16 v19, 0x3 + +- invoke-static/range {v17 .. v17}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I ++ aget-object v19, v16, v19 + +- move-result v16 ++ invoke-static/range {v19 .. v19}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + +- :cond_28d +- array-length v0, v15 ++ move-result v17 + +- move/from16 v17, v0 ++ :cond_317 ++ move-object/from16 v0, v16 + +- const/16 v18, 0x5 ++ array-length v0, v0 + +- move/from16 v0, v17 ++ move/from16 v19, v0 + +- move/from16 v1, v18 ++ const/16 v20, 0x5 + +- if-lt v0, v1, :cond_2ac ++ move/from16 v0, v19 + +- const/16 v17, 0x3 ++ move/from16 v1, v20 + +- move/from16 v0, v17 ++ if-lt v0, v1, :cond_338 + +- if-ne v13, v0, :cond_2ac ++ const/16 v19, 0x3 + +- const/16 v17, 0x4 ++ move/from16 v0, v19 + +- aget-object v17, v15, v17 ++ if-ne v13, v0, :cond_338 + +- invoke-static/range {v17 .. v17}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I ++ const/16 v19, 0x4 + +- move-result v17 ++ aget-object v19, v16, v19 + +- move/from16 v0, v17 ++ invoke-static/range {v19 .. v19}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I ++ ++ move-result v19 ++ ++ move/from16 v0, v19 + + move-object/from16 v1, p0 + + iput v0, v1, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewReasonDataDenied:I + +- :cond_2ac +- array-length v0, v15 ++ :cond_338 ++ move-object/from16 v0, v16 + +- move/from16 v17, v0 ++ array-length v0, v0 + +- const/16 v18, 0x6 ++ move/from16 v19, v0 + +- move/from16 v0, v17 ++ const/16 v20, 0x6 + +- move/from16 v1, v18 ++ move/from16 v0, v19 + +- if-lt v0, v1, :cond_2c5 ++ move/from16 v1, v20 + +- const/16 v17, 0x5 ++ if-lt v0, v1, :cond_353 + +- aget-object v17, v15, v17 ++ const/16 v19, 0x5 + +- invoke-static/range {v17 .. v17}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I ++ aget-object v19, v16, v19 + +- move-result v17 ++ invoke-static/range {v19 .. v19}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I + +- move/from16 v0, v17 ++ move-result v19 ++ ++ move/from16 v0, v19 + + move-object/from16 v1, p0 + + iput v0, v1, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewMaxDataCalls:I +- :try_end_2c5 +- .catch Ljava/lang/NumberFormatException; {:try_start_26e .. :try_end_2c5} :catch_327 +- .catch Ljava/lang/RuntimeException; {:try_start_26e .. :try_end_2c5} :catch_200 +- +- :cond_2c5 +- :goto_2c5 +- :try_start_2c5 ++ :try_end_353 ++ .catch Ljava/lang/NumberFormatException; {:try_start_2f6 .. :try_end_353} :catch_3b5 ++ .catch Ljava/lang/RuntimeException; {:try_start_2f6 .. :try_end_353} :catch_234 ++ ++ :cond_353 ++ :goto_353 ++ :try_start_353 + move-object/from16 v0, p0 + + invoke-direct {v0, v13}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->regCodeToServiceState(I)I +@@ -7384,9 +7795,9 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + +- move-object/from16 v0, v17 ++ move-object/from16 v0, v19 + + invoke-virtual {v0, v4}, Landroid/telephony/ServiceState;->setDataRegState(I)V + +@@ -7394,9 +7805,9 @@ + + invoke-direct {v0, v13}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->regCodeIsRoaming(I)Z + +- move-result v17 ++ move-result v19 + +- move/from16 v0, v17 ++ move/from16 v0, v19 + + move-object/from16 v1, p0 + +@@ -7406,109 +7817,109 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + +- move-object/from16 v0, v17 ++ move-object/from16 v0, v19 + +- move/from16 v1, v16 ++ move/from16 v1, v17 + + invoke-virtual {v0, v1}, Landroid/telephony/ServiceState;->setRilDataRadioTechnology(I)V + +- new-instance v17, Ljava/lang/StringBuilder; ++ new-instance v19, Ljava/lang/StringBuilder; + +- invoke-direct/range {v17 .. v17}, Ljava/lang/StringBuilder;->()V ++ invoke-direct/range {v19 .. v19}, Ljava/lang/StringBuilder;->()V + +- const-string v18, "handlPollStateResultMessage: GsmSST setDataRegState=" ++ const-string v20, "handlPollStateResultMessage: GsmSST setDataRegState=" + +- invoke-virtual/range {v17 .. v18}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v19 .. v20}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v17 ++ move-result-object v19 + +- move-object/from16 v0, v17 ++ move-object/from16 v0, v19 + + invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + +- move-result-object v17 ++ move-result-object v19 + +- const-string v18, " regState=" ++ const-string v20, " regState=" + +- invoke-virtual/range {v17 .. v18}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v19 .. v20}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v17 ++ move-result-object v19 + +- move-object/from16 v0, v17 ++ move-object/from16 v0, v19 + + invoke-virtual {v0, v13}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + +- move-result-object v17 ++ move-result-object v19 + +- const-string v18, " dataRadioTechnology=" ++ const-string v20, " dataRadioTechnology=" + +- invoke-virtual/range {v17 .. v18}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v19 .. v20}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v17 ++ move-result-object v19 + +- move-object/from16 v0, v17 ++ move-object/from16 v0, v19 + +- move/from16 v1, v16 ++ move/from16 v1, v17 + + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + +- move-result-object v17 ++ move-result-object v19 + +- invoke-virtual/range {v17 .. v17}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual/range {v19 .. v19}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v17 ++ move-result-object v19 + + move-object/from16 v0, p0 + +- move-object/from16 v1, v17 ++ move-object/from16 v1, v19 + + invoke-virtual {v0, v1}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->log(Ljava/lang/String;)V + + goto/16 :goto_7c + +- :catch_327 ++ :catch_3b5 + move-exception v6 + +- new-instance v17, Ljava/lang/StringBuilder; ++ new-instance v19, Ljava/lang/StringBuilder; + +- invoke-direct/range {v17 .. v17}, Ljava/lang/StringBuilder;->()V ++ invoke-direct/range {v19 .. v19}, Ljava/lang/StringBuilder;->()V + +- const-string v18, "error parsing GprsRegistrationState: " ++ const-string v20, "error parsing GprsRegistrationState: " + +- invoke-virtual/range {v17 .. v18}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ invoke-virtual/range {v19 .. v20}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + +- move-result-object v17 ++ move-result-object v19 + +- move-object/from16 v0, v17 ++ move-object/from16 v0, v19 + + invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; + +- move-result-object v17 ++ move-result-object v19 + +- invoke-virtual/range {v17 .. v17}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; ++ invoke-virtual/range {v19 .. v19}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + +- move-result-object v17 ++ move-result-object v19 + + move-object/from16 v0, p0 + +- move-object/from16 v1, v17 ++ move-object/from16 v1, v19 + + invoke-virtual {v0, v1}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->loge(Ljava/lang/String;)V + +- goto :goto_2c5 ++ goto :goto_353 + +- :sswitch_345 ++ :sswitch_3d3 + move-object/from16 v0, p2 + + iget-object v0, v0, Landroid/os/AsyncResult;->result:Ljava/lang/Object; + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + +- check-cast v17, [Ljava/lang/String; ++ check-cast v19, [Ljava/lang/String; + +- move-object/from16 v0, v17 ++ move-object/from16 v0, v19 + + check-cast v0, [Ljava/lang/String; + +@@ -7518,48 +7929,81 @@ + + array-length v0, v10 + +- move/from16 v17, v0 ++ move/from16 v19, v0 + +- const/16 v18, 0x3 ++ const/16 v20, 0x3 + +- move/from16 v0, v17 ++ move/from16 v0, v19 + +- move/from16 v1, v18 ++ move/from16 v1, v20 + + if-lt v0, v1, :cond_7c + + move-object/from16 v0, p0 + ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ move-object/from16 v19, v0 ++ ++ if-eqz v19, :cond_40e ++ ++ if-eqz v15, :cond_40e ++ ++ invoke-virtual {v15}, Landroid/privacy/PrivacySettings;->getNetworkInfoSetting()B ++ ++ move-result v19 ++ ++ if-eqz v19, :cond_40e ++ ++ move-object/from16 v0, p0 ++ + iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + +- const/16 v18, 0x0 ++ const-string v20, "" + +- aget-object v18, v10, v18 ++ const-string v21, "" + +- const/16 v19, 0x1 ++ const-string v22, "" + +- aget-object v19, v10, v19 ++ invoke-virtual/range {v19 .. v22}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + +- const/16 v20, 0x2 ++ goto/16 :goto_7c ++ ++ :cond_40e ++ move-object/from16 v0, p0 ++ ++ iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; ++ ++ move-object/from16 v19, v0 ++ ++ const/16 v20, 0x0 + + aget-object v20, v10, v20 + +- invoke-virtual/range {v17 .. v20}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V ++ const/16 v21, 0x1 ++ ++ aget-object v21, v10, v21 ++ ++ const/16 v22, 0x2 ++ ++ aget-object v22, v10, v22 ++ ++ invoke-virtual/range {v19 .. v22}, Landroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + + goto/16 :goto_7c + +- :sswitch_376 ++ :sswitch_425 + move-object/from16 v0, p2 + + iget-object v0, v0, Landroid/os/AsyncResult;->result:Ljava/lang/Object; + +- move-object/from16 v17, v0 ++ move-object/from16 v19, v0 + +- check-cast v17, [I ++ check-cast v19, [I + +- move-object/from16 v0, v17 ++ move-object/from16 v0, v19 + + check-cast v0, [I + +@@ -7569,49 +8013,51 @@ + + iget-object v0, v0, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->mNewSS:Landroid/telephony/ServiceState; + +- move-object/from16 v18, v0 ++ move-object/from16 v20, v0 + +- const/16 v17, 0x0 ++ const/16 v19, 0x0 + +- aget v17, v7, v17 ++ aget v19, v7, v19 + +- const/16 v19, 0x1 ++ const/16 v21, 0x1 + +- move/from16 v0, v17 ++ move/from16 v0, v19 + +- move/from16 v1, v19 ++ move/from16 v1, v21 + +- if-ne v0, v1, :cond_3a0 ++ if-ne v0, v1, :cond_44f + +- const/16 v17, 0x1 ++ const/16 v19, 0x1 + +- :goto_397 +- move-object/from16 v0, v18 ++ :goto_446 ++ move-object/from16 v0, v20 + +- move/from16 v1, v17 ++ move/from16 v1, v19 + + invoke-virtual {v0, v1}, Landroid/telephony/ServiceState;->setIsManualSelection(Z)V +- :try_end_39e +- .catch Ljava/lang/RuntimeException; {:try_start_2c5 .. :try_end_39e} :catch_200 ++ :try_end_44d ++ .catch Ljava/lang/RuntimeException; {:try_start_353 .. :try_end_44d} :catch_234 + + goto/16 :goto_7c + +- :cond_3a0 +- const/16 v17, 0x0 ++ :cond_44f ++ const/16 v19, 0x0 + +- goto :goto_397 ++ goto :goto_446 + +- :cond_3a3 ++ :cond_452 + const/4 v14, 0x0 + + goto/16 :goto_a7 + +- :sswitch_data_3a6 ++ nop ++ ++ :sswitch_data_456 + .sparse-switch +- 0x4 -> :sswitch_eb +- 0x5 -> :sswitch_247 +- 0x6 -> :sswitch_345 +- 0xe -> :sswitch_376 ++ 0x4 -> :sswitch_102 ++ 0x5 -> :sswitch_2cc ++ 0x6 -> :sswitch_3d3 ++ 0xe -> :sswitch_425 + .end sparse-switch + .end method + +diff -Npru stock-telephony-common/smali/com/android/internal/telephony/IccSmsInterfaceManager.smali pdroid-telephony-common/smali/com/android/internal/telephony/IccSmsInterfaceManager.smali +--- stock-telephony-common/smali/com/android/internal/telephony/IccSmsInterfaceManager.smali 2013-08-10 20:38:01.167214215 -0700 ++++ pdroid-telephony-common/smali/com/android/internal/telephony/IccSmsInterfaceManager.smali 2013-08-10 20:38:02.895214288 -0700 +@@ -4,6 +4,10 @@ + + + # static fields ++.field protected static final ACCESS_TYPE_ICC:I = 0x1 ++ ++.field protected static final ACCESS_TYPE_SMS_MMS:I = 0x0 ++ + .field static final DBG:Z = true + + .field private static final EVENT_LOAD_DONE:I = 0x1 +@@ -16,6 +20,8 @@ + + .field static final LOG_TAG:Ljava/lang/String; = "IccSmsInterfaceManager" + ++.field protected static final P_TAG:Ljava/lang/String; = "PrivacySMSInterfaceManager" ++ + + # instance fields + .field protected final mAppOps:Landroid/app/AppOpsManager; +@@ -43,6 +49,8 @@ + + .field protected mSuccess:Z + ++.field protected pSetMan:Landroid/privacy/PrivacySettingsManager; ++ + + # direct methods + .method protected constructor (Lcom/android/internal/telephony/PhoneBase;)V +@@ -235,6 +243,23 @@ + + invoke-virtual {p0, v3}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->log(Ljava/lang/String;)V + ++ invoke-virtual {p0}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ const/4 v4, 0x1 ++ ++ invoke-virtual {p0, v3, v4}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->isAllowed([Ljava/lang/String;I)Z ++ ++ move-result v3 ++ ++ if-nez v3, :cond_4b ++ ++ :cond_4a ++ :goto_4a ++ return v2 ++ ++ :cond_4b + const-string v3, "Copying message to Icc" + + invoke-virtual {p0, v3}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->enforceReceiveAndSend(Ljava/lang/String;)V +@@ -251,19 +276,15 @@ + + move-result v3 + +- if-eqz v3, :cond_53 +- +- :goto_52 +- return v2 ++ if-nez v3, :cond_4a + +- :cond_53 + iget-object v3, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mLock:Ljava/lang/Object; + + monitor-enter v3 + + const/4 v2, 0x0 + +- :try_start_57 ++ :try_start_62 + iput-boolean v2, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mSuccess:Z + + iget-object v2, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mHandler:Landroid/os/Handler; +@@ -275,43 +296,43 @@ + move-result-object v1 + + invoke-virtual {p0, p2, p4, p3, v1}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->writeSms(I[B[BLandroid/os/Message;)V +- :try_end_63 +- .catchall {:try_start_57 .. :try_end_63} :catchall_73 ++ :try_end_6e ++ .catchall {:try_start_62 .. :try_end_6e} :catchall_7e + +- :try_start_63 ++ :try_start_6e + iget-object v2, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mLock:Ljava/lang/Object; + + invoke-virtual {v2}, Ljava/lang/Object;->wait()V +- :try_end_68 +- .catchall {:try_start_63 .. :try_end_68} :catchall_73 +- .catch Ljava/lang/InterruptedException; {:try_start_63 .. :try_end_68} :catch_6c ++ :try_end_73 ++ .catchall {:try_start_6e .. :try_end_73} :catchall_7e ++ .catch Ljava/lang/InterruptedException; {:try_start_6e .. :try_end_73} :catch_77 + +- :goto_68 +- :try_start_68 ++ :goto_73 ++ :try_start_73 + monitor-exit v3 +- :try_end_69 +- .catchall {:try_start_68 .. :try_end_69} :catchall_73 ++ :try_end_74 ++ .catchall {:try_start_73 .. :try_end_74} :catchall_7e + + iget-boolean v2, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mSuccess:Z + +- goto :goto_52 ++ goto :goto_4a + +- :catch_6c ++ :catch_77 + move-exception v0 + +- :try_start_6d ++ :try_start_78 + const-string v2, "interrupted while trying to update by index" + + invoke-virtual {p0, v2}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->log(Ljava/lang/String;)V + +- goto :goto_68 ++ goto :goto_73 + +- :catchall_73 ++ :catchall_7e + move-exception v2 + + monitor-exit v3 +- :try_end_75 +- .catchall {:try_start_6d .. :try_end_75} :catchall_73 ++ :try_end_80 ++ .catchall {:try_start_78 .. :try_end_80} :catchall_7e + + throw v2 + .end method +@@ -351,10 +372,30 @@ + } + .end annotation + ++ const/4 v4, 0x1 ++ + const-string v3, "getAllMessagesFromEF" + + invoke-virtual {p0, v3}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->log(Ljava/lang/String;)V + ++ invoke-virtual {p0}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v3 ++ ++ invoke-virtual {p0, v3, v4}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->isAllowed([Ljava/lang/String;I)Z ++ ++ move-result v3 ++ ++ if-nez v3, :cond_16 ++ ++ new-instance v3, Ljava/util/ArrayList; ++ ++ invoke-direct {v3}, Ljava/util/ArrayList;->()V ++ ++ :goto_15 ++ return-object v3 ++ ++ :cond_16 + iget-object v3, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mContext:Landroid/content/Context; + + const-string v4, "android.permission.RECEIVE_SMS" +@@ -375,28 +416,27 @@ + + move-result v3 + +- if-eqz v3, :cond_22 ++ if-eqz v3, :cond_33 + + new-instance v3, Ljava/util/ArrayList; + + invoke-direct {v3}, Ljava/util/ArrayList;->()V + +- :goto_21 +- return-object v3 ++ goto :goto_15 + +- :cond_22 ++ :cond_33 + iget-object v4, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mLock:Ljava/lang/Object; + + monitor-enter v4 + +- :try_start_25 ++ :try_start_36 + iget-object v3, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mPhone:Lcom/android/internal/telephony/PhoneBase; + + invoke-virtual {v3}, Lcom/android/internal/telephony/PhoneBase;->getIccFileHandler()Lcom/android/internal/telephony/uicc/IccFileHandler; + + move-result-object v1 + +- if-nez v1, :cond_44 ++ if-nez v1, :cond_55 + + const-string v3, "IccSmsInterfaceManager" + +@@ -406,7 +446,7 @@ + + iget-object v3, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mSms:Ljava/util/List; + +- if-eqz v3, :cond_44 ++ if-eqz v3, :cond_55 + + iget-object v3, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mSms:Ljava/util/List; + +@@ -416,19 +456,19 @@ + + monitor-exit v4 + +- goto :goto_21 ++ goto :goto_15 + +- :catchall_41 ++ :catchall_52 + move-exception v3 + + monitor-exit v4 +- :try_end_43 +- .catchall {:try_start_25 .. :try_end_43} :catchall_41 ++ :try_end_54 ++ .catchall {:try_start_36 .. :try_end_54} :catchall_52 + + throw v3 + +- :cond_44 +- :try_start_44 ++ :cond_55 ++ :try_start_55 + iget-object v3, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mHandler:Landroid/os/Handler; + + const/4 v5, 0x1 +@@ -440,38 +480,58 @@ + const/16 v3, 0x6f3c + + invoke-virtual {v1, v3, v2}, Lcom/android/internal/telephony/uicc/IccFileHandler;->loadEFLinearFixedAll(ILandroid/os/Message;)V +- :try_end_50 +- .catchall {:try_start_44 .. :try_end_50} :catchall_41 ++ :try_end_61 ++ .catchall {:try_start_55 .. :try_end_61} :catchall_52 + +- :try_start_50 ++ :try_start_61 + iget-object v3, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mLock:Ljava/lang/Object; + + invoke-virtual {v3}, Ljava/lang/Object;->wait()V +- :try_end_55 +- .catchall {:try_start_50 .. :try_end_55} :catchall_41 +- .catch Ljava/lang/InterruptedException; {:try_start_50 .. :try_end_55} :catch_59 ++ :try_end_66 ++ .catchall {:try_start_61 .. :try_end_66} :catchall_52 ++ .catch Ljava/lang/InterruptedException; {:try_start_61 .. :try_end_66} :catch_6a + +- :goto_55 +- :try_start_55 ++ :goto_66 ++ :try_start_66 + monitor-exit v4 +- :try_end_56 +- .catchall {:try_start_55 .. :try_end_56} :catchall_41 ++ :try_end_67 ++ .catchall {:try_start_66 .. :try_end_67} :catchall_52 + + iget-object v3, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mSms:Ljava/util/List; + +- goto :goto_21 ++ goto :goto_15 + +- :catch_59 ++ :catch_6a + move-exception v0 + +- :try_start_5a ++ :try_start_6b + const-string v3, "interrupted while trying to load from the Icc" + + invoke-virtual {p0, v3}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->log(Ljava/lang/String;)V +- :try_end_5f +- .catchall {:try_start_5a .. :try_end_5f} :catchall_41 ++ :try_end_70 ++ .catchall {:try_start_6b .. :try_end_70} :catchall_52 ++ ++ goto :goto_66 ++.end method ++ ++.method protected getPackageName()[Ljava/lang/String; ++ .registers 4 ++ ++ iget-object v2, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mContext:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager; ++ ++ move-result-object v1 + +- goto :goto_55 ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ invoke-virtual {v1, v2}, Landroid/content/pm/PackageManager;->getPackagesForUid(I)[Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 + .end method + + .method public getPremiumSmsPermission(Ljava/lang/String;)I +@@ -486,6 +546,299 @@ + return v0 + .end method + ++.method protected isAllowed([Ljava/lang/String;I)Z ++ .registers 12 ++ ++ const/4 v8, -0x1 ++ ++ const/4 v4, 0x1 ++ ++ const/4 v3, 0x0 ++ ++ packed-switch p2, :pswitch_data_e6 ++ ++ const/4 v5, 0x0 ++ ++ :try_start_7 ++ aget-object v5, p1, v5 ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual {p0, p2, v5, v6}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->notify(ILjava/lang/String;B)V ++ ++ move v3, v4 ++ ++ :goto_e ++ return v3 ++ ++ :pswitch_f ++ const/4 v2, 0x0 ++ ++ iget-object v5, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-nez v5, :cond_26 ++ ++ new-instance v5, Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v6, 0x0 ++ ++ const-string v7, "privacy" ++ ++ invoke-static {v7}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v7 ++ ++ invoke-static {v7}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v7 ++ ++ invoke-direct {v5, v6, v7}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v5, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ :cond_26 ++ iget-object v5, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v5, :cond_7e ++ ++ if-eqz p1, :cond_7e ++ ++ const/4 v1, 0x0 ++ ++ :goto_2d ++ array-length v5, p1 ++ ++ if-ge v1, v5, :cond_75 ++ ++ iget-object v5, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v6, p1, v1 ++ ++ const/4 v7, -0x1 ++ ++ invoke-virtual {v5, v6, v7}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v2 ++ ++ iget-object v5, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v5, :cond_71 ++ ++ if-eqz v2, :cond_71 ++ ++ invoke-virtual {v2}, Landroid/privacy/PrivacySettings;->getSmsSendSetting()B ++ ++ move-result v5 ++ ++ if-eqz v5, :cond_71 ++ ++ aget-object v5, p1, v1 ++ ++ const/4 v6, 0x1 ++ ++ invoke-virtual {p0, p2, v5, v6}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->notify(ILjava/lang/String;B)V ++ :try_end_4b ++ .catch Ljava/lang/Exception; {:try_start_7 .. :try_end_4b} :catch_4c ++ ++ goto :goto_e ++ ++ :catch_4c ++ move-exception v0 ++ ++ const-string v5, "PrivacySMSInterfaceManager" ++ ++ const-string v6, "Got exception while checking for sms or ICC acess permission" ++ ++ invoke-static {v5, v6}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ if-eqz p1, :cond_6f ++ ++ iget-object v5, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v5, :cond_6f ++ ++ array-length v5, p1 ++ ++ if-lez v5, :cond_6f ++ ++ iget-object v5, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v6, p1, v3 ++ ++ invoke-virtual {v5, v6, v8}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v2 ++ ++ if-eqz v2, :cond_6f ++ ++ aget-object v5, p1, v3 ++ ++ invoke-virtual {p0, p2, v5, v3}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->notify(ILjava/lang/String;B)V ++ ++ :cond_6f ++ move v3, v4 ++ ++ goto :goto_e ++ ++ :cond_71 ++ const/4 v2, 0x0 ++ ++ add-int/lit8 v1, v1, 0x1 ++ ++ goto :goto_2d ++ ++ :cond_75 ++ const/4 v5, 0x0 ++ ++ :try_start_76 ++ aget-object v5, p1, v5 ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual {p0, p2, v5, v6}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->notify(ILjava/lang/String;B)V ++ ++ move v3, v4 ++ ++ goto :goto_e ++ ++ :cond_7e ++ if-eqz p1, :cond_8a ++ ++ array-length v5, p1 ++ ++ if-lez v5, :cond_8a ++ ++ const/4 v5, 0x0 ++ ++ aget-object v5, p1, v5 ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual {p0, p2, v5, v6}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->notify(ILjava/lang/String;B)V ++ ++ :cond_8a ++ move v3, v4 ++ ++ goto :goto_e ++ ++ :pswitch_8c ++ iget-object v5, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-nez v5, :cond_a2 ++ ++ new-instance v5, Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v6, 0x0 ++ ++ const-string v7, "privacy" ++ ++ invoke-static {v7}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v7 ++ ++ invoke-static {v7}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v7 ++ ++ invoke-direct {v5, v6, v7}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v5, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ :cond_a2 ++ iget-object v5, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v5, :cond_d7 ++ ++ if-eqz p1, :cond_d7 ++ ++ const/4 v1, 0x0 ++ ++ :goto_a9 ++ array-length v5, p1 ++ ++ if-ge v1, v5, :cond_cd ++ ++ iget-object v5, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v6, p1, v1 ++ ++ const/4 v7, -0x1 ++ ++ invoke-virtual {v5, v6, v7}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v2 ++ ++ iget-object v5, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v5, :cond_c9 ++ ++ if-eqz v2, :cond_c9 ++ ++ invoke-virtual {v2}, Landroid/privacy/PrivacySettings;->getIccAccessSetting()B ++ ++ move-result v5 ++ ++ if-eqz v5, :cond_c9 ++ ++ aget-object v5, p1, v1 ++ ++ const/4 v6, 0x1 ++ ++ invoke-virtual {p0, p2, v5, v6}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->notify(ILjava/lang/String;B)V ++ ++ goto/16 :goto_e ++ ++ :cond_c9 ++ const/4 v2, 0x0 ++ ++ add-int/lit8 v1, v1, 0x1 ++ ++ goto :goto_a9 ++ ++ :cond_cd ++ const/4 v5, 0x0 ++ ++ aget-object v5, p1, v5 ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual {p0, p2, v5, v6}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->notify(ILjava/lang/String;B)V ++ ++ move v3, v4 ++ ++ goto/16 :goto_e ++ ++ :cond_d7 ++ if-eqz p1, :cond_e3 ++ ++ array-length v5, p1 ++ ++ if-lez v5, :cond_e3 ++ ++ const/4 v5, 0x0 ++ ++ aget-object v5, p1, v5 ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual {p0, p2, v5, v6}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->notify(ILjava/lang/String;B)V ++ :try_end_e3 ++ .catch Ljava/lang/Exception; {:try_start_76 .. :try_end_e3} :catch_4c ++ ++ :cond_e3 ++ move v3, v4 ++ ++ goto/16 :goto_e ++ ++ :pswitch_data_e6 ++ .packed-switch 0x0 ++ :pswitch_f ++ :pswitch_8c ++ .end packed-switch ++.end method ++ + .method protected abstract log(Ljava/lang/String;)V + .end method + +@@ -660,6 +1013,55 @@ + goto :goto_22 + .end method + ++.method protected notify(ILjava/lang/String;B)V ++ .registers 11 ++ ++ const/4 v2, 0x0 ++ ++ const/4 v5, 0x0 ++ ++ packed-switch p1, :pswitch_data_1c ++ ++ :goto_5 ++ return-void ++ ++ :pswitch_6 ++ iget-object v0, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "SmsSend" ++ ++ move-object v1, p2 ++ ++ move v3, p3 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_5 ++ ++ :pswitch_11 ++ iget-object v0, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "iccAccess" ++ ++ move-object v1, p2 ++ ++ move v3, p3 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_5 ++ ++ :pswitch_data_1c ++ .packed-switch 0x0 ++ :pswitch_6 ++ :pswitch_11 ++ .end packed-switch ++.end method ++ + .method public sendData(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;)V + .registers 15 + +@@ -1151,6 +1553,23 @@ + + invoke-virtual {p0, v2}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->log(Ljava/lang/String;)V + ++ invoke-virtual {p0}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ const/4 v4, 0x1 ++ ++ invoke-virtual {p0, v2, v4}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->isAllowed([Ljava/lang/String;I)Z ++ ++ move-result v2 ++ ++ if-nez v2, :cond_47 ++ ++ :cond_46 ++ :goto_46 ++ return v1 ++ ++ :cond_47 + const-string v2, "Updating message on Icc" + + invoke-virtual {p0, v2}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->enforceReceiveAndSend(Ljava/lang/String;)V +@@ -1167,19 +1586,15 @@ + + move-result v2 + +- if-eqz v2, :cond_4f +- +- :goto_4e +- return v1 ++ if-nez v2, :cond_46 + +- :cond_4f + iget-object v7, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mLock:Ljava/lang/Object; + + monitor-enter v7 + + const/4 v1, 0x0 + +- :try_start_53 ++ :try_start_5e + iput-boolean v1, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mSuccess:Z + + iget-object v1, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mHandler:Landroid/os/Handler; +@@ -1190,40 +1605,40 @@ + + move-result-object v5 + +- if-nez p3, :cond_6a ++ if-nez p3, :cond_75 + + invoke-virtual {p0, p2, v5}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->deleteSms(ILandroid/os/Message;)V +- :try_end_61 +- .catchall {:try_start_53 .. :try_end_61} :catchall_79 ++ :try_end_6c ++ .catchall {:try_start_5e .. :try_end_6c} :catchall_84 + +- :goto_61 +- :try_start_61 ++ :goto_6c ++ :try_start_6c + iget-object v1, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mLock:Ljava/lang/Object; + + invoke-virtual {v1}, Ljava/lang/Object;->wait()V +- :try_end_66 +- .catchall {:try_start_61 .. :try_end_66} :catchall_79 +- .catch Ljava/lang/InterruptedException; {:try_start_61 .. :try_end_66} :catch_88 ++ :try_end_71 ++ .catchall {:try_start_6c .. :try_end_71} :catchall_84 ++ .catch Ljava/lang/InterruptedException; {:try_start_6c .. :try_end_71} :catch_93 + +- :goto_66 +- :try_start_66 ++ :goto_71 ++ :try_start_71 + monitor-exit v7 +- :try_end_67 +- .catchall {:try_start_66 .. :try_end_67} :catchall_79 ++ :try_end_72 ++ .catchall {:try_start_71 .. :try_end_72} :catchall_84 + + iget-boolean v1, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mSuccess:Z + +- goto :goto_4e ++ goto :goto_46 + +- :cond_6a +- :try_start_6a ++ :cond_75 ++ :try_start_75 + iget-object v1, p0, Lcom/android/internal/telephony/IccSmsInterfaceManager;->mPhone:Lcom/android/internal/telephony/PhoneBase; + + invoke-virtual {v1}, Lcom/android/internal/telephony/PhoneBase;->getIccFileHandler()Lcom/android/internal/telephony/uicc/IccFileHandler; + + move-result-object v0 + +- if-nez v0, :cond_7c ++ if-nez v0, :cond_87 + + invoke-virtual {v5}, Landroid/os/Message;->recycle()V + +@@ -1231,19 +1646,19 @@ + + monitor-exit v7 + +- goto :goto_4e ++ goto :goto_46 + +- :catchall_79 ++ :catchall_84 + move-exception v1 + + monitor-exit v7 +- :try_end_7b +- .catchall {:try_start_6a .. :try_end_7b} :catchall_79 ++ :try_end_86 ++ .catchall {:try_start_75 .. :try_end_86} :catchall_84 + + throw v1 + +- :cond_7c +- :try_start_7c ++ :cond_87 ++ :try_start_87 + invoke-virtual {p0, p3, p4}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->makeSmsRecordData(I[B)[B + + move-result-object v3 +@@ -1256,18 +1671,18 @@ + + invoke-virtual/range {v0 .. v5}, Lcom/android/internal/telephony/uicc/IccFileHandler;->updateEFLinearFixed(II[BLjava/lang/String;Landroid/os/Message;)V + +- goto :goto_61 ++ goto :goto_6c + +- :catch_88 ++ :catch_93 + move-exception v6 + + const-string v1, "interrupted while trying to update by index" + + invoke-virtual {p0, v1}, Lcom/android/internal/telephony/IccSmsInterfaceManager;->log(Ljava/lang/String;)V +- :try_end_8e +- .catchall {:try_start_7c .. :try_end_8e} :catchall_79 ++ :try_end_99 ++ .catchall {:try_start_87 .. :try_end_99} :catchall_84 + +- goto :goto_66 ++ goto :goto_71 + .end method + + .method protected abstract writeSms(I[B[BLandroid/os/Message;)V +diff -Npru stock-telephony-common/smali/com/android/internal/telephony/PhoneFactory.smali pdroid-telephony-common/smali/com/android/internal/telephony/PhoneFactory.smali +--- stock-telephony-common/smali/com/android/internal/telephony/PhoneFactory.smali 2013-08-10 20:38:01.287214220 -0700 ++++ pdroid-telephony-common/smali/com/android/internal/telephony/PhoneFactory.smali 2013-08-10 20:38:03.007214292 -0700 +@@ -64,7 +64,7 @@ + + packed-switch v1, :pswitch_data_26 + +- new-instance v0, Lcom/android/internal/telephony/cdma/CDMAPhone; ++ new-instance v0, Landroid/privacy/surrogate/PrivacyCDMAPhone; + + sget-object v1, Lcom/android/internal/telephony/PhoneFactory;->sContext:Landroid/content/Context; + +@@ -72,7 +72,7 @@ + + sget-object v4, Lcom/android/internal/telephony/PhoneFactory;->sPhoneNotifier:Lcom/android/internal/telephony/PhoneNotifier; + +- invoke-direct {v0, v1, v3, v4}, Lcom/android/internal/telephony/cdma/CDMAPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;)V ++ invoke-direct {v0, v1, v3, v4}, Landroid/privacy/surrogate/PrivacyCDMAPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;)V + + :goto_15 + monitor-exit v2 +@@ -80,7 +80,7 @@ + return-object v0 + + :pswitch_17 +- new-instance v0, Lcom/android/internal/telephony/cdma/CDMALTEPhone; ++ new-instance v0, Landroid/privacy/surrogate/PrivacyCDMALTEPhone; + + sget-object v1, Lcom/android/internal/telephony/PhoneFactory;->sContext:Landroid/content/Context; + +@@ -88,7 +88,7 @@ + + sget-object v4, Lcom/android/internal/telephony/PhoneFactory;->sPhoneNotifier:Lcom/android/internal/telephony/PhoneNotifier; + +- invoke-direct {v0, v1, v3, v4}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;)V ++ invoke-direct {v0, v1, v3, v4}, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;)V + + goto :goto_15 + +@@ -153,7 +153,7 @@ + monitor-enter v2 + + :try_start_3 +- new-instance v0, Lcom/android/internal/telephony/gsm/GSMPhone; ++ new-instance v0, Landroid/privacy/surrogate/PrivacyGSMPhone; + + sget-object v1, Lcom/android/internal/telephony/PhoneFactory;->sContext:Landroid/content/Context; + +@@ -161,7 +161,7 @@ + + sget-object v4, Lcom/android/internal/telephony/PhoneFactory;->sPhoneNotifier:Lcom/android/internal/telephony/PhoneNotifier; + +- invoke-direct {v0, v1, v3, v4}, Lcom/android/internal/telephony/gsm/GSMPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;)V ++ invoke-direct {v0, v1, v3, v4}, Landroid/privacy/surrogate/PrivacyGSMPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;)V + + monitor-exit v2 + +@@ -187,7 +187,7 @@ + :try_start_3 + sget-boolean v15, Lcom/android/internal/telephony/PhoneFactory;->sMadeDefaults:Z + +- if-nez v15, :cond_14b ++ if-nez v15, :cond_14d + + invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper; + +@@ -238,10 +238,10 @@ + invoke-direct {v15, v0}, Landroid/net/LocalServerSocket;->(Ljava/lang/String;)V + :try_end_2d + .catchall {:try_start_24 .. :try_end_2d} :catchall_1d +- .catch Ljava/io/IOException; {:try_start_24 .. :try_end_2d} :catch_14d ++ .catch Ljava/io/IOException; {:try_start_24 .. :try_end_2d} :catch_14f + + :goto_2d +- if-nez v9, :cond_151 ++ if-nez v9, :cond_153 + + :try_start_2f + new-instance v15, Lcom/android/internal/telephony/DefaultPhoneNotifier; +@@ -478,7 +478,7 @@ + sput-object v15, Lcom/android/internal/telephony/PhoneFactory;->sCommandsInterface:Lcom/android/internal/telephony/CommandsInterface; + :try_end_117 + .catchall {:try_start_c6 .. :try_end_117} :catchall_1d +- .catch Ljava/lang/Exception; {:try_start_c6 .. :try_end_117} :catch_168 ++ .catch Ljava/lang/Exception; {:try_start_c6 .. :try_end_117} :catch_16a + + :try_start_117 + sget-object v15, Lcom/android/internal/telephony/PhoneFactory;->sCommandsInterface:Lcom/android/internal/telephony/CommandsInterface; +@@ -493,7 +493,7 @@ + + const/4 v15, 0x1 + +- if-ne v11, v15, :cond_178 ++ if-ne v11, v15, :cond_17a + + const-string v15, "PhoneFactory" + +@@ -503,9 +503,9 @@ + + invoke-static {v15, v0}, Landroid/telephony/Rlog;->i(Ljava/lang/String;Ljava/lang/String;)I + +- new-instance v15, Lcom/android/internal/telephony/PhoneProxy; ++ new-instance v15, Landroid/privacy/surrogate/PrivacyPhoneProxy; + +- new-instance v17, Lcom/android/internal/telephony/gsm/GSMPhone; ++ new-instance v17, Landroid/privacy/surrogate/PrivacyGSMPhone; + + sget-object v18, Lcom/android/internal/telephony/PhoneFactory;->sCommandsInterface:Lcom/android/internal/telephony/CommandsInterface; + +@@ -519,36 +519,38 @@ + + move-object/from16 v3, v19 + +- invoke-direct {v0, v1, v2, v3}, Lcom/android/internal/telephony/gsm/GSMPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;)V ++ invoke-direct {v0, v1, v2, v3}, Landroid/privacy/surrogate/PrivacyGSMPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;)V + + move-object/from16 v0, v17 + +- invoke-direct {v15, v0}, Lcom/android/internal/telephony/PhoneProxy;->(Lcom/android/internal/telephony/PhoneBase;)V ++ move-object/from16 v1, p0 ++ ++ invoke-direct {v15, v0, v1}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->(Lcom/android/internal/telephony/PhoneBase;Landroid/content/Context;)V + + sput-object v15, Lcom/android/internal/telephony/PhoneFactory;->sProxyPhone:Lcom/android/internal/telephony/Phone; + +- :cond_148 +- :goto_148 ++ :cond_14a ++ :goto_14a + const/4 v15, 0x1 + + sput-boolean v15, Lcom/android/internal/telephony/PhoneFactory;->sMadeDefaults:Z + +- :cond_14b ++ :cond_14d + monitor-exit v16 + + return-void + +- :catch_14d ++ :catch_14f + move-exception v8 + + const/4 v9, 0x1 + + goto/16 :goto_2d + +- :cond_151 ++ :cond_153 + const/4 v15, 0x3 + +- if-le v13, v15, :cond_15e ++ if-le v13, v15, :cond_160 + + new-instance v15, Ljava/lang/RuntimeException; + +@@ -559,29 +561,29 @@ + invoke-direct {v15, v0}, Ljava/lang/RuntimeException;->(Ljava/lang/String;)V + + throw v15 +- :try_end_15e +- .catchall {:try_start_117 .. :try_end_15e} :catchall_1d ++ :try_end_160 ++ .catchall {:try_start_117 .. :try_end_160} :catchall_1d + +- :cond_15e ++ :cond_160 + const-wide/16 v17, 0x7d0 + +- :try_start_160 ++ :try_start_162 + invoke-static/range {v17 .. v18}, Ljava/lang/Thread;->sleep(J)V +- :try_end_163 +- .catchall {:try_start_160 .. :try_end_163} :catchall_1d +- .catch Ljava/lang/InterruptedException; {:try_start_160 .. :try_end_163} :catch_165 ++ :try_end_165 ++ .catchall {:try_start_162 .. :try_end_165} :catchall_1d ++ .catch Ljava/lang/InterruptedException; {:try_start_162 .. :try_end_165} :catch_167 + + goto/16 :goto_21 + +- :catch_165 ++ :catch_167 + move-exception v15 + + goto/16 :goto_21 + +- :catch_168 ++ :catch_16a + move-exception v7 + +- :try_start_169 ++ :try_start_16b + const-string v15, "PhoneFactory" + + const-string v17, "Unable to construct command interface" +@@ -596,16 +598,16 @@ + + throw v15 + +- :cond_178 ++ :cond_17a + const/4 v15, 0x2 + +- if-ne v11, v15, :cond_148 ++ if-ne v11, v15, :cond_14a + + invoke-static {}, Landroid/telephony/TelephonyManager;->getLteOnCdmaModeStatic()I + + move-result v15 + +- packed-switch v15, :pswitch_data_1cc ++ packed-switch v15, :pswitch_data_1d2 + + const-string v15, "PhoneFactory" + +@@ -615,9 +617,9 @@ + + invoke-static {v15, v0}, Landroid/telephony/Rlog;->i(Ljava/lang/String;Ljava/lang/String;)I + +- new-instance v15, Lcom/android/internal/telephony/PhoneProxy; ++ new-instance v15, Landroid/privacy/surrogate/PrivacyPhoneProxy; + +- new-instance v17, Lcom/android/internal/telephony/cdma/CDMAPhone; ++ new-instance v17, Landroid/privacy/surrogate/PrivacyCDMAPhone; + + sget-object v18, Lcom/android/internal/telephony/PhoneFactory;->sCommandsInterface:Lcom/android/internal/telephony/CommandsInterface; + +@@ -631,17 +633,19 @@ + + move-object/from16 v3, v19 + +- invoke-direct {v0, v1, v2, v3}, Lcom/android/internal/telephony/cdma/CDMAPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;)V ++ invoke-direct {v0, v1, v2, v3}, Landroid/privacy/surrogate/PrivacyCDMAPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;)V + + move-object/from16 v0, v17 + +- invoke-direct {v15, v0}, Lcom/android/internal/telephony/PhoneProxy;->(Lcom/android/internal/telephony/PhoneBase;)V ++ move-object/from16 v1, p0 ++ ++ invoke-direct {v15, v0, v1}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->(Lcom/android/internal/telephony/PhoneBase;Landroid/content/Context;)V + + sput-object v15, Lcom/android/internal/telephony/PhoneFactory;->sProxyPhone:Lcom/android/internal/telephony/Phone; + +- goto :goto_148 ++ goto :goto_14a + +- :pswitch_1a6 ++ :pswitch_1aa + const-string v15, "PhoneFactory" + + const-string v17, "Creating CDMALTEPhone" +@@ -650,9 +654,9 @@ + + invoke-static {v15, v0}, Landroid/telephony/Rlog;->i(Ljava/lang/String;Ljava/lang/String;)I + +- new-instance v15, Lcom/android/internal/telephony/PhoneProxy; ++ new-instance v15, Landroid/privacy/surrogate/PrivacyPhoneProxy; + +- new-instance v17, Lcom/android/internal/telephony/cdma/CDMALTEPhone; ++ new-instance v17, Landroid/privacy/surrogate/PrivacyCDMALTEPhone; + + sget-object v18, Lcom/android/internal/telephony/PhoneFactory;->sCommandsInterface:Lcom/android/internal/telephony/CommandsInterface; + +@@ -666,23 +670,25 @@ + + move-object/from16 v3, v19 + +- invoke-direct {v0, v1, v2, v3}, Lcom/android/internal/telephony/cdma/CDMALTEPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;)V ++ invoke-direct {v0, v1, v2, v3}, Landroid/privacy/surrogate/PrivacyCDMALTEPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;)V + + move-object/from16 v0, v17 + +- invoke-direct {v15, v0}, Lcom/android/internal/telephony/PhoneProxy;->(Lcom/android/internal/telephony/PhoneBase;)V ++ move-object/from16 v1, p0 ++ ++ invoke-direct {v15, v0, v1}, Landroid/privacy/surrogate/PrivacyPhoneProxy;->(Lcom/android/internal/telephony/PhoneBase;Landroid/content/Context;)V + + sput-object v15, Lcom/android/internal/telephony/PhoneFactory;->sProxyPhone:Lcom/android/internal/telephony/Phone; +- :try_end_1c9 +- .catchall {:try_start_169 .. :try_end_1c9} :catchall_1d ++ :try_end_1cf ++ .catchall {:try_start_16b .. :try_end_1cf} :catchall_1d + +- goto/16 :goto_148 ++ goto/16 :goto_14a + + nop + +- :pswitch_data_1cc ++ :pswitch_data_1d2 + .packed-switch 0x1 +- :pswitch_1a6 ++ :pswitch_1aa + .end packed-switch + .end method + +diff -Npru stock-telephony-common/smali/com/android/internal/telephony/RIL$RILSender.smali pdroid-telephony-common/smali/com/android/internal/telephony/RIL$RILSender.smali +--- stock-telephony-common/smali/com/android/internal/telephony/RIL$RILSender.smali 2013-08-10 20:38:01.311214222 -0700 ++++ pdroid-telephony-common/smali/com/android/internal/telephony/RIL$RILSender.smali 2013-08-10 20:38:03.023214293 -0700 +@@ -61,7 +61,7 @@ + + iget v10, v0, Landroid/os/Message;->what:I + +- packed-switch v10, :pswitch_data_1fa ++ packed-switch v10, :pswitch_data_200 + + :cond_11 + :goto_11 +@@ -99,7 +99,7 @@ + + iput v11, v10, Lcom/android/internal/telephony/RIL;->mRequestMessagesPending:I + :try_end_2f +- .catchall {:try_start_13 .. :try_end_2f} :catchall_10e ++ .catchall {:try_start_13 .. :try_end_2f} :catchall_114 + .catch Ljava/io/IOException; {:try_start_13 .. :try_end_2f} :catch_87 + .catch Ljava/lang/RuntimeException; {:try_start_13 .. :try_end_2f} :catch_bd + +@@ -121,7 +121,7 @@ + + monitor-enter v11 + :try_end_3b +- .catchall {:try_start_36 .. :try_end_3b} :catchall_10e ++ .catchall {:try_start_36 .. :try_end_3b} :catchall_114 + .catch Ljava/io/IOException; {:try_start_36 .. :try_end_3b} :catch_87 + .catch Ljava/lang/RuntimeException; {:try_start_36 .. :try_end_3b} :catch_bd + +@@ -180,7 +180,7 @@ + + const/16 v11, 0x2000 + +- if-le v10, v11, :cond_dc ++ if-le v10, v11, :cond_df + + new-instance v10, Ljava/lang/RuntimeException; + +@@ -208,7 +208,7 @@ + + throw v10 + :try_end_87 +- .catchall {:try_start_4b .. :try_end_87} :catchall_10e ++ .catchall {:try_start_4b .. :try_end_87} :catchall_114 + .catch Ljava/io/IOException; {:try_start_4b .. :try_end_87} :catch_87 + .catch Ljava/lang/RuntimeException; {:try_start_4b .. :try_end_87} :catch_bd + +@@ -243,15 +243,15 @@ + + invoke-virtual {v8}, Lcom/android/internal/telephony/RILRequest;->release()V + :try_end_a3 +- .catchall {:try_start_88 .. :try_end_a3} :catchall_10e ++ .catchall {:try_start_88 .. :try_end_a3} :catchall_114 + + :cond_a3 + iget-object v10, p0, Lcom/android/internal/telephony/RIL$RILSender;->this$0:Lcom/android/internal/telephony/RIL; + +- :goto_a5 + #calls: Lcom/android/internal/telephony/RIL;->releaseWakeLockIfDone()V + invoke-static {v10}, Lcom/android/internal/telephony/RIL;->access$000(Lcom/android/internal/telephony/RIL;)V + ++ :goto_a8 + if-nez v1, :cond_11 + + iget-object v10, p0, Lcom/android/internal/telephony/RIL$RILSender;->this$0:Lcom/android/internal/telephony/RIL; +@@ -281,7 +281,7 @@ + :try_start_bc + throw v10 + :try_end_bd +- .catchall {:try_start_bc .. :try_end_bd} :catchall_10e ++ .catchall {:try_start_bc .. :try_end_bd} :catchall_114 + .catch Ljava/io/IOException; {:try_start_bc .. :try_end_bd} :catch_87 + .catch Ljava/lang/RuntimeException; {:try_start_bc .. :try_end_bd} :catch_bd + +@@ -316,15 +316,18 @@ + + invoke-virtual {v8}, Lcom/android/internal/telephony/RILRequest;->release()V + :try_end_d9 +- .catchall {:try_start_be .. :try_end_d9} :catchall_10e ++ .catchall {:try_start_be .. :try_end_d9} :catchall_114 + + :cond_d9 + iget-object v10, p0, Lcom/android/internal/telephony/RIL$RILSender;->this$0:Lcom/android/internal/telephony/RIL; + +- goto :goto_a5 ++ #calls: Lcom/android/internal/telephony/RIL;->releaseWakeLockIfDone()V ++ invoke-static {v10}, Lcom/android/internal/telephony/RIL;->access$000(Lcom/android/internal/telephony/RIL;)V ++ ++ goto :goto_a8 + +- :cond_dc +- :try_start_dc ++ :cond_df ++ :try_start_df + iget-object v10, p0, Lcom/android/internal/telephony/RIL$RILSender;->dataLength:[B + + const/4 v11, 0x0 +@@ -378,16 +381,19 @@ + move-result-object v10 + + invoke-virtual {v10, v3}, Ljava/io/OutputStream;->write([B)V +- :try_end_10b +- .catchall {:try_start_dc .. :try_end_10b} :catchall_10e +- .catch Ljava/io/IOException; {:try_start_dc .. :try_end_10b} :catch_87 +- .catch Ljava/lang/RuntimeException; {:try_start_dc .. :try_end_10b} :catch_bd ++ :try_end_10e ++ .catchall {:try_start_df .. :try_end_10e} :catchall_114 ++ .catch Ljava/io/IOException; {:try_start_df .. :try_end_10e} :catch_87 ++ .catch Ljava/lang/RuntimeException; {:try_start_df .. :try_end_10e} :catch_bd + + iget-object v10, p0, Lcom/android/internal/telephony/RIL$RILSender;->this$0:Lcom/android/internal/telephony/RIL; + +- goto :goto_a5 ++ #calls: Lcom/android/internal/telephony/RIL;->releaseWakeLockIfDone()V ++ invoke-static {v10}, Lcom/android/internal/telephony/RIL;->access$000(Lcom/android/internal/telephony/RIL;)V ++ ++ goto :goto_a8 + +- :catchall_10e ++ :catchall_114 + move-exception v10 + + iget-object v11, p0, Lcom/android/internal/telephony/RIL$RILSender;->this$0:Lcom/android/internal/telephony/RIL; +@@ -397,14 +403,14 @@ + + throw v10 + +- :pswitch_115 ++ :pswitch_11b + iget-object v10, p0, Lcom/android/internal/telephony/RIL$RILSender;->this$0:Lcom/android/internal/telephony/RIL; + + iget-object v11, v10, Lcom/android/internal/telephony/RIL;->mWakeLock:Landroid/os/PowerManager$WakeLock; + + monitor-enter v11 + +- :try_start_11a ++ :try_start_120 + iget-object v10, p0, Lcom/android/internal/telephony/RIL$RILSender;->this$0:Lcom/android/internal/telephony/RIL; + + iget-object v10, v10, Lcom/android/internal/telephony/RIL;->mWakeLock:Landroid/os/PowerManager$WakeLock; +@@ -413,13 +419,13 @@ + + move-result v10 + +- if-eqz v10, :cond_1f1 ++ if-eqz v10, :cond_1f7 + + iget-object v10, p0, Lcom/android/internal/telephony/RIL$RILSender;->this$0:Lcom/android/internal/telephony/RIL; + + iget v10, v10, Lcom/android/internal/telephony/RIL;->mRequestMessagesWaiting:I + +- if-eqz v10, :cond_1bd ++ if-eqz v10, :cond_1c3 + + const-string v10, "RILJ" + +@@ -470,10 +476,10 @@ + iget-object v12, v10, Lcom/android/internal/telephony/RIL;->mRequestList:Ljava/util/ArrayList; + + monitor-enter v12 +- :try_end_15c +- .catchall {:try_start_11a .. :try_end_15c} :catchall_1f4 ++ :try_end_162 ++ .catchall {:try_start_120 .. :try_end_162} :catchall_1fa + +- :try_start_15c ++ :try_start_162 + iget-object v10, p0, Lcom/android/internal/telephony/RIL$RILSender;->this$0:Lcom/android/internal/telephony/RIL; + + iget-object v10, v10, Lcom/android/internal/telephony/RIL;->mRequestList:Ljava/util/ArrayList; +@@ -506,8 +512,8 @@ + + const/4 v6, 0x0 + +- :goto_17d +- if-ge v6, v2, :cond_1bc ++ :goto_183 ++ if-ge v6, v2, :cond_1c2 + + iget-object v10, p0, Lcom/android/internal/telephony/RIL$RILSender;->this$0:Lcom/android/internal/telephony/RIL; + +@@ -569,20 +575,20 @@ + + add-int/lit8 v6, v6, 0x1 + +- goto :goto_17d ++ goto :goto_183 + +- :cond_1bc ++ :cond_1c2 + monitor-exit v12 +- :try_end_1bd +- .catchall {:try_start_15c .. :try_end_1bd} :catchall_1f7 ++ :try_end_1c3 ++ .catchall {:try_start_162 .. :try_end_1c3} :catchall_1fd + +- :cond_1bd +- :try_start_1bd ++ :cond_1c3 ++ :try_start_1c3 + iget-object v10, p0, Lcom/android/internal/telephony/RIL$RILSender;->this$0:Lcom/android/internal/telephony/RIL; + + iget v10, v10, Lcom/android/internal/telephony/RIL;->mRequestMessagesPending:I + +- if-eqz v10, :cond_1ea ++ if-eqz v10, :cond_1f0 + + const-string v10, "RILJ" + +@@ -622,44 +628,44 @@ + + iput v12, v10, Lcom/android/internal/telephony/RIL;->mRequestMessagesPending:I + +- :cond_1ea ++ :cond_1f0 + iget-object v10, p0, Lcom/android/internal/telephony/RIL$RILSender;->this$0:Lcom/android/internal/telephony/RIL; + + iget-object v10, v10, Lcom/android/internal/telephony/RIL;->mWakeLock:Landroid/os/PowerManager$WakeLock; + + invoke-virtual {v10}, Landroid/os/PowerManager$WakeLock;->release()V + +- :cond_1f1 ++ :cond_1f7 + monitor-exit v11 + + goto/16 :goto_11 + +- :catchall_1f4 ++ :catchall_1fa + move-exception v10 + + monitor-exit v11 +- :try_end_1f6 +- .catchall {:try_start_1bd .. :try_end_1f6} :catchall_1f4 ++ :try_end_1fc ++ .catchall {:try_start_1c3 .. :try_end_1fc} :catchall_1fa + + throw v10 + +- :catchall_1f7 ++ :catchall_1fd + move-exception v10 + +- :try_start_1f8 ++ :try_start_1fe + monitor-exit v12 +- :try_end_1f9 +- .catchall {:try_start_1f8 .. :try_end_1f9} :catchall_1f7 ++ :try_end_1ff ++ .catchall {:try_start_1fe .. :try_end_1ff} :catchall_1fd + +- :try_start_1f9 ++ :try_start_1ff + throw v10 +- :try_end_1fa +- .catchall {:try_start_1f9 .. :try_end_1fa} :catchall_1f4 ++ :try_end_200 ++ .catchall {:try_start_1ff .. :try_end_200} :catchall_1fa + +- :pswitch_data_1fa ++ :pswitch_data_200 + .packed-switch 0x1 + :pswitch_12 +- :pswitch_115 ++ :pswitch_11b + .end packed-switch + .end method + +diff -Npru stock-telephony-common/smali/com/android/internal/telephony/sip/SipPhoneFactory.smali pdroid-telephony-common/smali/com/android/internal/telephony/sip/SipPhoneFactory.smali +--- stock-telephony-common/smali/com/android/internal/telephony/sip/SipPhoneFactory.smali 2013-08-10 20:38:01.863214244 -0700 ++++ pdroid-telephony-common/smali/com/android/internal/telephony/sip/SipPhoneFactory.smali 2013-08-10 20:38:03.447214310 -0700 +@@ -24,9 +24,9 @@ + + move-result-object v1 + +- new-instance v2, Lcom/android/internal/telephony/sip/SipPhone; ++ new-instance v2, Landroid/privacy/surrogate/PrivacySipPhone; + +- invoke-direct {v2, p1, p2, v1}, Lcom/android/internal/telephony/sip/SipPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/PhoneNotifier;Landroid/net/sip/SipProfile;)V ++ invoke-direct {v2, p1, p2, v1}, Landroid/privacy/surrogate/PrivacySipPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/PhoneNotifier;Landroid/net/sip/SipProfile;)V + :try_end_e + .catch Ljava/text/ParseException; {:try_start_0 .. :try_end_e} :catch_f + +diff -Npru stock-telephony-common/smali/com/android/internal/telephony/sip/SipPhone.smali pdroid-telephony-common/smali/com/android/internal/telephony/sip/SipPhone.smali +--- stock-telephony-common/smali/com/android/internal/telephony/sip/SipPhone.smali 2013-08-10 20:38:01.863214244 -0700 ++++ pdroid-telephony-common/smali/com/android/internal/telephony/sip/SipPhone.smali 2013-08-10 20:38:02.659214277 -0700 +@@ -41,7 +41,7 @@ + + + # direct methods +-.method constructor (Landroid/content/Context;Lcom/android/internal/telephony/PhoneNotifier;Landroid/net/sip/SipProfile;)V ++.method public constructor (Landroid/content/Context;Lcom/android/internal/telephony/PhoneNotifier;Landroid/net/sip/SipProfile;)V + .registers 7 + + const/4 v2, 0x0 +diff -Npru stock-telephony-common/smali/com/android/internal/telephony/SMSDispatcher.smali pdroid-telephony-common/smali/com/android/internal/telephony/SMSDispatcher.smali +--- stock-telephony-common/smali/com/android/internal/telephony/SMSDispatcher.smali 2013-08-10 20:38:01.331214223 -0700 ++++ pdroid-telephony-common/smali/com/android/internal/telephony/SMSDispatcher.smali 2013-08-10 20:38:03.047214294 -0700 +@@ -14,6 +14,10 @@ + + + # static fields ++.field protected static final ACCESS_TYPE_ICC:I = 0x1 ++ ++.field protected static final ACCESS_TYPE_SMS_MMS:I = 0x0 ++ + .field static final DBG:Z = false + + .field private static final DESTINATION_PORT_COLUMN:I = 0x2 +@@ -50,6 +54,8 @@ + + .field private static final PREMIUM_RULE_USE_SIM:I = 0x1 + ++.field protected static final P_TAG:Ljava/lang/String; = "PrivacySMSDispatcher" ++ + .field public static final RECEIVE_EMERGENCY_BROADCAST_PERMISSION:Ljava/lang/String; = "android.permission.RECEIVE_EMERGENCY_BROADCAST" + + .field public static final RECEIVE_SMS_PERMISSION:Ljava/lang/String; = "android.permission.RECEIVE_SMS" +@@ -121,6 +127,8 @@ + + .field protected final mWapPush:Lcom/android/internal/telephony/WapPushOverSms; + ++.field protected pSetMan:Landroid/privacy/PrivacySettingsManager; ++ + + # direct methods + .method static constructor ()V +@@ -286,6 +294,27 @@ + + invoke-direct {p0}, Lcom/android/internal/telephony/SMSDispatcher;->createWakelock()V + ++ iget-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-nez v0, :cond_7d ++ ++ new-instance v0, Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v3, 0x0 ++ ++ const-string v4, "privacy" ++ ++ invoke-static {v4}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v4 ++ ++ invoke-static {v4}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v4 ++ ++ invoke-direct {v0, v3, v4}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ :cond_7d + iget-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context; + + invoke-virtual {v0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; +@@ -308,11 +337,11 @@ + + move-result v0 + +- if-nez v0, :cond_da ++ if-nez v0, :cond_ee + + move v0, v1 + +- :goto_83 ++ :goto_97 + iput-boolean v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mSmsReceiveDisabled:Z + + const-string v0, "telephony.sms.send" +@@ -323,9 +352,9 @@ + + move-result v0 + +- if-nez v0, :cond_dc ++ if-nez v0, :cond_f0 + +- :goto_8f ++ :goto_a3 + iput-boolean v1, p0, Lcom/android/internal/telephony/SMSDispatcher;->mSmsSendDisabled:Z + + const-string v0, "telephony.sms.pseudo_multipart" +@@ -400,15 +429,15 @@ + + return-void + +- :cond_da ++ :cond_ee + move v0, v2 + +- goto :goto_83 ++ goto :goto_97 + +- :cond_dc ++ :cond_f0 + move v1, v2 + +- goto :goto_8f ++ goto :goto_a3 + .end method + + .method private createWakelock()V +@@ -1356,6 +1385,26 @@ + .method protected abstract getFormat()Ljava/lang/String; + .end method + ++.method protected getPackageName()[Ljava/lang/String; ++ .registers 4 ++ ++ iget-object v2, p0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context; ++ ++ invoke-virtual {v2}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager; ++ ++ move-result-object v1 ++ ++ invoke-static {}, Landroid/os/Binder;->getCallingUid()I ++ ++ move-result v2 ++ ++ invoke-virtual {v1, v2}, Landroid/content/pm/PackageManager;->getPackagesForUid(I)[Ljava/lang/String; ++ ++ move-result-object v0 ++ ++ return-object v0 ++.end method ++ + .method public getPremiumSmsPermission(Ljava/lang/String;)I + .registers 3 + +@@ -2166,6 +2215,348 @@ + goto/16 :goto_42 + .end method + ++.method protected isAllowed([Ljava/lang/String;I)Z ++ .registers 12 ++ ++ const/4 v8, -0x1 ++ ++ const/4 v4, 0x1 ++ ++ const/4 v3, 0x0 ++ ++ packed-switch p2, :pswitch_data_e6 ++ ++ const/4 v5, 0x0 ++ ++ :try_start_7 ++ aget-object v5, p1, v5 ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual {p0, p2, v5, v6}, Lcom/android/internal/telephony/SMSDispatcher;->notify(ILjava/lang/String;B)V ++ ++ move v3, v4 ++ ++ :goto_e ++ return v3 ++ ++ :pswitch_f ++ const/4 v2, 0x0 ++ ++ iget-object v5, p0, Lcom/android/internal/telephony/SMSDispatcher;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-nez v5, :cond_26 ++ ++ new-instance v5, Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v6, 0x0 ++ ++ const-string v7, "privacy" ++ ++ invoke-static {v7}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v7 ++ ++ invoke-static {v7}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v7 ++ ++ invoke-direct {v5, v6, v7}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v5, p0, Lcom/android/internal/telephony/SMSDispatcher;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ :cond_26 ++ iget-object v5, p0, Lcom/android/internal/telephony/SMSDispatcher;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v5, :cond_7e ++ ++ if-eqz p1, :cond_7e ++ ++ const/4 v1, 0x0 ++ ++ :goto_2d ++ array-length v5, p1 ++ ++ if-ge v1, v5, :cond_75 ++ ++ iget-object v5, p0, Lcom/android/internal/telephony/SMSDispatcher;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v6, p1, v1 ++ ++ const/4 v7, -0x1 ++ ++ invoke-virtual {v5, v6, v7}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v2 ++ ++ iget-object v5, p0, Lcom/android/internal/telephony/SMSDispatcher;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v5, :cond_71 ++ ++ if-eqz v2, :cond_71 ++ ++ invoke-virtual {v2}, Landroid/privacy/PrivacySettings;->getSmsSendSetting()B ++ ++ move-result v5 ++ ++ if-eqz v5, :cond_71 ++ ++ aget-object v5, p1, v1 ++ ++ const/4 v6, 0x1 ++ ++ invoke-virtual {p0, p2, v5, v6}, Lcom/android/internal/telephony/SMSDispatcher;->notify(ILjava/lang/String;B)V ++ :try_end_4b ++ .catch Ljava/lang/Exception; {:try_start_7 .. :try_end_4b} :catch_4c ++ ++ goto :goto_e ++ ++ :catch_4c ++ move-exception v0 ++ ++ const-string v5, "PrivacySMSDispatcher" ++ ++ const-string v6, "Got exception while checking for sms or ICC acess permission" ++ ++ invoke-static {v5, v6}, Landroid/telephony/Rlog;->e(Ljava/lang/String;Ljava/lang/String;)I ++ ++ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V ++ ++ if-eqz p1, :cond_6f ++ ++ iget-object v5, p0, Lcom/android/internal/telephony/SMSDispatcher;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v5, :cond_6f ++ ++ array-length v5, p1 ++ ++ if-lez v5, :cond_6f ++ ++ iget-object v5, p0, Lcom/android/internal/telephony/SMSDispatcher;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v6, p1, v3 ++ ++ invoke-virtual {v5, v6, v8}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v2 ++ ++ if-eqz v2, :cond_6f ++ ++ aget-object v5, p1, v3 ++ ++ invoke-virtual {p0, p2, v5, v3}, Lcom/android/internal/telephony/SMSDispatcher;->notify(ILjava/lang/String;B)V ++ ++ :cond_6f ++ move v3, v4 ++ ++ goto :goto_e ++ ++ :cond_71 ++ const/4 v2, 0x0 ++ ++ add-int/lit8 v1, v1, 0x1 ++ ++ goto :goto_2d ++ ++ :cond_75 ++ const/4 v5, 0x0 ++ ++ :try_start_76 ++ aget-object v5, p1, v5 ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual {p0, p2, v5, v6}, Lcom/android/internal/telephony/SMSDispatcher;->notify(ILjava/lang/String;B)V ++ ++ move v3, v4 ++ ++ goto :goto_e ++ ++ :cond_7e ++ if-eqz p1, :cond_8a ++ ++ array-length v5, p1 ++ ++ if-lez v5, :cond_8a ++ ++ const/4 v5, 0x0 ++ ++ aget-object v5, p1, v5 ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual {p0, p2, v5, v6}, Lcom/android/internal/telephony/SMSDispatcher;->notify(ILjava/lang/String;B)V ++ ++ :cond_8a ++ move v3, v4 ++ ++ goto :goto_e ++ ++ :pswitch_8c ++ iget-object v5, p0, Lcom/android/internal/telephony/SMSDispatcher;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-nez v5, :cond_a2 ++ ++ new-instance v5, Landroid/privacy/PrivacySettingsManager; ++ ++ const/4 v6, 0x0 ++ ++ const-string v7, "privacy" ++ ++ invoke-static {v7}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; ++ ++ move-result-object v7 ++ ++ invoke-static {v7}, Landroid/privacy/IPrivacySettingsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/privacy/IPrivacySettingsManager; ++ ++ move-result-object v7 ++ ++ invoke-direct {v5, v6, v7}, Landroid/privacy/PrivacySettingsManager;->(Landroid/content/Context;Landroid/privacy/IPrivacySettingsManager;)V ++ ++ iput-object v5, p0, Lcom/android/internal/telephony/SMSDispatcher;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ :cond_a2 ++ iget-object v5, p0, Lcom/android/internal/telephony/SMSDispatcher;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v5, :cond_d7 ++ ++ if-eqz p1, :cond_d7 ++ ++ const/4 v1, 0x0 ++ ++ :goto_a9 ++ array-length v5, p1 ++ ++ if-ge v1, v5, :cond_cd ++ ++ iget-object v5, p0, Lcom/android/internal/telephony/SMSDispatcher;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ aget-object v6, p1, v1 ++ ++ const/4 v7, -0x1 ++ ++ invoke-virtual {v5, v6, v7}, Landroid/privacy/PrivacySettingsManager;->getSettings(Ljava/lang/String;I)Landroid/privacy/PrivacySettings; ++ ++ move-result-object v2 ++ ++ iget-object v5, p0, Lcom/android/internal/telephony/SMSDispatcher;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ if-eqz v5, :cond_c9 ++ ++ if-eqz v2, :cond_c9 ++ ++ invoke-virtual {v2}, Landroid/privacy/PrivacySettings;->getIccAccessSetting()B ++ ++ move-result v5 ++ ++ if-eqz v5, :cond_c9 ++ ++ aget-object v5, p1, v1 ++ ++ const/4 v6, 0x1 ++ ++ invoke-virtual {p0, p2, v5, v6}, Lcom/android/internal/telephony/SMSDispatcher;->notify(ILjava/lang/String;B)V ++ ++ goto/16 :goto_e ++ ++ :cond_c9 ++ const/4 v2, 0x0 ++ ++ add-int/lit8 v1, v1, 0x1 ++ ++ goto :goto_a9 ++ ++ :cond_cd ++ const/4 v5, 0x0 ++ ++ aget-object v5, p1, v5 ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual {p0, p2, v5, v6}, Lcom/android/internal/telephony/SMSDispatcher;->notify(ILjava/lang/String;B)V ++ ++ move v3, v4 ++ ++ goto/16 :goto_e ++ ++ :cond_d7 ++ if-eqz p1, :cond_e3 ++ ++ array-length v5, p1 ++ ++ if-lez v5, :cond_e3 ++ ++ const/4 v5, 0x0 ++ ++ aget-object v5, p1, v5 ++ ++ const/4 v6, 0x0 ++ ++ invoke-virtual {p0, p2, v5, v6}, Lcom/android/internal/telephony/SMSDispatcher;->notify(ILjava/lang/String;B)V ++ :try_end_e3 ++ .catch Ljava/lang/Exception; {:try_start_76 .. :try_end_e3} :catch_4c ++ ++ :cond_e3 ++ move v3, v4 ++ ++ goto/16 :goto_e ++ ++ :pswitch_data_e6 ++ .packed-switch 0x0 ++ :pswitch_f ++ :pswitch_8c ++ .end packed-switch ++.end method ++ ++.method protected notify(ILjava/lang/String;B)V ++ .registers 11 ++ ++ const/4 v2, 0x0 ++ ++ const/4 v5, 0x0 ++ ++ packed-switch p1, :pswitch_data_1c ++ ++ :goto_5 ++ return-void ++ ++ :pswitch_6 ++ iget-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "SmsSend" ++ ++ move-object v1, p2 ++ ++ move v3, p3 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_5 ++ ++ :pswitch_11 ++ iget-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->pSetMan:Landroid/privacy/PrivacySettingsManager; ++ ++ const-string v4, "iccAccess" ++ ++ move-object v1, p2 ++ ++ move v3, p3 ++ ++ move-object v6, v5 ++ ++ invoke-virtual/range {v0 .. v6}, Landroid/privacy/PrivacySettingsManager;->notification(Ljava/lang/String;IBLjava/lang/String;Ljava/lang/String;Landroid/privacy/PrivacySettings;)V ++ ++ goto :goto_5 ++ ++ :pswitch_data_1c ++ .packed-switch 0x0 ++ :pswitch_6 ++ :pswitch_11 ++ .end packed-switch ++.end method ++ + .method protected processMessagePart([BLjava/lang/String;IIIJIZ)I + .registers 34 + +@@ -2997,7 +3388,7 @@ + :try_start_7 + invoke-virtual {p3, v2}, Landroid/app/PendingIntent;->send(I)V + :try_end_a +- .catch Landroid/app/PendingIntent$CanceledException; {:try_start_7 .. :try_end_a} :catch_b7 ++ .catch Landroid/app/PendingIntent$CanceledException; {:try_start_7 .. :try_end_a} :catch_d3 + + :cond_a + :goto_a +@@ -3031,6 +3422,41 @@ + goto :goto_11 + + :cond_1d ++ invoke-virtual {p0}, Lcom/android/internal/telephony/SMSDispatcher;->getPackageName()[Ljava/lang/String; ++ ++ move-result-object v2 ++ ++ const/4 v3, 0x0 ++ ++ invoke-virtual {p0, v2, v3}, Lcom/android/internal/telephony/SMSDispatcher;->isAllowed([Ljava/lang/String;I)Z ++ ++ move-result v2 ++ ++ if-nez v2, :cond_38 ++ ++ if-eqz p3, :cond_11 ++ ++ const/4 v2, 0x1 ++ ++ :try_start_2b ++ invoke-virtual {p3, v2}, Landroid/app/PendingIntent;->send(I)V ++ ++ const-string v2, "SMSDispatcher" ++ ++ const-string v3, "fake also delivery state to radio off!" ++ ++ invoke-static {v2, v3}, Landroid/telephony/Rlog;->i(Ljava/lang/String;Ljava/lang/String;)I ++ :try_end_35 ++ .catch Landroid/app/PendingIntent$CanceledException; {:try_start_2b .. :try_end_35} :catch_36 ++ ++ goto :goto_11 ++ ++ :catch_36 ++ move-exception v2 ++ ++ goto :goto_11 ++ ++ :cond_38 + new-instance v1, Ljava/util/HashMap; + + invoke-direct {v1}, Ljava/util/HashMap;->()V +@@ -3057,13 +3483,13 @@ + + move-result-object v8 + +- if-eqz v8, :cond_3f ++ if-eqz v8, :cond_5a + + array-length v2, v8 + +- if-nez v2, :cond_56 ++ if-nez v2, :cond_71 + +- :cond_3f ++ :cond_5a + const-string v2, "SMSDispatcher" + + const-string v3, "Can\'t get calling app package name: refusing to send SMS" +@@ -3074,14 +3500,14 @@ + + const/4 v2, 0x1 + +- :try_start_49 ++ :try_start_64 + invoke-virtual {p3, v2}, Landroid/app/PendingIntent;->send(I)V +- :try_end_4c +- .catch Landroid/app/PendingIntent$CanceledException; {:try_start_49 .. :try_end_4c} :catch_4d ++ :try_end_67 ++ .catch Landroid/app/PendingIntent$CanceledException; {:try_start_64 .. :try_end_67} :catch_68 + + goto :goto_11 + +- :catch_4d ++ :catch_68 + move-exception v7 + + const-string v2, "SMSDispatcher" +@@ -3092,19 +3518,19 @@ + + goto :goto_11 + +- :cond_56 ++ :cond_71 + const/4 v4, 0x0 + + const/4 v2, 0x0 + +- :try_start_58 ++ :try_start_73 + aget-object v2, v8, v2 + + const/16 v3, 0x40 + + invoke-virtual {v9, v2, v3}, Landroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; +- :try_end_5f +- .catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_58 .. :try_end_5f} :catch_85 ++ :try_end_7a ++ .catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_73 .. :try_end_7a} :catch_a1 + + move-result-object v4 + +@@ -3136,7 +3562,7 @@ + + move-result v2 + +- if-nez v2, :cond_9f ++ if-nez v2, :cond_bb + + const/4 v2, 0x4 + +@@ -3146,9 +3572,9 @@ + + invoke-virtual {p0, v2}, Lcom/android/internal/telephony/SMSDispatcher;->sendMessage(Landroid/os/Message;)Z + +- goto :goto_11 ++ goto/16 :goto_11 + +- :catch_85 ++ :catch_a1 + move-exception v6 + + const-string v2, "SMSDispatcher" +@@ -3161,14 +3587,14 @@ + + const/4 v2, 0x1 + +- :try_start_90 ++ :try_start_ac + invoke-virtual {p3, v2}, Landroid/app/PendingIntent;->send(I)V +- :try_end_93 +- .catch Landroid/app/PendingIntent$CanceledException; {:try_start_90 .. :try_end_93} :catch_95 ++ :try_end_af ++ .catch Landroid/app/PendingIntent$CanceledException; {:try_start_ac .. :try_end_af} :catch_b1 + + goto/16 :goto_11 + +- :catch_95 ++ :catch_b1 + move-exception v7 + + const-string v2, "SMSDispatcher" +@@ -3179,7 +3605,7 @@ + + goto/16 :goto_11 + +- :cond_9f ++ :cond_bb + iget-object v2, p0, Lcom/android/internal/telephony/SMSDispatcher;->mPhone:Lcom/android/internal/telephony/Phone; + + invoke-interface {v2}, Lcom/android/internal/telephony/Phone;->getServiceState()Landroid/telephony/ServiceState; +@@ -3190,7 +3616,7 @@ + + move-result v10 + +- if-eqz v10, :cond_b2 ++ if-eqz v10, :cond_ce + + iget-object v2, v0, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mSentIntent:Landroid/app/PendingIntent; + +@@ -3198,12 +3624,12 @@ + + goto/16 :goto_11 + +- :cond_b2 ++ :cond_ce + invoke-virtual {p0, v0}, Lcom/android/internal/telephony/SMSDispatcher;->sendSms(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V + + goto/16 :goto_11 + +- :catch_b7 ++ :catch_d3 + move-exception v2 + + goto/16 :goto_a +diff -Npru stock-telephony-common/smali/com/android/internal/telephony/uicc/RuimRecords.smali pdroid-telephony-common/smali/com/android/internal/telephony/uicc/RuimRecords.smali +--- stock-telephony-common/smali/com/android/internal/telephony/uicc/RuimRecords.smali 2013-08-10 20:38:01.919214247 -0700 ++++ pdroid-telephony-common/smali/com/android/internal/telephony/uicc/RuimRecords.smali 2013-08-10 20:38:03.499214312 -0700 +@@ -1439,18 +1439,17 @@ + :try_start_33 + iget v7, p1, Landroid/os/Message;->what:I + +- sparse-switch v7, :sswitch_data_1ae ++ sparse-switch v7, :sswitch_data_1b0 + + invoke-super {p0, p1}, Lcom/android/internal/telephony/uicc/IccRecords;->handleMessage(Landroid/os/Message;)V + :try_end_3b +- .catchall {:try_start_33 .. :try_end_3b} :catchall_56 ++ .catchall {:try_start_33 .. :try_end_3b} :catchall_59 + .catch Ljava/lang/RuntimeException; {:try_start_33 .. :try_end_3b} :catch_45 + + :cond_3b + :goto_3b + if-eqz v4, :cond_32 + +- :goto_3d + invoke-virtual {p0}, Lcom/android/internal/telephony/uicc/RuimRecords;->onRecordLoaded()V + + goto :goto_32 +@@ -1459,7 +1458,7 @@ + :try_start_41 + invoke-virtual {p0}, Lcom/android/internal/telephony/uicc/RuimRecords;->onReady()V + :try_end_44 +- .catchall {:try_start_41 .. :try_end_44} :catchall_56 ++ .catchall {:try_start_41 .. :try_end_44} :catchall_59 + .catch Ljava/lang/RuntimeException; {:try_start_41 .. :try_end_44} :catch_45 + + goto :goto_3b +@@ -1474,44 +1473,46 @@ + + invoke-static {v7, v8, v3}, Landroid/telephony/Rlog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I + :try_end_4d +- .catchall {:try_start_46 .. :try_end_4d} :catchall_56 ++ .catchall {:try_start_46 .. :try_end_4d} :catchall_59 + + if-eqz v4, :cond_32 + +- goto :goto_3d ++ invoke-virtual {p0}, Lcom/android/internal/telephony/uicc/RuimRecords;->onRecordLoaded()V ++ ++ goto :goto_32 + +- :sswitch_50 +- :try_start_50 ++ :sswitch_53 ++ :try_start_53 + const-string v7, "Event EVENT_GET_DEVICE_IDENTITY_DONE Received" + + invoke-virtual {p0, v7}, Lcom/android/internal/telephony/uicc/RuimRecords;->log(Ljava/lang/String;)V +- :try_end_55 +- .catchall {:try_start_50 .. :try_end_55} :catchall_56 +- .catch Ljava/lang/RuntimeException; {:try_start_50 .. :try_end_55} :catch_45 ++ :try_end_58 ++ .catchall {:try_start_53 .. :try_end_58} :catchall_59 ++ .catch Ljava/lang/RuntimeException; {:try_start_53 .. :try_end_58} :catch_45 + + goto :goto_3b + +- :catchall_56 ++ :catchall_59 + move-exception v7 + +- if-eqz v4, :cond_5c ++ if-eqz v4, :cond_5f + + invoke-virtual {p0}, Lcom/android/internal/telephony/uicc/RuimRecords;->onRecordLoaded()V + +- :cond_5c ++ :cond_5f + throw v7 + +- :sswitch_5d ++ :sswitch_60 + const/4 v4, 0x1 + +- :try_start_5e ++ :try_start_61 + iget-object v1, p1, Landroid/os/Message;->obj:Ljava/lang/Object; + + check-cast v1, Landroid/os/AsyncResult; + + iget-object v7, v1, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable; + +- if-eqz v7, :cond_7f ++ if-eqz v7, :cond_82 + + new-instance v7, Ljava/lang/StringBuilder; + +@@ -1537,7 +1538,7 @@ + + goto :goto_3b + +- :cond_7f ++ :cond_82 + iget-object v7, v1, Landroid/os/AsyncResult;->result:Ljava/lang/Object; + + check-cast v7, Ljava/lang/String; +@@ -1546,7 +1547,7 @@ + + iget-object v7, p0, Lcom/android/internal/telephony/uicc/RuimRecords;->mImsi:Ljava/lang/String; + +- if-eqz v7, :cond_b6 ++ if-eqz v7, :cond_b9 + + iget-object v7, p0, Lcom/android/internal/telephony/uicc/RuimRecords;->mImsi:Ljava/lang/String; + +@@ -1554,7 +1555,7 @@ + + move-result v7 + +- if-lt v7, v11, :cond_9b ++ if-lt v7, v11, :cond_9e + + iget-object v7, p0, Lcom/android/internal/telephony/uicc/RuimRecords;->mImsi:Ljava/lang/String; + +@@ -1564,9 +1565,9 @@ + + const/16 v8, 0xf + +- if-le v7, v8, :cond_b6 ++ if-le v7, v8, :cond_b9 + +- :cond_9b ++ :cond_9e + new-instance v7, Ljava/lang/StringBuilder; + + invoke-direct {v7}, Ljava/lang/StringBuilder;->()V +@@ -1593,7 +1594,7 @@ + + iput-object v7, p0, Lcom/android/internal/telephony/uicc/RuimRecords;->mImsi:Ljava/lang/String; + +- :cond_b6 ++ :cond_b9 + new-instance v7, Ljava/lang/StringBuilder; + + invoke-direct {v7}, Ljava/lang/StringBuilder;->()V +@@ -1648,7 +1649,7 @@ + + goto/16 :goto_3b + +- :sswitch_ed ++ :sswitch_f0 + iget-object v1, p1, Landroid/os/Message;->obj:Ljava/lang/Object; + + check-cast v1, Landroid/os/AsyncResult; +@@ -1721,7 +1722,7 @@ + + goto/16 :goto_3b + +- :sswitch_132 ++ :sswitch_135 + const/4 v4, 0x1 + + iget-object v1, p1, Landroid/os/Message;->obj:Ljava/lang/Object; +@@ -1776,7 +1777,7 @@ + + goto/16 :goto_3b + +- :sswitch_165 ++ :sswitch_168 + iget-object v1, p1, Landroid/os/Message;->obj:Ljava/lang/Object; + + check-cast v1, Landroid/os/AsyncResult; +@@ -1795,7 +1796,7 @@ + + goto/16 :goto_3b + +- :sswitch_178 ++ :sswitch_17b + const-string v7, "RuimRecords" + + new-instance v8, Ljava/lang/StringBuilder; +@@ -1822,14 +1823,14 @@ + + goto/16 :goto_3b + +- :sswitch_194 ++ :sswitch_197 + const-string v7, "Event EVENT_GET_SST_DONE Received" + + invoke-virtual {p0, v7}, Lcom/android/internal/telephony/uicc/RuimRecords;->log(Ljava/lang/String;)V + + goto/16 :goto_3b + +- :sswitch_19b ++ :sswitch_19e + const/4 v4, 0x0 + + iget-object v1, p1, Landroid/os/Message;->obj:Ljava/lang/Object; +@@ -1845,28 +1846,26 @@ + check-cast v7, Lcom/android/internal/telephony/uicc/IccRefreshResponse; + + invoke-direct {p0, v7}, Lcom/android/internal/telephony/uicc/RuimRecords;->handleRuimRefresh(Lcom/android/internal/telephony/uicc/IccRefreshResponse;)V +- :try_end_1ab +- .catchall {:try_start_5e .. :try_end_1ab} :catchall_56 +- .catch Ljava/lang/RuntimeException; {:try_start_5e .. :try_end_1ab} :catch_45 ++ :try_end_1ae ++ .catchall {:try_start_61 .. :try_end_1ae} :catchall_59 ++ .catch Ljava/lang/RuntimeException; {:try_start_61 .. :try_end_1ae} :catch_45 + + goto/16 :goto_3b + +- nop +- +- :sswitch_data_1ae ++ :sswitch_data_1b0 + .sparse-switch + 0x1 -> :sswitch_41 +- 0x3 -> :sswitch_5d +- 0x4 -> :sswitch_50 +- 0x5 -> :sswitch_132 +- 0xa -> :sswitch_ed +- 0xe -> :sswitch_165 +- 0x11 -> :sswitch_194 +- 0x12 -> :sswitch_178 +- 0x13 -> :sswitch_178 +- 0x15 -> :sswitch_178 +- 0x16 -> :sswitch_178 +- 0x1f -> :sswitch_19b ++ 0x3 -> :sswitch_60 ++ 0x4 -> :sswitch_53 ++ 0x5 -> :sswitch_135 ++ 0xa -> :sswitch_f0 ++ 0xe -> :sswitch_168 ++ 0x11 -> :sswitch_197 ++ 0x12 -> :sswitch_17b ++ 0x13 -> :sswitch_17b ++ 0x15 -> :sswitch_17b ++ 0x16 -> :sswitch_17b ++ 0x1f -> :sswitch_19e + .end sparse-switch + .end method + +diff -Npru stock-telephony-common/smali/com/android/internal/telephony/uicc/VoiceMailConstants.smali pdroid-telephony-common/smali/com/android/internal/telephony/uicc/VoiceMailConstants.smali +--- stock-telephony-common/smali/com/android/internal/telephony/uicc/VoiceMailConstants.smali 2013-08-10 20:38:01.955214249 -0700 ++++ pdroid-telephony-common/smali/com/android/internal/telephony/uicc/VoiceMailConstants.smali 2013-08-10 20:38:03.527214313 -0700 +@@ -91,7 +91,7 @@ + + invoke-virtual {v7, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z + :try_end_28 +- .catchall {:try_start_10 .. :try_end_28} :catchall_ca ++ .catchall {:try_start_10 .. :try_end_28} :catchall_cd + .catch Lorg/xmlpull/v1/XmlPullParserException; {:try_start_10 .. :try_end_28} :catch_89 + .catch Ljava/io/IOException; {:try_start_10 .. :try_end_28} :catch_aa + +@@ -104,7 +104,7 @@ + :try_start_2d + invoke-virtual {v6}, Ljava/io/FileReader;->close()V + :try_end_30 +- .catch Ljava/io/IOException; {:try_start_2d .. :try_end_30} :catch_a8 ++ .catch Ljava/io/IOException; {:try_start_2d .. :try_end_30} :catch_d4 + + :cond_30 + :goto_30 +@@ -207,7 +207,7 @@ + + invoke-virtual {v7, v3, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + :try_end_88 +- .catchall {:try_start_5c .. :try_end_88} :catchall_ca ++ .catchall {:try_start_5c .. :try_end_88} :catchall_cd + .catch Lorg/xmlpull/v1/XmlPullParserException; {:try_start_5c .. :try_end_88} :catch_89 + .catch Ljava/io/IOException; {:try_start_5c .. :try_end_88} :catch_aa + +@@ -239,7 +239,7 @@ + + invoke-static {v7, v8}, Landroid/telephony/Rlog;->w(Ljava/lang/String;Ljava/lang/String;)I + :try_end_a2 +- .catchall {:try_start_8a .. :try_end_a2} :catchall_ca ++ .catchall {:try_start_8a .. :try_end_a2} :catchall_cd + + if-eqz v6, :cond_30 + +@@ -281,35 +281,45 @@ + + invoke-static {v7, v8}, Landroid/telephony/Rlog;->w(Ljava/lang/String;Ljava/lang/String;)I + :try_end_c3 +- .catchall {:try_start_ab .. :try_end_c3} :catchall_ca ++ .catchall {:try_start_ab .. :try_end_c3} :catchall_cd + + if-eqz v6, :cond_30 + + :try_start_c5 + invoke-virtual {v6}, Ljava/io/FileReader;->close()V + :try_end_c8 +- .catch Ljava/io/IOException; {:try_start_c5 .. :try_end_c8} :catch_a8 ++ .catch Ljava/io/IOException; {:try_start_c5 .. :try_end_c8} :catch_ca + + goto/16 :goto_30 + +- :catchall_ca ++ :catch_ca + move-exception v7 + +- if-eqz v6, :cond_d0 ++ goto/16 :goto_30 ++ ++ :catchall_cd ++ move-exception v7 ++ ++ if-eqz v6, :cond_d3 + +- :try_start_cd ++ :try_start_d0 + invoke-virtual {v6}, Ljava/io/FileReader;->close()V +- :try_end_d0 +- .catch Ljava/io/IOException; {:try_start_cd .. :try_end_d0} :catch_d1 ++ :try_end_d3 ++ .catch Ljava/io/IOException; {:try_start_d0 .. :try_end_d3} :catch_d7 + +- :cond_d0 +- :goto_d0 ++ :cond_d3 ++ :goto_d3 + throw v7 + +- :catch_d1 ++ :catch_d4 ++ move-exception v7 ++ ++ goto/16 :goto_30 ++ ++ :catch_d7 + move-exception v8 + +- goto :goto_d0 ++ goto :goto_d3 + .end method + + -- 2.11.4.GIT