CodePermissions

This is an autogenerated documentation file for the script: CodePermissions

Run it

$ ./androanalyze scripts_builtin/CodePermissions.py --package-names com.spotify.music

View the results

Non-Binary

$ ./androquery result -sn CodePermissions -pn com.spotify.music

 {
     "apk meta": {
         "package name": "com.spotify.music",
         "version name": "2.2.0.636",
         "sha256": "bbf2c7d7b8fbbce68a97a2f0fd7e854e29b1ea9e3836615e7e6a35095915a607",
         "import date": "2015-04-14T15:10:06.364000",
         "build_date": "2015-02-11T12:25:40",
         "path": "/mnt/stuff/btsync/apks_manual_downloads/02.03.2015_top_free_4/apps_topselling_free/MUSIC_AND_AUDIO/com.spotify.music.apk",
         "tag": null
     },
     "script meta": {
         "name": "CodePermissions",
         "sha256": "af0a194e42630d36588910fc4bc58258e86b5ae2c1eddcb3e467c23e9f6c231b",
         "analysis date": "2015-06-22T20:22:51.758000",
         "version": "0.1"
     },
     "code permissions": {
         "listing": {
             "FACTORY_TEST": [],
             "ACCESS_NETWORK_STATE": [
                 "Lcom.google.android.gms.internal.hu.<init>",
                 "Lcom.comscore.utils.e.c",
                 "Lcom.spotify.music.spotlets.networkoperatorpremiumactivation.NetworkOperatorConnectivityChecker.c",
                 "Lcom.squareup.picasso.aa.a",
                 "Lcom.comscore.utils.e.d",
                 "Lcom.c.g.a",
                 "Lcom.mixpanel.android.mpmetrics.x.b",
                 "Lcom.c.h.b",
                 "Lcom.squareup.picasso.j.d",
                 "Lcom.comscore.utils.e.e",
                 "Lcom.spotify.music.spotlets.networkoperatorpremiumactivation.NetworkOperatorConnectivityChecker.b",
                 "Lcom.spotify.mobile.android.f.x.e",
                 "Lcom.spotify.mobile.android.util.bm.a",
                 "Lcom.google.android.gms.internal.hu.a",
                 "Lcom.comscore.utils.e.a",
                 "Lcom.comscore.utils.e.b",
                 "Lcom.squareup.picasso.m.onReceive",
                 "Lcom.mixpanel.android.mpmetrics.e.a",
                 "Lcom.spotify.mobile.android.core.internal.ConnectivityListener.getConnectionType",
                 "Lcom.spotify.mobile.android.spotlets.search.a.c"
             ],
             "NFC": [
                 "Lcom.spotify.mobile.android.util.a.a.<init>"
             ],
             "BROADCAST_STICKY": [
                 "Lcom.spotify.mobile.android.service.am.a"
             ],
             "MODIFY_AUDIO_SETTINGS": [
                 "Lcom.spotify.mobile.android.f.d.b",
                 "Lcom.spotify.mobile.android.f.r$14.c",
                 "Lcom.spotify.mobile.android.f.r$14.a"
             ],
             "USE_CREDENTIALS": [
                 "Lcom.sony.snei.np.android.account.oauth.a.a.c.a$5.b",
                 "Lcom.sony.snei.np.android.account.oauth.a.a.c.a$3.b",
                 "Lcom.sony.snei.np.android.account.oauth.a.a.c.a$2.b",
                 "Lcom.sony.snei.np.android.account.oauth.a.a.c.a$6.b"
             ],
             "WAKE_LOCK": [
                 "Lcom.spotify.mobile.android.spotlets.openaccess.util.d.q",
                 "Lcom.spotify.mobile.android.spotlets.video.BackgroundableVideoService.f",
                 "Lcom.spotify.mobile.android.spotlets.video.BackgroundableVideoService.a",
                 "Lcom.spotify.mobile.android.f.r$8.a",
                 "Lcom.spotify.mobile.android.spotlets.openaccess.util.d.g",
                 "Lcom.spotify.mobile.android.f.r$8.b",
                 "Lcom.spotify.mobile.android.f.r$15.b",
                 "Lcom.spotify.mobile.android.spotlets.video.BackgroundableVideoService.h",
                 "Lcom.spotify.mobile.android.core.internal.LocalFilePlayer.play",
                 "Lcom.spotify.mobile.android.f.r$15.a",
                 "Lcom.spotify.mobile.android.spotlets.video.BackgroundableVideoService$3.run",
                 "Lcom.spotify.mobile.android.spotlets.video.BackgroundableVideoService.b"
             ],
             "VIBRATE": [],
             "BLUETOOTH": [
                 "Lcom.ford.syncV4.transport.a.a",
                 "Lcom.ford.syncV4.transport.b.a",
                 "Lcom.ford.syncV4.transport.c.c",
                 "Lcom.mixpanel.android.mpmetrics.x.c",
                 "Lcom.ford.syncV4.transport.c.b",
                 "Lcom.spotify.mobile.android.applink.AppLinkBluetoothManager.a",
                 "Lcom.ford.syncV4.trace.e.a"
             ],
             "ACCESS_WIFI_STATE": [
                 "Lcom.comscore.utils.e.a"
             ],
             "MANAGE_ACCOUNTS": [
                 "Lcom.sony.snei.np.android.account.oauth.a.a.c.a$4.b"
             ],
             "GET_ACCOUNTS": [
                 "Lcom.sony.snei.np.android.account.oauth.a.a.c.a$4.b",
                 "Lcom.spotify.mobile.android.arsenal.q.a",
                 "Lcom.sony.snei.np.android.account.oauth.a.a.c.a$5.b",
                 "Lcom.sony.snei.np.android.account.oauth.a.a.c.a$6.b",
                 "Lcom.sony.snei.np.android.account.oauth.a.a.c.a$2.b"
             ],
             "READ_CONTACTS": [
                 "Lcom.spotify.mobile.android.service.media.provider.MediaProvider.openFile",
                 "Lcom.squareup.picasso.h.c",
                 "Lcom.spotify.mobile.android.ui.activity.AnnotatePlaylistActivity.c",
                 "Lcom.squareup.picasso.g.c",
                 "Landroid.support.v7.widget.bo.a"
             ],
             "CHANGE_COMPONENT_ENABLED_STATE": [
                 "Lcom.spotify.mobile.android.spotlets.collection.service.AnnotateService.a"
             ],
             "READ_PHONE_STATE": [
                 "Lcom.sony.snei.np.android.a.a.d.b",
                 "Lcom.spotify.mobile.android.util.an.i"
             ],
             "INTERNET": [
                 "Lnet.hockeyapp.android.a.a.<init>",
                 "Lcom.loopj.android.http.b.<init>",
                 "Lcom.google.android.gms.internal.iu.a",
                 "Lcom.ford.syncV4.transport.g.a",
                 "Lcom.squareup.okhttp.internal.http.c.connect",
                 "Lcom.sony.snei.np.android.common.oauth.authgw.lib.b.a",
                 "Lcom.spotify.mobile.android.ui.fragments.y.a",
                 "Lcom.comscore.utils.e.c",
                 "Lcom.facebook.internal.n.b",
                 "Lcom.squareup.okhttp.g.a",
                 "Lcom.spotify.mobile.android.spotlets.browse.util.d.a",
                 "Lnet.hockeyapp.android.views.UpdateView.b",
                 "Lcom.ford.syncV4.proxy.j.a",
                 "Lcom.google.android.gms.internal.il.f",
                 "Lcom.squareup.picasso.ao.a",
                 "Lcom.google.android.gms.internal.ir$2.call",
                 "Lcom.squareup.okhttp.internal.http.HttpURLConnectionImpl.<init>",
                 "Lcom.ford.syncV4.transport.i.b",
                 "Lcom.c.r.<init>",
                 "Lcom.spotify.mobile.android.spotlets.collection.service.AnnotateServiceHelperImpl.b",
                 "Lcom.google.android.gms.internal.iy.<init>",
                 "Lcom.google.android.gms.internal.jc.onCreateWindow",
                 "Lcom.facebook.Request.a",
                 "Lcom.google.android.gms.internal.hp.a",
                 "Lcom.mixpanel.android.mpmetrics.ServerMessage.a",
                 "Lcom.google.android.gms.internal.jd.a",
                 "Lcom.squareup.okhttp.internal.http.ae.<init>",
                 "Lcom.facebook.widget.o$3.<init>",
                 "Lnet.hockeyapp.android.b.a",
                 "Lcom.google.android.gms.ads.AdActivity.setContentView",
                 "Lcom.comscore.metrics.a.a",
                 "Lcom.spotify.mobile.android.orbit.OrbitLibraryLoader.copyLibFromApk",
                 "Lcom.c.q.run"
             ]
         },
         "code": {
             "FACTORY_TEST": [],
             "ACCESS_NETWORK_STATE": [
                 {
                     "Lcom_spotify_mobile_android_spotlets_search_a_c": [
                         "    public final synthetic Object createFromParcel(android.os.Parcel p2)",
                         "    {",
                         "        return android.support.v4.app.BackStackState$1.a(p2);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_comscore_utils_e_c": [
                         "    public final synthetic Object createFromParcel(android.os.Parcel p2)",
                         "    {",
                         "        return android.support.v4.app.BackStackState$1.a(p2);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_comscore_utils_e_e": [
                         "    public void e(android.os.Bundle p1)",
                         "    {",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_music_spotlets_networkoperatorpremiumactivation_NetworkOperatorConnectivityChecker_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_mixpanel_android_mpmetrics_x_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_squareup_picasso_j_d": [
                         "    public final int describeContents()",
                         "    {",
                         "        return 0;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_core_internal_ConnectivityListener_getConnectionType": [
                         "    public int getConnectionType()",
                         "    {",
                         "        int v0_0 = 3;",
                         "        if (com.spotify.mobile.android.core.internal.ConnectivityListener.sApplicationContext != null) {",
                         "            int v3_2 = this.mConnectivityManager.getActiveNetworkInfo();",
                         "            if ((v3_2 != 0) && (v3_2.isConnected())) {",
                         "                int v3_3 = v3_2.getType();",
                         "                if (v3_3 != 0) {",
                         "                    if (v3_3 == 6) {",
                         "                        return v0_0;",
                         "                    } else {",
                         "                        if (v3_3 == 1) {",
                         "                            v0_0 = 4;",
                         "                            return v0_0;",
                         "                        }",
                         "                    }",
                         "                } else {",
                         "                    int v3_5 = this.mTelephonyManager.getNetworkType();",
                         "                    if (v3_5 >= 3) {",
                         "                        return v0_0;",
                         "                    } else {",
                         "                        if (v3_5 != 2) {",
                         "                            if (v3_5 == 1) {",
                         "                                v0_0 = 1;",
                         "                                return v0_0;",
                         "                            }",
                         "                        } else {",
                         "                            v0_0 = 2;",
                         "                            return v0_0;",
                         "                        }",
                         "                    }",
                         "                }",
                         "                v0_0 = -1;",
                         "            } else {",
                         "                v0_0 = 0;",
                         "            }",
                         "            return v0_0;",
                         "        } else {",
                         "            throw new IllegalStateException(\"application context has not been set!\");",
                         "        }",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_mixpanel_android_mpmetrics_e_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_squareup_picasso_aa_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_google_android_gms_internal_hu_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_google_android_gms_internal_hu_<init>": [
                         "    b()",
                         "    {",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_music_spotlets_networkoperatorpremiumactivation_NetworkOperatorConnectivityChecker_c": [
                         "    public final synthetic Object createFromParcel(android.os.Parcel p2)",
                         "    {",
                         "        return android.support.v4.app.BackStackState$1.a(p2);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_comscore_utils_e_d": [
                         "    public final int describeContents()",
                         "    {",
                         "        return 0;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_mixpanel_android_mpmetrics_e_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_f_x_e": [
                         "    public void e(android.os.Bundle p1)",
                         "    {",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_c_h_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_comscore_utils_e_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_util_bm_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_c_g_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_google_android_gms_internal_hu_<init>": [
                         "    b()",
                         "    {",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_comscore_utils_e_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_squareup_picasso_m_onReceive": [
                         "    public final void onReceive(android.content.Context p2, android.content.Intent p3)",
                         "    {",
                         "        if (this.a.c) {",
                         "            this.a.b();",
                         "        }",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_spotlets_search_a_c": [
                         "    public final synthetic Object createFromParcel(android.os.Parcel p2)",
                         "    {",
                         "        return android.support.v4.app.BackStackState$1.a(p2);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_util_bm_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 }
             ],
             "NFC": [
                 {
                     "Lcom_spotify_mobile_android_util_a_a_<init>": [
                         "    b()",
                         "    {",
                         "        return;",
                         "    }"
                     ]
                 }
             ],
             "BROADCAST_STICKY": [
                 {
                     "Lcom_spotify_mobile_android_service_am_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 }
             ],
             "MODIFY_AUDIO_SETTINGS": [
                 {
                     "Lcom_spotify_mobile_android_f_r$14_c": [
                         "    public final synthetic Object createFromParcel(android.os.Parcel p2)",
                         "    {",
                         "        return android.support.v4.app.BackStackState$1.a(p2);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_f_d_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_f_r$14_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 }
             ],
             "USE_CREDENTIALS": [
                 {
                     "Lcom_sony_snei_np_android_account_oauth_a_a_c_a$2_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_sony_snei_np_android_account_oauth_a_a_c_a$6_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_sony_snei_np_android_account_oauth_a_a_c_a$6_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_sony_snei_np_android_account_oauth_a_a_c_a$2_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_sony_snei_np_android_account_oauth_a_a_c_a$5_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_sony_snei_np_android_account_oauth_a_a_c_a$5_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_sony_snei_np_android_account_oauth_a_a_c_a$3_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 }
             ],
             "WAKE_LOCK": [
                 {
                     "Lcom_spotify_mobile_android_spotlets_video_BackgroundableVideoService$3_run": [
                         "    public final void run()",
                         "    {",
                         "        if (android.support.v4.app.n.a) {",
                         "            android.util.Log.v(\"FragmentManager\", new StringBuilder(\"Run: \").append(this).toString());",
                         "        }",
                         "        if ((!this.k) || (this.o >= 0)) {",
                         "            int v10;",
                         "            this.a(1);",
                         "            if (android.os.Build$VERSION.SDK_INT < 21) {",
                         "                v10 = 0;",
                         "            } else {",
                         "                int v0_6 = new android.util.SparseArray();",
                         "                String v1_6 = new android.util.SparseArray();",
                         "                this.b(v0_6, v1_6);",
                         "                v10 = this.a(v0_6, v1_6, 0);",
                         "            }",
                         "            int v9;",
                         "            if (v10 == 0) {",
                         "                v9 = this.j;",
                         "            } else {",
                         "                v9 = 0;",
                         "            }",
                         "            String v1_7;",
                         "            if (v10 == 0) {",
                         "                v1_7 = this.i;",
                         "            } else {",
                         "                v1_7 = 0;",
                         "            }",
                         "            android.support.v4.app.f v8 = this.b;",
                         "            while (v8 != null) {",
                         "                int v7;",
                         "                if (v10 == 0) {",
                         "                    v7 = v8.e;",
                         "                } else {",
                         "                    v7 = 0;",
                         "                }",
                         "                android.support.v4.app.n v3_1;",
                         "                if (v10 == 0) {",
                         "                    v3_1 = v8.f;",
                         "                } else {",
                         "                    v3_1 = 0;",
                         "                }",
                         "                switch (v8.c) {",
                         "                    case 1:",
                         "                        int v0_32 = v8.d;",
                         "                        v0_32.Q = v7;",
                         "                        this.a.a(v0_32, 0);",
                         "                        break;",
                         "                    case 2:",
                         "                        int v5;",
                         "                        int v0_22 = v8.d;",
                         "                        if (this.a.g == null) {",
                         "                            v5 = v0_22;",
                         "                        } else {",
                         "                            int v4_2 = 0;",
                         "                            v5 = v0_22;",
                         "                            while (v4_2 < this.a.g.size()) {",
                         "                                int v0_30 = ((android.support.v4.app.Fragment) this.a.g.get(v4_2));",
                         "                                if (android.support.v4.app.n.a) {",
                         "                                    android.util.Log.v(\"FragmentManager\", new StringBuilder(\"OP_REPLACE: adding=\").append(v5).append(\" old=\").append(v0_30).toString());",
                         "                                }",
                         "                                if ((v5 == 0) || (v0_30.H == v5.H)) {",
                         "                                    if (v0_30 != v5) {",
                         "                                        if (v8.i == null) {",
                         "                                            v8.i = new java.util.ArrayList();",
                         "                                        }",
                         "                                        v8.i.add(v0_30);",
                         "                                        v0_30.Q = v3_1;",
                         "                                        if (this.k) {",
                         "                                            v0_30.B = (v0_30.B + 1);",
                         "                                            if (android.support.v4.app.n.a) {",
                         "                                                android.util.Log.v(\"FragmentManager\", new StringBuilder(\"Bump nesting of \").append(v0_30).append(\" to \").append(v0_30.B).toString());",
                         "                                            }",
                         "                                        }",
                         "                                        this.a.a(v0_30, v1_7, v9);",
                         "                                    } else {",
                         "                                        v8.d = 0;",
                         "                                        v5 = 0;",
                         "                                    }",
                         "                                }",
                         "                                v4_2++;",
                         "                            }",
                         "                        }",
                         "                        if (v5 == 0) {",
                         "                        } else {",
                         "                            v5.Q = v7;",
                         "                            this.a.a(v5, 0);",
                         "                        }",
                         "                        break;",
                         "                    case 3:",
                         "                        int v0_21 = v8.d;",
                         "                        v0_21.Q = v3_1;",
                         "                        this.a.a(v0_21, v1_7, v9);",
                         "                        break;",
                         "                    case 4:",
                         "                        int v0_20 = v8.d;",
                         "                        v0_20.Q = v3_1;",
                         "                        this.a.b(v0_20, v1_7, v9);",
                         "                        break;",
                         "                    case 5:",
                         "                        int v0_19 = v8.d;",
                         "                        v0_19.Q = v7;",
                         "                        this.a.c(v0_19, v1_7, v9);",
                         "                        break;",
                         "                    case 6:",
                         "                        int v0_18 = v8.d;",
                         "                        v0_18.Q = v3_1;",
                         "                        this.a.d(v0_18, v1_7, v9);",
                         "                        break;",
                         "                    case 7:",
                         "                        int v0_17 = v8.d;",
                         "                        v0_17.Q = v7;",
                         "                        this.a.e(v0_17, v1_7, v9);",
                         "                        break;",
                         "                    default:",
                         "                        throw new IllegalArgumentException(new StringBuilder(\"Unknown cmd: \").append(v8.c).toString());",
                         "                }",
                         "                v8 = v8.a;",
                         "            }",
                         "            this.a.a(this.a.n, v1_7, v9, 1);",
                         "            if (this.k) {",
                         "                this.a.b(this);",
                         "            }",
                         "            return;",
                         "        } else {",
                         "            throw new IllegalStateException(\"addToBackStack() called after commit()\");",
                         "        }",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_spotlets_openaccess_util_d_q": [
                         "    final void q()",
                         "    {",
                         "        this.p = -1;",
                         "        this.q = 0;",
                         "        this.v = 0;",
                         "        this.w = 0;",
                         "        this.x = 0;",
                         "        this.y = 0;",
                         "        this.z = 0;",
                         "        this.A = 0;",
                         "        this.B = 0;",
                         "        this.C = 0;",
                         "        this.E = 0;",
                         "        this.D = 0;",
                         "        this.G = 0;",
                         "        this.H = 0;",
                         "        this.I = 0;",
                         "        this.J = 0;",
                         "        this.K = 0;",
                         "        this.M = 0;",
                         "        this.W = 0;",
                         "        this.X = 0;",
                         "        this.Y = 0;",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_spotlets_video_BackgroundableVideoService_f": [
                         "    public final void f(android.os.Bundle p3)",
                         "    {",
                         "        if (this.p < 0) {",
                         "            this.r = p3;",
                         "            return;",
                         "        } else {",
                         "            throw new IllegalStateException(\"Fragment already active\");",
                         "        }",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_spotlets_openaccess_util_d_g": [
                         "    public final android.content.res.Resources g()",
                         "    {",
                         "        if (this.D != null) {",
                         "            return this.D.getResources();",
                         "        } else {",
                         "            throw new IllegalStateException(new StringBuilder(\"Fragment \").append(this).append(\" not attached to Activity\").toString());",
                         "        }",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_spotlets_video_BackgroundableVideoService_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_spotlets_video_BackgroundableVideoService_h": [
                         "    public final android.support.v4.app.l h()",
                         "    {",
                         "        if (this.E == null) {",
                         "            this.G();",
                         "            if (this.k < 5) {",
                         "                if (this.k < 4) {",
                         "                    if (this.k < 2) {",
                         "                        if (this.k > 0) {",
                         "                            this.E.l();",
                         "                        }",
                         "                    } else {",
                         "                        this.E.m();",
                         "                    }",
                         "                } else {",
                         "                    this.E.n();",
                         "                }",
                         "            } else {",
                         "                this.E.o();",
                         "            }",
                         "        }",
                         "        return this.E;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_f_r$15_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_spotlets_video_BackgroundableVideoService_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_f_r$8_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_core_internal_LocalFilePlayer_play": [
                         "    public void play()",
                         "    {",
                         "        if (this.mMediaPlayer != null) {",
                         "            this.mMediaPlayer.start();",
                         "        }",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_f_r$8_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_f_r$8_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_f_r$15_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 }
             ],
             "VIBRATE": [],
             "BLUETOOTH": [
                 {
                     "Lcom_spotify_mobile_android_applink_AppLinkBluetoothManager_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_ford_syncV4_transport_a_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_ford_syncV4_transport_c_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_mixpanel_android_mpmetrics_x_c": [
                         "    public final synthetic Object createFromParcel(android.os.Parcel p2)",
                         "    {",
                         "        return android.support.v4.app.BackStackState$1.a(p2);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_ford_syncV4_transport_a_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_applink_AppLinkBluetoothManager_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_ford_syncV4_trace_e_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_applink_AppLinkBluetoothManager_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_ford_syncV4_transport_c_c": [
                         "    public final synthetic Object createFromParcel(android.os.Parcel p2)",
                         "    {",
                         "        return android.support.v4.app.BackStackState$1.a(p2);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_applink_AppLinkBluetoothManager_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_ford_syncV4_transport_b_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_ford_syncV4_transport_a_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_ford_syncV4_trace_e_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 }
             ],
             "ACCESS_WIFI_STATE": [
                 {
                     "Lcom_comscore_utils_e_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 }
             ],
             "MANAGE_ACCOUNTS": [
                 {
                     "Lcom_sony_snei_np_android_account_oauth_a_a_c_a$4_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 }
             ],
             "GET_ACCOUNTS": [
                 {
                     "Lcom_sony_snei_np_android_account_oauth_a_a_c_a$4_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_sony_snei_np_android_account_oauth_a_a_c_a$5_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_sony_snei_np_android_account_oauth_a_a_c_a$2_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_sony_snei_np_android_account_oauth_a_a_c_a$6_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_arsenal_q_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 }
             ],
             "READ_CONTACTS": [
                 {
                     "Lcom_squareup_picasso_h_c": [
                         "    public final synthetic Object createFromParcel(android.os.Parcel p2)",
                         "    {",
                         "        return android.support.v4.app.BackStackState$1.a(p2);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_squareup_picasso_g_c": [
                         "    public final synthetic Object createFromParcel(android.os.Parcel p2)",
                         "    {",
                         "        return android.support.v4.app.BackStackState$1.a(p2);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_squareup_picasso_h_c": [
                         "    public final synthetic Object createFromParcel(android.os.Parcel p2)",
                         "    {",
                         "        return android.support.v4.app.BackStackState$1.a(p2);",
                         "    }"
                     ]
                 },
                 {
                     "Landroid_support_v7_widget_bo_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_service_media_provider_MediaProvider_openFile": [
                         "    public android.os.ParcelFileDescriptor openFile(android.net.Uri p5, String p6)",
                         "    {",
                         "        Throwable v0_7;",
                         "        if (this.a()) {",
                         "            switch (this.b.match(p5)) {",
                         "                case 0:",
                         "                    long v2 = android.os.Binder.clearCallingIdentity();",
                         "                    try {",
                         "                        v0_7 = this.getContext().getContentResolver().openFileDescriptor(this.a.buildUpon().encodedPath(p5.getEncodedPath()).build(), p6);",
                         "                        android.os.Binder.restoreCallingIdentity(v2);",
                         "                    } catch (Throwable v0_8) {",
                         "                        android.os.Binder.restoreCallingIdentity(v2);",
                         "                        throw v0_8;",
                         "                    }",
                         "                    break;",
                         "                default:",
                         "                    v0_7 = super.openFile(p5, p6);",
                         "            }",
                         "        } else {",
                         "            v0_7 = super.openFile(p5, p6);",
                         "        }",
                         "        return v0_7;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_ui_activity_AnnotatePlaylistActivity_c": [
                         "    public final synthetic Object createFromParcel(android.os.Parcel p2)",
                         "    {",
                         "        return android.support.v4.app.BackStackState$1.a(p2);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_squareup_picasso_g_c": [
                         "    public final synthetic Object createFromParcel(android.os.Parcel p2)",
                         "    {",
                         "        return android.support.v4.app.BackStackState$1.a(p2);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_squareup_picasso_g_c": [
                         "    public final synthetic Object createFromParcel(android.os.Parcel p2)",
                         "    {",
                         "        return android.support.v4.app.BackStackState$1.a(p2);",
                         "    }"
                     ]
                 }
             ],
             "CHANGE_COMPONENT_ENABLED_STATE": [
                 {
                     "Lcom_spotify_mobile_android_spotlets_collection_service_AnnotateService_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 }
             ],
             "READ_PHONE_STATE": [
                 {
                     "Lcom_spotify_mobile_android_util_an_i": [
                         "    final void i(android.os.Bundle p3)",
                         "    {",
                         "        this.e(p3);",
                         "        if (this.E != null) {",
                         "            android.os.Parcelable v0_2 = this.E.k();",
                         "            if (v0_2 != null) {",
                         "                p3.putParcelable(\"android:support:fragments\", v0_2);",
                         "            }",
                         "        }",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_sony_snei_np_android_a_a_d_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 }
             ],
             "INTERNET": [
                 {
                     "Lcom_squareup_okhttp_g_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_c_q_run": [
                         "    public final void run()",
                         "    {",
                         "        if (android.support.v4.app.n.a) {",
                         "            android.util.Log.v(\"FragmentManager\", new StringBuilder(\"Run: \").append(this).toString());",
                         "        }",
                         "        if ((!this.k) || (this.o >= 0)) {",
                         "            int v10;",
                         "            this.a(1);",
                         "            if (android.os.Build$VERSION.SDK_INT < 21) {",
                         "                v10 = 0;",
                         "            } else {",
                         "                int v0_6 = new android.util.SparseArray();",
                         "                String v1_6 = new android.util.SparseArray();",
                         "                this.b(v0_6, v1_6);",
                         "                v10 = this.a(v0_6, v1_6, 0);",
                         "            }",
                         "            int v9;",
                         "            if (v10 == 0) {",
                         "                v9 = this.j;",
                         "            } else {",
                         "                v9 = 0;",
                         "            }",
                         "            String v1_7;",
                         "            if (v10 == 0) {",
                         "                v1_7 = this.i;",
                         "            } else {",
                         "                v1_7 = 0;",
                         "            }",
                         "            android.support.v4.app.f v8 = this.b;",
                         "            while (v8 != null) {",
                         "                int v7;",
                         "                if (v10 == 0) {",
                         "                    v7 = v8.e;",
                         "                } else {",
                         "                    v7 = 0;",
                         "                }",
                         "                android.support.v4.app.n v3_1;",
                         "                if (v10 == 0) {",
                         "                    v3_1 = v8.f;",
                         "                } else {",
                         "                    v3_1 = 0;",
                         "                }",
                         "                switch (v8.c) {",
                         "                    case 1:",
                         "                        int v0_32 = v8.d;",
                         "                        v0_32.Q = v7;",
                         "                        this.a.a(v0_32, 0);",
                         "                        break;",
                         "                    case 2:",
                         "                        int v5;",
                         "                        int v0_22 = v8.d;",
                         "                        if (this.a.g == null) {",
                         "                            v5 = v0_22;",
                         "                        } else {",
                         "                            int v4_2 = 0;",
                         "                            v5 = v0_22;",
                         "                            while (v4_2 < this.a.g.size()) {",
                         "                                int v0_30 = ((android.support.v4.app.Fragment) this.a.g.get(v4_2));",
                         "                                if (android.support.v4.app.n.a) {",
                         "                                    android.util.Log.v(\"FragmentManager\", new StringBuilder(\"OP_REPLACE: adding=\").append(v5).append(\" old=\").append(v0_30).toString());",
                         "                                }",
                         "                                if ((v5 == 0) || (v0_30.H == v5.H)) {",
                         "                                    if (v0_30 != v5) {",
                         "                                        if (v8.i == null) {",
                         "                                            v8.i = new java.util.ArrayList();",
                         "                                        }",
                         "                                        v8.i.add(v0_30);",
                         "                                        v0_30.Q = v3_1;",
                         "                                        if (this.k) {",
                         "                                            v0_30.B = (v0_30.B + 1);",
                         "                                            if (android.support.v4.app.n.a) {",
                         "                                                android.util.Log.v(\"FragmentManager\", new StringBuilder(\"Bump nesting of \").append(v0_30).append(\" to \").append(v0_30.B).toString());",
                         "                                            }",
                         "                                        }",
                         "                                        this.a.a(v0_30, v1_7, v9);",
                         "                                    } else {",
                         "                                        v8.d = 0;",
                         "                                        v5 = 0;",
                         "                                    }",
                         "                                }",
                         "                                v4_2++;",
                         "                            }",
                         "                        }",
                         "                        if (v5 == 0) {",
                         "                        } else {",
                         "                            v5.Q = v7;",
                         "                            this.a.a(v5, 0);",
                         "                        }",
                         "                        break;",
                         "                    case 3:",
                         "                        int v0_21 = v8.d;",
                         "                        v0_21.Q = v3_1;",
                         "                        this.a.a(v0_21, v1_7, v9);",
                         "                        break;",
                         "                    case 4:",
                         "                        int v0_20 = v8.d;",
                         "                        v0_20.Q = v3_1;",
                         "                        this.a.b(v0_20, v1_7, v9);",
                         "                        break;",
                         "                    case 5:",
                         "                        int v0_19 = v8.d;",
                         "                        v0_19.Q = v7;",
                         "                        this.a.c(v0_19, v1_7, v9);",
                         "                        break;",
                         "                    case 6:",
                         "                        int v0_18 = v8.d;",
                         "                        v0_18.Q = v3_1;",
                         "                        this.a.d(v0_18, v1_7, v9);",
                         "                        break;",
                         "                    case 7:",
                         "                        int v0_17 = v8.d;",
                         "                        v0_17.Q = v7;",
                         "                        this.a.e(v0_17, v1_7, v9);",
                         "                        break;",
                         "                    default:",
                         "                        throw new IllegalArgumentException(new StringBuilder(\"Unknown cmd: \").append(v8.c).toString());",
                         "                }",
                         "                v8 = v8.a;",
                         "            }",
                         "            this.a.a(this.a.n, v1_7, v9, 1);",
                         "            if (this.k) {",
                         "                this.a.b(this);",
                         "            }",
                         "            return;",
                         "        } else {",
                         "            throw new IllegalStateException(\"addToBackStack() called after commit()\");",
                         "        }",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_loopj_android_http_b_<init>": [
                         "    b()",
                         "    {",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_comscore_metrics_a_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_spotlets_collection_service_AnnotateServiceHelperImpl_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lnet_hockeyapp_android_b_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_squareup_picasso_ao_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_google_android_gms_internal_iu_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_google_android_gms_internal_ir$2_call": [
                         "    public final Object call()",
                         "    {",
                         "        android.support.v4.content.ModernAsyncTask.a(this.a).set(1);",
                         "        android.os.Process.setThreadPriority(10);",
                         "        return android.support.v4.content.ModernAsyncTask.a(this.a, this.a.b());",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_squareup_okhttp_internal_http_ae_<init>": [
                         "    b()",
                         "    {",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_spotlets_browse_util_d_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_facebook_Request_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_facebook_internal_n_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_c_r_<init>": [
                         "    b()",
                         "    {",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_squareup_okhttp_internal_http_HttpURLConnectionImpl_<init>": [
                         "    b()",
                         "    {",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_ford_syncV4_proxy_j_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_google_android_gms_ads_AdActivity_setContentView": [
                         "    public void setContentView(int p2)",
                         "    {",
                         "        this.g().a(p2);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_ford_syncV4_transport_g_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_facebook_widget_o$3_<init>": [
                         "    b()",
                         "    {",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_spotlets_browse_util_d_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_sony_snei_np_android_common_oauth_authgw_lib_b_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lnet_hockeyapp_android_a_a_<init>": [
                         "    b()",
                         "    {",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_ford_syncV4_transport_i_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_squareup_okhttp_internal_http_c_connect": [
                         "    public void connect()",
                         "    {",
                         "        try {",
                         "            switch (com.spotify.cosmos.android.Resolver$4.$SwitchMap$com$spotify$cosmos$android$Resolver$State[this.mState.ordinal()]) {",
                         "                case 1:",
                         "                    this.doConnect();",
                         "                    return;",
                         "                default:",
                         "                    return;",
                         "            }",
                         "        } catch (Throwable v0_2) {",
                         "        }",
                         "        throw v0_2;",
                         "    }"
                     ]
                 },
                 {
                     "Lnet_hockeyapp_android_views_UpdateView_b": [
                         "    public static boolean b(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        return android.support.v4.a.a.a.a.b(p1);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_google_android_gms_internal_ir$2_call": [
                         "    public final Object call()",
                         "    {",
                         "        android.support.v4.content.ModernAsyncTask.a(this.a).set(1);",
                         "        android.os.Process.setThreadPriority(10);",
                         "        return android.support.v4.content.ModernAsyncTask.a(this.a, this.a.b());",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_google_android_gms_internal_jd_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_google_android_gms_internal_hp_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_comscore_utils_e_c": [
                         "    public final synthetic Object createFromParcel(android.os.Parcel p2)",
                         "    {",
                         "        return android.support.v4.app.BackStackState$1.a(p2);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_orbit_OrbitLibraryLoader_copyLibFromApk": [
                         "    private static boolean copyLibFromApk(java.net.URL p6, java.io.File p7)",
                         "    {",
                         "        java.io.IOException v2_0 = 0;",
                         "        java.io.IOException v0_0 = 0;",
                         "        try {",
                         "            java.io.IOException v1 = p6.openStream();",
                         "            try {",
                         "                java.io.IOException v3_0 = new java.io.FileOutputStream(p7);",
                         "                v2_0 = 512;",
                         "            } catch (java.io.IOException v3) {",
                         "                if (v2_0 != null) {",
                         "                    try {",
                         "                        v2_0.close();",
                         "                    } catch (java.io.IOException v2) {",
                         "                    }",
                         "                }",
                         "                if (v1 == null) {",
                         "                    return v0_0;",
                         "                } else {",
                         "                    try {",
                         "                        v1.close();",
                         "                    } catch (java.io.IOException v1) {",
                         "                    }",
                         "                    return v0_0;",
                         "                }",
                         "            } catch (java.io.IOException v0_1) {",
                         "                v3_0 = 512;",
                         "                if (v3_0 != null) {",
                         "                    try {",
                         "                        v3_0.close();",
                         "                    } catch (java.io.IOException v2) {",
                         "                    }",
                         "                }",
                         "                if (v1 != null) {",
                         "                    try {",
                         "                        v1.close();",
                         "                    } catch (java.io.IOException v1) {",
                         "                    }",
                         "                }",
                         "                throw v0_1;",
                         "            }",
                         "            try {",
                         "                java.io.IOException v2_1 = new byte[512];",
                         "            } catch (java.io.IOException v2) {",
                         "                v2_0 = v3_0;",
                         "            } catch (java.io.IOException v0_1) {",
                         "            }",
                         "            while(true) {",
                         "                int v4 = v1.read(v2_1);",
                         "                if (v4 == -1) {",
                         "                    break;",
                         "                }",
                         "                v3_0.write(v2_1, 0, v4);",
                         "            }",
                         "            v3_0.flush();",
                         "            try {",
                         "                v3_0.close();",
                         "            } catch (java.io.IOException v0) {",
                         "            }",
                         "            if (v1 != null) {",
                         "                try {",
                         "                    v1.close();",
                         "                } catch (java.io.IOException v0) {",
                         "                }",
                         "            }",
                         "            v0_0 = 1;",
                         "            return v0_0;",
                         "        } catch (java.io.IOException v1) {",
                         "            v1 = 0;",
                         "        } catch (java.io.IOException v0_1) {",
                         "            v1 = 0;",
                         "            v3_0 = 0;",
                         "        }",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_google_android_gms_internal_il_f": [
                         "    public final void f(android.os.Bundle p3)",
                         "    {",
                         "        if (this.p < 0) {",
                         "            this.r = p3;",
                         "            return;",
                         "        } else {",
                         "            throw new IllegalStateException(\"Fragment already active\");",
                         "        }",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_google_android_gms_internal_jc_onCreateWindow": [
                         "    public final boolean onCreateWindow(android.webkit.WebView p4, boolean p5, boolean p6, android.os.Message p7)",
                         "    {",
                         "        int v0_1 = ((android.webkit.WebView$WebViewTransport) p7.obj);",
                         "        android.webkit.WebView v1_1 = new android.webkit.WebView(p4.getContext());",
                         "        v1_1.setWebViewClient(this.a.a);",
                         "        v0_1.setWebView(v1_1);",
                         "        p7.sendToTarget();",
                         "        return 1;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_google_android_gms_internal_jd_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_sony_snei_np_android_common_oauth_authgw_lib_b_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_spotify_mobile_android_ui_fragments_y_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_comscore_utils_e_c": [
                         "    public final synthetic Object createFromParcel(android.os.Parcel p2)",
                         "    {",
                         "        return android.support.v4.app.BackStackState$1.a(p2);",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_mixpanel_android_mpmetrics_ServerMessage_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_comscore_metrics_a_a": [
                         "    public static void a(android.graphics.drawable.Drawable p1)",
                         "    {",
                         "        android.support.v4.a.a.a.a.a(p1);",
                         "        return;",
                         "    }"
                     ]
                 },
                 {
                     "Lcom_google_android_gms_internal_iy_<init>": [
                         "    b()",
                         "    {",
                         "        return;",
                         "    }"
                     ]
                 }
             ]
         }
     }
 }

Binary

For the case that the result may exceed 16MB, it is stored in MongoDB’s gridFS. Therefore we need to use a different query syntax:

View the meta data:

$ ./androquery result -sn CodePermissions -pn com.spotify.music -nd

 Empty

View the raw data:

$ ./androquery result -sn CodePermissions -pn com.spotify.music -nd -r

 Empty

Source


# encoding: utf-8

__author__ = "Nils Tobias Schmidt"
__email__ = "schmidt89 at informatik.uni-marburg.de"

from androguard.decompiler.dad import decompile
from androlyze.model.script.AndroScript import AndroScript
from androguard.core.analysis.analysis import PathP

# categories
CAT_PERMISSIONS = "code permissions"
PERMISSIONS_LISTING = "listing"
PERMISSIONS_CODE = "code"

def full_method_signature(method):
    return '%s.%s.%s' % (method.get_class_name()[:-1], method.get_name(), method.get_descriptor())

def full_method_name(method):
    return '%s.%s' % (method.get_class_name()[:-1].replace("/", "."), method.get_name())

class CodePermissions(AndroScript):
    ''' List where permissions are used in the code and decompile them '''

    VERSION = "0.1"

    def _analyze(self, apk, dalvik_vm_format, vm_analysis, gvm_analysis, *args, **kwargs):
        res = self.res

        res.register_keys([CAT_PERMISSIONS])

        class_manager = dalvik_vm_format.get_class_manager()
        perm_dict = vm_analysis.get_permissions([])

        # register list for each used permissions keys
        permissions = set(perm_dict.keys())

        res.register_enum_keys(permissions, CAT_PERMISSIONS, PERMISSIONS_LISTING)
        # register each permission only once!
        res.register_enum_keys(permissions, CAT_PERMISSIONS, PERMISSIONS_CODE)

        # use set to remove duplicates!
        method_names = set()
        method_analysis_objs = set()
        for permission_name, pathp_obj_list in perm_dict.items():

            # list<PathP>
            for pathp in pathp_obj_list:
                if isinstance(pathp, PathP):
                    # type: androguard.core.bytecodes.dvm.MethodIdItem
                    # the method that uses the permission
                    src_method = class_manager.get_method_ref(pathp.src_idx)
                    method_name = full_method_name(src_method)
                    method_names.add((permission_name, method_name))

                    # the api function for the permission
                    #dst_method = class_manager.get_method_ref(pathp.dst_idx)

                    # get androguard.core.bytecodes.dvm.EncodedMethod
                    encoded_method = dalvik_vm_format.get_method(src_method.get_name())[0]

                    # get androguard.core.analysis.analysis.MethodAnalysis
                    method_analysis = vm_analysis.get_method(encoded_method)

                    method_analysis_objs.add((permission_name, method_name, method_analysis))

        for permission_name, method_name in method_names:
            # log which classes use which permissions
            res.log_append_to_enum(permission_name, method_name, CAT_PERMISSIONS, PERMISSIONS_LISTING)

        for permission_name, method_name, method_analysis in method_analysis_objs:

            ms = decompile.DvMethod(method_analysis)
            ms.process()

            source_code = ms.get_source()

            # decompile these methods too!
            log_val = {method_name : source_code.split("\n")[1:-1]}
            res.log_append_to_enum(permission_name, log_val, CAT_PERMISSIONS, PERMISSIONS_CODE)

    def needs_dalvik_vm_format(self):
        return True

    def needs_vmanalysis(self):
        return True

if __name__ == '__main__':
    for res in AndroScript.test(CodePermissions, ["../../../../testenv/apks/a2dp.Vol.apk"]):
        print res
        print res.write_to_json()