NotificationManagerCompatKitKat.smali 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. .class Landroid/support/v4/app/NotificationManagerCompatKitKat;
  2. .super Ljava/lang/Object;
  3. .source ""
  4. # static fields
  5. .field private static final CHECK_OP_NO_THROW:Ljava/lang/String; = "checkOpNoThrow"
  6. .field private static final OP_POST_NOTIFICATION:Ljava/lang/String; = "OP_POST_NOTIFICATION"
  7. # direct methods
  8. .method constructor <init>()V
  9. .locals 0
  10. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  11. return-void
  12. .end method
  13. .method public static areNotificationsEnabled(Landroid/content/Context;)Z
  14. .locals 10
  15. const-string v0, "appops"
  16. invoke-virtual {p0, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
  17. move-result-object v0
  18. check-cast v0, Landroid/app/AppOpsManager;
  19. invoke-virtual {p0}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
  20. move-result-object v1
  21. invoke-virtual {p0}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;
  22. move-result-object p0
  23. invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
  24. move-result-object p0
  25. iget v1, v1, Landroid/content/pm/ApplicationInfo;->uid:I
  26. const/4 v2, 0x1
  27. :try_start_0
  28. const-class v3, Landroid/app/AppOpsManager;
  29. invoke-virtual {v3}, Ljava/lang/Class;->getName()Ljava/lang/String;
  30. move-result-object v3
  31. invoke-static {v3}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
  32. move-result-object v3
  33. const-string v4, "checkOpNoThrow"
  34. const/4 v5, 0x3
  35. new-array v6, v5, [Ljava/lang/Class;
  36. sget-object v7, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
  37. const/4 v8, 0x0
  38. aput-object v7, v6, v8
  39. sget-object v7, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
  40. aput-object v7, v6, v2
  41. const-class v7, Ljava/lang/String;
  42. const/4 v9, 0x2
  43. aput-object v7, v6, v9
  44. invoke-virtual {v3, v4, v6}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
  45. move-result-object v4
  46. const-string v6, "OP_POST_NOTIFICATION"
  47. invoke-virtual {v3, v6}, Ljava/lang/Class;->getDeclaredField(Ljava/lang/String;)Ljava/lang/reflect/Field;
  48. move-result-object v3
  49. const-class v6, Ljava/lang/Integer;
  50. invoke-virtual {v3, v6}, Ljava/lang/reflect/Field;->get(Ljava/lang/Object;)Ljava/lang/Object;
  51. move-result-object v3
  52. check-cast v3, Ljava/lang/Integer;
  53. invoke-virtual {v3}, Ljava/lang/Integer;->intValue()I
  54. move-result v3
  55. new-array v5, v5, [Ljava/lang/Object;
  56. invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
  57. move-result-object v3
  58. aput-object v3, v5, v8
  59. invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
  60. move-result-object v1
  61. aput-object v1, v5, v2
  62. aput-object p0, v5, v9
  63. invoke-virtual {v4, v0, v5}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
  64. move-result-object p0
  65. check-cast p0, Ljava/lang/Integer;
  66. invoke-virtual {p0}, Ljava/lang/Integer;->intValue()I
  67. move-result p0
  68. :try_end_0
  69. .catch Ljava/lang/ClassNotFoundException; {:try_start_0 .. :try_end_0} :catch_0
  70. .catch Ljava/lang/NoSuchMethodException; {:try_start_0 .. :try_end_0} :catch_0
  71. .catch Ljava/lang/NoSuchFieldException; {:try_start_0 .. :try_end_0} :catch_0
  72. .catch Ljava/lang/reflect/InvocationTargetException; {:try_start_0 .. :try_end_0} :catch_0
  73. .catch Ljava/lang/IllegalAccessException; {:try_start_0 .. :try_end_0} :catch_0
  74. .catch Ljava/lang/RuntimeException; {:try_start_0 .. :try_end_0} :catch_0
  75. if-nez p0, :cond_0
  76. goto :goto_0
  77. :cond_0
  78. const/4 v2, 0x0
  79. :catch_0
  80. :goto_0
  81. return v2
  82. .end method