├── .gitignore ├── .idea ├── codeStyles │ └── Project.xml ├── gradle.xml ├── misc.xml ├── runConfigurations.xml └── vcs.xml ├── LICENSE ├── README.md ├── Screenshot_20200330-162858.jpg ├── Screenshot_20200330-162900.jpg ├── Screenshot_20200330-162912.jpg ├── Screenshot_20200330-162922.jpg ├── Screenshot_20200330-162957.png ├── Screenshot_20200330-163006.png ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro ├── release │ ├── app-release.apk │ ├── app-release.jobf │ └── output.json └── src │ ├── androidTest │ └── java │ │ └── io │ │ └── alcatraz │ │ └── noapplet │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ └── xposed_init │ ├── java │ │ └── io │ │ │ └── alcatraz │ │ │ └── noapplet │ │ │ ├── ActiveShareActivity.java │ │ │ ├── AsyncInterface.java │ │ │ ├── Easter.java │ │ │ ├── MainActivity.java │ │ │ ├── ModuleMain.java │ │ │ ├── PermissionsUtils.java │ │ │ ├── Utils.java │ │ │ ├── XposedAppletActivity.java │ │ │ └── XposedPopUpActivity.java │ └── res │ │ ├── anim │ │ ├── layout_fall_down.xml │ │ ├── recycler_falldown.xml │ │ ├── slide_left.xml │ │ ├── slide_left_back.xml │ │ ├── slide_right.xml │ │ └── slide_right_back.xml │ │ ├── animator │ │ └── raise.xml │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ ├── ic_apps_black_24dp.xml │ │ ├── ic_cloud_off_black_24dp.xml │ │ ├── ic_cloud_queue_black_24dp.xml │ │ ├── ic_code_black_24dp.xml │ │ ├── ic_description_black_24dp.xml │ │ ├── ic_error_black_24dp.xml │ │ ├── ic_forward_black_24dp.xml │ │ ├── ic_hot_tub_black_24dp.xml │ │ ├── ic_keyboard_arrow_down_black_24dp.xml │ │ ├── ic_keyboard_arrow_up_black_24dp.xml │ │ ├── ic_launcher_background.xml │ │ ├── ic_share_black_24dp.xml │ │ ├── ic_title_black_24dp.xml │ │ └── ic_unarchive_black_24dp.xml │ │ ├── layout │ │ ├── activity_active_share.xml │ │ ├── activity_main.xml │ │ ├── activity_xposed.xml │ │ └── activity_xposed_popup.xml │ │ ├── menu │ │ └── menu_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── values-v19 │ │ └── styles.xml │ │ ├── values-zh-rCN │ │ └── strings.xml │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── io │ └── alcatraz │ └── noapplet │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
7 | 8 | 9 | 10 | xmlns:android 11 | 12 | ^$ 13 | 14 | 15 | 16 |
17 |
18 | 19 | 20 | 21 | xmlns:.* 22 | 23 | ^$ 24 | 25 | 26 | BY_NAME 27 | 28 |
29 |
30 | 31 | 32 | 33 | .*:id 34 | 35 | http://schemas.android.com/apk/res/android 36 | 37 | 38 | 39 |
40 |
41 | 42 | 43 | 44 | .*:name 45 | 46 | http://schemas.android.com/apk/res/android 47 | 48 | 49 | 50 |
51 |
52 | 53 | 54 | 55 | name 56 | 57 | ^$ 58 | 59 | 60 | 61 |
62 |
63 | 64 | 65 | 66 | style 67 | 68 | ^$ 69 | 70 | 71 | 72 |
73 |
74 | 75 | 76 | 77 | .* 78 | 79 | ^$ 80 | 81 | 82 | BY_NAME 83 | 84 |
85 |
86 | 87 | 88 | 89 | .* 90 | 91 | http://schemas.android.com/apk/res/android 92 | 93 | 94 | ANDROID_ATTRIBUTE_ORDER 95 | 96 |
97 |
98 | 99 | 100 | 101 | .* 102 | 103 | .* 104 | 105 | 106 | BY_NAME 107 | 108 |
109 |
110 |
111 |
112 |
113 |
-------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 20 | 21 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Alcatraz323 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # noapplet -------------------------------------------------------------------------------- /Screenshot_20200330-162858.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alcatraz323/noapplet/a25eec2a5da718b163828033f3602cce5bc96087/Screenshot_20200330-162858.jpg -------------------------------------------------------------------------------- /Screenshot_20200330-162900.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alcatraz323/noapplet/a25eec2a5da718b163828033f3602cce5bc96087/Screenshot_20200330-162900.jpg -------------------------------------------------------------------------------- /Screenshot_20200330-162912.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alcatraz323/noapplet/a25eec2a5da718b163828033f3602cce5bc96087/Screenshot_20200330-162912.jpg -------------------------------------------------------------------------------- /Screenshot_20200330-162922.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alcatraz323/noapplet/a25eec2a5da718b163828033f3602cce5bc96087/Screenshot_20200330-162922.jpg -------------------------------------------------------------------------------- /Screenshot_20200330-162957.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alcatraz323/noapplet/a25eec2a5da718b163828033f3602cce5bc96087/Screenshot_20200330-162957.png -------------------------------------------------------------------------------- /Screenshot_20200330-163006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alcatraz323/noapplet/a25eec2a5da718b163828033f3602cce5bc96087/Screenshot_20200330-163006.png -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 28 5 | defaultConfig { 6 | applicationId "io.alcatraz.noapplet" 7 | minSdkVersion 16 8 | targetSdkVersion 28 9 | versionCode 5 10 | versionName "0.9_2020_5_1" 11 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 12 | vectorDrawables.useSupportLibrary = true 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | 22 | dependencies { 23 | compileOnly fileTree(dir: 'libs', include: ['*.jar']) 24 | compileOnly 'de.robv.android.xposed:api:82' 25 | implementation 'androidx.appcompat:appcompat:1.1.0' 26 | implementation 'androidx.constraintlayout:constraintlayout:1.1.3' 27 | implementation 'androidx.cardview:cardview:1.0.0' 28 | implementation 'com.google.android.material:material:1.1.0' 29 | 30 | testImplementation 'junit:junit:4.12' 31 | androidTestImplementation 'androidx.test.ext:junit:1.1.1' 32 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' 33 | } 34 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | 23 | -optimizationpasses 5 24 | 25 | 26 | 27 | # 混合时不使用大小写混合,混合后的类名为小写 28 | 29 | -dontusemixedcaseclassnames 30 | 31 | 32 | 33 | # 指定不去忽略非公共库的类 34 | 35 | -dontskipnonpubliclibraryclasses 36 | 37 | 38 | 39 | # 这句话能够使我们的项目混淆后产生映射文件 40 | 41 | # 包含有类名->混淆后类名的映射关系 42 | 43 | -verbose 44 | 45 | 46 | 47 | # 指定不去忽略非公共库的类成员 48 | 49 | -dontskipnonpubliclibraryclassmembers 50 | 51 | 52 | 53 | # 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。 54 | 55 | -dontpreverify 56 | 57 | 58 | 59 | # 保留Annotation不混淆 60 | 61 | -keepattributes *Annotation*,InnerClasses 62 | 63 | 64 | 65 | # 避免混淆泛型 66 | 67 | -keepattributes Signature 68 | 69 | 70 | 71 | # 抛出异常时保留代码行号 72 | 73 | -keepattributes SourceFile,LineNumberTable 74 | 75 | 76 | 77 | # 指定混淆是采用的算法,后面的参数是一个过滤器 78 | 79 | # 这个过滤器是谷歌推荐的算法,一般不做更改 80 | 81 | -optimizations !code/simplification/cast,!field/*,!class/merging/* 82 | 83 | 84 | 85 | 86 | 87 | ############################################# 88 | 89 | # 90 | 91 | # Android开发中一些需要保留的公共部分(没什么别的需求不需要动) 92 | 93 | # 94 | 95 | ############################################# 96 | 97 | 98 | 99 | # 保留我们使用的四大组件,自定义的Application等等这些类不被混淆 100 | 101 | # 因为这些子类都有可能被外部调用 102 | 103 | -keep public class * extends android.app.Activity 104 | 105 | -keep public class * extends android.app.Service 106 | 107 | -keep public class * extends android.content.BroadcastReceiver 108 | 109 | -keep public class * extends android.content.ContentProvider 110 | 111 | 112 | -keep class io.alcatraz.noapplet.ModuleMain 113 | -keep class com.google.android.material.** {*;} 114 | -keep class androidx.** {*;} 115 | -keep public class * extends androidx.** 116 | -keep interface androidx.** {*;} 117 | -dontwarn com.google.android.material.** 118 | -dontnote com.google.android.material.** 119 | -dontwarn androidx.** 120 | 121 | # 保留R下面的资源 122 | 123 | -keep class **.R$* {*;} 124 | 125 | 126 | 127 | # 保留本地native方法不被混淆 128 | 129 | -keepclasseswithmembernames class * { 130 | 131 | native ; 132 | 133 | } 134 | 135 | 136 | 137 | # 保留在Activity中的方法参数是view的方法, 138 | 139 | # 这样以来我们在layout中写的onClick就不会被影响 140 | 141 | -keepclassmembers class * extends android.app.Activity{ 142 | 143 | public void *(android.view.View); 144 | 145 | } 146 | 147 | 148 | 149 | # 保留枚举类不被混淆 150 | 151 | -keepclassmembers enum * { 152 | 153 | public static **[] values(); 154 | 155 | public static ** valueOf(java.lang.String); 156 | 157 | } 158 | 159 | 160 | 161 | # 保留我们自定义控件(继承自View)不被混淆 162 | 163 | -keep public class * extends android.view.View{ 164 | 165 | *** get*(); 166 | 167 | void set*(***); 168 | 169 | public (android.content.Context); 170 | 171 | public (android.content.Context, android.util.AttributeSet); 172 | 173 | public (android.content.Context, android.util.AttributeSet, int); 174 | 175 | } 176 | 177 | 178 | 179 | # 保留Parcelable序列化类不被混淆 180 | 181 | -keep class * implements android.os.Parcelable { 182 | 183 | public static final android.os.Parcelable$Creator *; 184 | 185 | } 186 | 187 | 188 | 189 | # 保留Serializable序列化的类不被混淆 190 | 191 | -keepclassmembers class * implements java.io.Serializable { 192 | 193 | static final long serialVersionUID; 194 | 195 | private static final java.io.ObjectStreamField[] serialPersistentFields; 196 | 197 | !static !transient ; 198 | 199 | !private ; 200 | 201 | !private ; 202 | 203 | private void writeObject(java.io.ObjectOutputStream); 204 | 205 | private void readObject(java.io.ObjectInputStream); 206 | 207 | java.lang.Object writeReplace(); 208 | 209 | java.lang.Object readResolve(); 210 | 211 | } 212 | 213 | 214 | 215 | # 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆 216 | 217 | -keepclassmembers class * { 218 | 219 | void *(**On*Event); 220 | 221 | void *(**On*Listener); 222 | 223 | } -------------------------------------------------------------------------------- /app/release/app-release.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alcatraz323/noapplet/a25eec2a5da718b163828033f3602cce5bc96087/app/release/app-release.apk -------------------------------------------------------------------------------- /app/release/app-release.jobf: -------------------------------------------------------------------------------- 1 | c a.a.a.a.a = a 2 | c a.a.a.a.a.a = a 3 | c a.a.a.a.a.a.a = a 4 | c a.a.a.b.a = a 5 | c a.a.a.b.a.a = a 6 | c a.a.a.b.a.a.a = a 7 | c android.support.v4.os.ResultReceiver.a = a 8 | c android.support.v4.os.ResultReceiver.b = b 9 | c android.support.v4.os.ResultReceiver.c = c 10 | c androidx.activity.ComponentActivity.1 = C00001 11 | c androidx.activity.ComponentActivity.2 = C04462 12 | c androidx.activity.ComponentActivity.3 = C04473 13 | c androidx.activity.R = R 14 | c androidx.appcompat.R = R 15 | c androidx.appcompat.app.ActionBarDrawerToggle.1 = C00011 16 | c androidx.appcompat.app.AlertController.1 = C00021 17 | c androidx.appcompat.app.AlertController.2 = C03202 18 | c androidx.appcompat.app.AlertController.3 = C00033 19 | c androidx.appcompat.app.AlertController.4 = C00044 20 | c androidx.appcompat.app.AlertController.5 = C00055 21 | c androidx.appcompat.app.AlertController.AlertParams.1 = C00061 22 | c androidx.appcompat.app.AlertController.AlertParams.2 = C00072 23 | c androidx.appcompat.app.AlertController.AlertParams.3 = C00083 24 | c androidx.appcompat.app.AlertController.AlertParams.4 = C00094 25 | c androidx.appcompat.app.AppCompatDelegateImpl.1 = C00101 26 | c androidx.appcompat.app.AppCompatDelegateImpl.2 = C00112 27 | c androidx.appcompat.app.AppCompatDelegateImpl.3 = C03213 28 | c androidx.appcompat.app.AppCompatDelegateImpl.4 = C03224 29 | c androidx.appcompat.app.AppCompatDelegateImpl.5 = C03235 30 | c androidx.appcompat.app.AppCompatDelegateImpl.6 = C00126 31 | c androidx.appcompat.app.AppCompatDelegateImpl.6.1 = C04481 32 | c androidx.appcompat.app.AppCompatDelegateImpl.7 = C04497 33 | c androidx.appcompat.app.AppCompatDelegateImpl.ActionModeCallbackWrapperV9.1 = C04501 34 | c androidx.appcompat.app.AppCompatDelegateImpl.AutoNightModeManager.1 = C00131 35 | c androidx.appcompat.app.AppCompatDelegateImpl.PanelFeatureState.SavedState.1 = C00141 36 | c androidx.appcompat.app.AppCompatDialog.1 = C03241 37 | c androidx.appcompat.app.ToolbarActionBar.1 = C00151 38 | c androidx.appcompat.app.ToolbarActionBar.2 = C03252 39 | c androidx.appcompat.app.WindowDecorActionBar.1 = C04511 40 | c androidx.appcompat.app.WindowDecorActionBar.2 = C04522 41 | c androidx.appcompat.app.WindowDecorActionBar.3 = C03263 42 | c androidx.appcompat.graphics.drawable.AnimatedStateListDrawableCompat.1 = C00161 43 | c androidx.appcompat.graphics.drawable.DrawableContainer.1 = C00171 44 | c androidx.appcompat.resources.R = R 45 | c androidx.appcompat.view.ViewPropertyAnimatorCompatSet.1 = C04531 46 | c androidx.appcompat.view.menu.CascadingMenuPopup.1 = C00181 47 | c androidx.appcompat.view.menu.CascadingMenuPopup.2 = C00192 48 | c androidx.appcompat.view.menu.CascadingMenuPopup.3 = C03273 49 | c androidx.appcompat.view.menu.CascadingMenuPopup.3.1 = C00201 50 | c androidx.appcompat.view.menu.MenuItemImpl.1 = C03281 51 | c androidx.appcompat.view.menu.MenuPopupHelper.1 = C00211 52 | c androidx.appcompat.view.menu.StandardMenuPopup.1 = C00221 53 | c androidx.appcompat.view.menu.StandardMenuPopup.2 = C00232 54 | c androidx.appcompat.widget.AbsActionBarView.1 = C00241 55 | c androidx.appcompat.widget.ActionBarContextView.1 = C00251 56 | c androidx.appcompat.widget.ActionBarOverlayLayout.1 = C00261 57 | c androidx.appcompat.widget.ActionBarOverlayLayout.2 = C00272 58 | c androidx.appcompat.widget.ActionBarOverlayLayout.3 = C00283 59 | c androidx.appcompat.widget.ActionMenuPresenter.OverflowMenuButton.1 = C03291 60 | c androidx.appcompat.widget.ActionMenuPresenter.SavedState.1 = C00291 61 | c androidx.appcompat.widget.ActivityChooserView.1 = C00301 62 | c androidx.appcompat.widget.ActivityChooserView.2 = C00312 63 | c androidx.appcompat.widget.ActivityChooserView.3 = C00323 64 | c androidx.appcompat.widget.ActivityChooserView.4 = C03304 65 | c androidx.appcompat.widget.ActivityChooserView.5 = C00335 66 | c androidx.appcompat.widget.AppCompatDrawableManager.1 = C03311 67 | c androidx.appcompat.widget.AppCompatSpinner.1 = C03321 68 | c androidx.appcompat.widget.AppCompatSpinner.2 = C00342 69 | c androidx.appcompat.widget.AppCompatSpinner.DropdownPopup.1 = C00351 70 | c androidx.appcompat.widget.AppCompatSpinner.DropdownPopup.2 = C00362 71 | c androidx.appcompat.widget.AppCompatSpinner.DropdownPopup.3 = C00373 72 | c androidx.appcompat.widget.AppCompatSpinner.SavedState.1 = C00381 73 | c androidx.appcompat.widget.ListPopupWindow.1 = C03331 74 | c androidx.appcompat.widget.ListPopupWindow.2 = C00392 75 | c androidx.appcompat.widget.ListPopupWindow.3 = C00403 76 | c androidx.appcompat.widget.PopupMenu.1 = C03341 77 | c androidx.appcompat.widget.PopupMenu.2 = C00412 78 | c androidx.appcompat.widget.PopupMenu.3 = C03353 79 | c androidx.appcompat.widget.ScrollingTabContainerView.1 = C00421 80 | c androidx.appcompat.widget.SearchView.1 = C00431 81 | c androidx.appcompat.widget.SearchView.2 = C00442 82 | c androidx.appcompat.widget.SearchView.3 = C00453 83 | c androidx.appcompat.widget.SearchView.4 = C00464 84 | c androidx.appcompat.widget.SearchView.5 = C00475 85 | c androidx.appcompat.widget.SearchView.6 = C00486 86 | c androidx.appcompat.widget.SearchView.7 = C00497 87 | c androidx.appcompat.widget.SearchView.8 = C00508 88 | c androidx.appcompat.widget.SearchView.9 = C00519 89 | c androidx.appcompat.widget.SearchView.SavedState.1 = C00521 90 | c androidx.appcompat.widget.SearchView.SearchAutoComplete.1 = C00531 91 | c androidx.appcompat.widget.SwitchCompat.1 = C00541 92 | c androidx.appcompat.widget.Toolbar.1 = C03361 93 | c androidx.appcompat.widget.Toolbar.2 = C00552 94 | c androidx.appcompat.widget.Toolbar.3 = C00563 95 | c androidx.appcompat.widget.Toolbar.SavedState.1 = C00571 96 | c androidx.appcompat.widget.ToolbarWidgetWrapper.1 = C00581 97 | c androidx.appcompat.widget.ToolbarWidgetWrapper.2 = C04542 98 | c androidx.appcompat.widget.TooltipCompatHandler.1 = C00591 99 | c androidx.appcompat.widget.TooltipCompatHandler.2 = C00602 100 | c androidx.arch.core.R = R 101 | c androidx.arch.core.executor.ArchTaskExecutor.1 = C00611 102 | c androidx.arch.core.executor.ArchTaskExecutor.2 = C00622 103 | c androidx.arch.core.executor.DefaultTaskExecutor.1 = C00631 104 | c androidx.cardview.R = R 105 | c androidx.cardview.widget.CardView.1 = C03371 106 | c androidx.cardview.widget.CardViewApi17Impl.1 = C03381 107 | c androidx.cardview.widget.CardViewBaseImpl.1 = C03391 108 | c androidx.collection.ArrayMap.1 = C03401 109 | c androidx.collection.ArraySet.1 = C03411 110 | c androidx.constraintlayout.solver.SolverVariable.1 = C00641 111 | c androidx.constraintlayout.solver.widgets.ConstraintAnchor.1 = C00651 112 | c androidx.constraintlayout.solver.widgets.ConstraintWidget.1 = C00661 113 | c androidx.constraintlayout.solver.widgets.Guideline.1 = C00671 114 | c androidx.constraintlayout.widget.ConstraintSet.1 = C00681 115 | c androidx.constraintlayout.widget.R = R 116 | c androidx.coordinatorlayout.R = R 117 | c androidx.coordinatorlayout.widget.CoordinatorLayout.1 = C03421 118 | c androidx.coordinatorlayout.widget.CoordinatorLayout.SavedState.1 = C00691 119 | c androidx.core.R = R 120 | c androidx.core.app.ActivityCompat.1 = C00701 121 | c androidx.core.app.ActivityCompat.SharedElementCallback21Impl.1 = C03431 122 | c androidx.core.app.ActivityRecreator.1 = C00711 123 | c androidx.core.app.ActivityRecreator.2 = C00722 124 | c androidx.core.app.ActivityRecreator.3 = C00733 125 | c androidx.core.app.FrameMetricsAggregator.FrameMetricsApi24Impl.1 = C00741 126 | c androidx.core.content.pm.ShortcutManagerCompat.1 = C00751 127 | c androidx.core.content.res.ResourcesCompat.FontCallback.1 = C00761 128 | c androidx.core.content.res.ResourcesCompat.FontCallback.2 = C00772 129 | c androidx.core.graphics.TypefaceCompatBaseImpl.1 = C03441 130 | c androidx.core.graphics.TypefaceCompatBaseImpl.2 = C03452 131 | c androidx.core.hardware.fingerprint.FingerprintManagerCompat.1 = C00781 132 | c androidx.core.provider.FontsContractCompat.1 = C00791 133 | c androidx.core.provider.FontsContractCompat.2 = C03462 134 | c androidx.core.provider.FontsContractCompat.3 = C03473 135 | c androidx.core.provider.FontsContractCompat.4 = C00894 136 | c androidx.core.provider.FontsContractCompat.4.1 = C00801 137 | c androidx.core.provider.FontsContractCompat.4.2 = C00812 138 | c androidx.core.provider.FontsContractCompat.4.3 = C00823 139 | c androidx.core.provider.FontsContractCompat.4.4 = C00834 140 | c androidx.core.provider.FontsContractCompat.4.5 = C00845 141 | c androidx.core.provider.FontsContractCompat.4.6 = C00856 142 | c androidx.core.provider.FontsContractCompat.4.7 = C00867 143 | c androidx.core.provider.FontsContractCompat.4.8 = C00878 144 | c androidx.core.provider.FontsContractCompat.4.9 = C00889 145 | c androidx.core.provider.FontsContractCompat.5 = C00905 146 | c androidx.core.provider.SelfDestructiveThread.1 = C00911 147 | c androidx.core.provider.SelfDestructiveThread.2 = C00932 148 | c androidx.core.provider.SelfDestructiveThread.2.1 = C00921 149 | c androidx.core.provider.SelfDestructiveThread.3 = C00943 150 | c androidx.core.text.util.LinkifyCompat.1 = C00951 151 | c androidx.core.view.DragStartHelper.1 = C00961 152 | c androidx.core.view.DragStartHelper.2 = C00972 153 | c androidx.core.view.MenuItemCompat.1 = C00981 154 | c androidx.core.view.ViewCompat.1 = C00991 155 | c androidx.core.view.ViewCompat.2 = C01002 156 | c androidx.core.view.ViewCompat.3 = C03483 157 | c androidx.core.view.ViewCompat.4 = C03494 158 | c androidx.core.view.ViewCompat.5 = C03505 159 | c androidx.core.view.ViewPropertyAnimatorCompat.1 = C01011 160 | c androidx.core.view.ViewPropertyAnimatorCompat.2 = C01022 161 | c androidx.core.view.inputmethod.InputConnectionCompat.1 = C01031 162 | c androidx.core.view.inputmethod.InputConnectionCompat.2 = C01042 163 | c androidx.core.widget.ContentLoadingProgressBar.1 = C01051 164 | c androidx.core.widget.ContentLoadingProgressBar.2 = C01062 165 | c androidx.core.widget.NestedScrollView.SavedState.1 = C01071 166 | c androidx.cursoradapter.R = R 167 | c androidx.customview.R = R 168 | c androidx.customview.view.AbsSavedState.1 = C03511 169 | c androidx.customview.view.AbsSavedState.2 = C01082 170 | c androidx.customview.widget.ExploreByTouchHelper.1 = C03521 171 | c androidx.customview.widget.ExploreByTouchHelper.2 = C03532 172 | c androidx.customview.widget.ViewDragHelper.1 = C01091 173 | c androidx.customview.widget.ViewDragHelper.2 = C01102 174 | c androidx.drawerlayout.R = R 175 | c androidx.drawerlayout.widget.DrawerLayout.1 = C01111 176 | c androidx.drawerlayout.widget.DrawerLayout.SavedState.1 = C01121 177 | c androidx.drawerlayout.widget.DrawerLayout.ViewDragCallback.1 = C01131 178 | c androidx.fragment.R = R 179 | c androidx.fragment.app.BackStackState.1 = C01141 180 | c androidx.fragment.app.DialogFragment.1 = C01151 181 | c androidx.fragment.app.Fragment.1 = C01161 182 | c androidx.fragment.app.Fragment.2 = C04552 183 | c androidx.fragment.app.Fragment.3 = C01173 184 | c androidx.fragment.app.Fragment.4 = C03544 185 | c androidx.fragment.app.Fragment.SavedState.1 = C01181 186 | c androidx.fragment.app.FragmentManagerImpl.1 = C03551 187 | c androidx.fragment.app.FragmentManagerImpl.2 = C01192 188 | c androidx.fragment.app.FragmentManagerImpl.3 = C01213 189 | c androidx.fragment.app.FragmentManagerImpl.3.1 = C01201 190 | c androidx.fragment.app.FragmentManagerImpl.4 = C01224 191 | c androidx.fragment.app.FragmentManagerImpl.5 = C01235 192 | c androidx.fragment.app.FragmentManagerImpl.6 = C03566 193 | c androidx.fragment.app.FragmentManagerState.1 = C01241 194 | c androidx.fragment.app.FragmentManagerViewModel.1 = C03571 195 | c androidx.fragment.app.FragmentState.1 = C01251 196 | c androidx.fragment.app.FragmentTabHost.SavedState.1 = C01261 197 | c androidx.fragment.app.FragmentTransition.1 = C01271 198 | c androidx.fragment.app.FragmentTransition.2 = C01282 199 | c androidx.fragment.app.FragmentTransition.3 = C01293 200 | c androidx.fragment.app.FragmentTransition.4 = C01304 201 | c androidx.fragment.app.FragmentTransitionCompat21.1 = C01311 202 | c androidx.fragment.app.FragmentTransitionCompat21.2 = C01322 203 | c androidx.fragment.app.FragmentTransitionCompat21.3 = C01333 204 | c androidx.fragment.app.FragmentTransitionCompat21.4 = C01344 205 | c androidx.fragment.app.FragmentTransitionImpl.1 = C01351 206 | c androidx.fragment.app.FragmentTransitionImpl.2 = C01362 207 | c androidx.fragment.app.FragmentTransitionImpl.3 = C01373 208 | c androidx.fragment.app.ListFragment.1 = C01381 209 | c androidx.fragment.app.ListFragment.2 = C01392 210 | c androidx.interpolator.R = R 211 | c androidx.lifecycle.ComputableLiveData.1 = C03581 212 | c androidx.lifecycle.ComputableLiveData.2 = C01402 213 | c androidx.lifecycle.ComputableLiveData.3 = C01413 214 | c androidx.lifecycle.FullLifecycleObserverAdapter.1 = C01421 215 | c androidx.lifecycle.LifecycleRegistry.1 = C01431 216 | c androidx.lifecycle.Lifecycling.1 = C04781 217 | c androidx.lifecycle.LiveData.1 = C01441 218 | c androidx.lifecycle.R = R 219 | c androidx.lifecycle.Transformations.1 = C03591 220 | c androidx.lifecycle.Transformations.2 = C03612 221 | c androidx.lifecycle.Transformations.2.1 = C03601 222 | c androidx.lifecycle.livedata.R = R 223 | c androidx.lifecycle.livedata.core.R = R 224 | c androidx.lifecycle.viewmodel.R = R 225 | c androidx.loader.R = R 226 | c androidx.loader.app.LoaderManagerImpl.LoaderViewModel.1 = C03621 227 | c androidx.loader.content.ModernAsyncTask.1 = C01451 228 | c androidx.loader.content.ModernAsyncTask.2 = C03632 229 | c androidx.loader.content.ModernAsyncTask.3 = C01463 230 | c androidx.loader.content.ModernAsyncTask.4 = C01474 231 | c androidx.recyclerview.R = R 232 | c androidx.recyclerview.widget.AsyncListDiffer.1 = C01491 233 | c androidx.recyclerview.widget.AsyncListDiffer.1.1 = C03641 234 | c androidx.recyclerview.widget.AsyncListDiffer.1.2 = C01482 235 | c androidx.recyclerview.widget.AsyncListUtil.1 = C03651 236 | c androidx.recyclerview.widget.AsyncListUtil.2 = C03662 237 | c androidx.recyclerview.widget.DefaultItemAnimator.1 = C01501 238 | c androidx.recyclerview.widget.DefaultItemAnimator.2 = C01512 239 | c androidx.recyclerview.widget.DefaultItemAnimator.3 = C01523 240 | c androidx.recyclerview.widget.DefaultItemAnimator.4 = C01534 241 | c androidx.recyclerview.widget.DefaultItemAnimator.5 = C01545 242 | c androidx.recyclerview.widget.DefaultItemAnimator.6 = C01556 243 | c androidx.recyclerview.widget.DefaultItemAnimator.7 = C01567 244 | c androidx.recyclerview.widget.DefaultItemAnimator.8 = C01578 245 | c androidx.recyclerview.widget.DiffUtil.1 = C01581 246 | c androidx.recyclerview.widget.FastScroller.1 = C01591 247 | c androidx.recyclerview.widget.FastScroller.2 = C03672 248 | c androidx.recyclerview.widget.GapWorker.1 = C01601 249 | c androidx.recyclerview.widget.ItemTouchHelper.1 = C01611 250 | c androidx.recyclerview.widget.ItemTouchHelper.2 = C03682 251 | c androidx.recyclerview.widget.ItemTouchHelper.3 = C03693 252 | c androidx.recyclerview.widget.ItemTouchHelper.4 = C01624 253 | c androidx.recyclerview.widget.ItemTouchHelper.5 = C03705 254 | c androidx.recyclerview.widget.ItemTouchHelper.Callback.1 = C01631 255 | c androidx.recyclerview.widget.ItemTouchHelper.Callback.2 = C01642 256 | c androidx.recyclerview.widget.ItemTouchHelper.RecoverAnimation.1 = C01651 257 | c androidx.recyclerview.widget.LinearLayoutManager.SavedState.1 = C01661 258 | c androidx.recyclerview.widget.ListAdapter.1 = C03711 259 | c androidx.recyclerview.widget.MessageThreadUtil.1 = C03721 260 | c androidx.recyclerview.widget.MessageThreadUtil.1.1 = C01671 261 | c androidx.recyclerview.widget.MessageThreadUtil.2 = C03732 262 | c androidx.recyclerview.widget.MessageThreadUtil.2.1 = C01681 263 | c androidx.recyclerview.widget.OrientationHelper.1 = C03741 264 | c androidx.recyclerview.widget.OrientationHelper.2 = C03752 265 | c androidx.recyclerview.widget.PagerSnapHelper.1 = C04561 266 | c androidx.recyclerview.widget.RecyclerView.1 = C01691 267 | c androidx.recyclerview.widget.RecyclerView.2 = C01702 268 | c androidx.recyclerview.widget.RecyclerView.3 = C01713 269 | c androidx.recyclerview.widget.RecyclerView.4 = C03764 270 | c androidx.recyclerview.widget.RecyclerView.5 = C03775 271 | c androidx.recyclerview.widget.RecyclerView.6 = C03786 272 | c androidx.recyclerview.widget.RecyclerView.LayoutManager.1 = C03791 273 | c androidx.recyclerview.widget.RecyclerView.LayoutManager.2 = C03802 274 | c androidx.recyclerview.widget.RecyclerView.SavedState.1 = C01721 275 | c androidx.recyclerview.widget.SnapHelper.1 = C03811 276 | c androidx.recyclerview.widget.SnapHelper.2 = C04572 277 | c androidx.recyclerview.widget.StaggeredGridLayoutManager.1 = C01731 278 | c androidx.recyclerview.widget.StaggeredGridLayoutManager.LazySpanLookup.FullSpanItem.1 = C01741 279 | c androidx.recyclerview.widget.StaggeredGridLayoutManager.SavedState.1 = C01751 280 | c androidx.savedstate.R = R 281 | c androidx.savedstate.SavedStateRegistry.1 = C04791 282 | c androidx.transition.ChangeBounds.1 = C01761 283 | c androidx.transition.ChangeBounds.2 = C01772 284 | c androidx.transition.ChangeBounds.3 = C01783 285 | c androidx.transition.ChangeBounds.4 = C01794 286 | c androidx.transition.ChangeBounds.5 = C01805 287 | c androidx.transition.ChangeBounds.6 = C01816 288 | c androidx.transition.ChangeBounds.7 = C01827 289 | c androidx.transition.ChangeBounds.8 = C01838 290 | c androidx.transition.ChangeBounds.9 = C04589 291 | c androidx.transition.ChangeClipBounds.1 = C01841 292 | c androidx.transition.ChangeImageTransform.1 = C01851 293 | c androidx.transition.ChangeImageTransform.2 = C01862 294 | c androidx.transition.ChangeImageTransform.3 = C01873 295 | c androidx.transition.ChangeTransform.1 = C01881 296 | c androidx.transition.ChangeTransform.2 = C01892 297 | c androidx.transition.ChangeTransform.3 = C01903 298 | c androidx.transition.Fade.1 = C04591 299 | c androidx.transition.FragmentTransitionSupport.1 = C03821 300 | c androidx.transition.FragmentTransitionSupport.2 = C03832 301 | c androidx.transition.FragmentTransitionSupport.3 = C04603 302 | c androidx.transition.FragmentTransitionSupport.4 = C03844 303 | c androidx.transition.GhostViewPort.1 = C01911 304 | c androidx.transition.MatrixUtils.1 = C01921 305 | c androidx.transition.R = R 306 | c androidx.transition.Slide.1 = C04611 307 | c androidx.transition.Slide.2 = C04622 308 | c androidx.transition.Slide.3 = C04633 309 | c androidx.transition.Slide.4 = C04644 310 | c androidx.transition.Slide.5 = C04655 311 | c androidx.transition.Slide.6 = C04666 312 | c androidx.transition.Transition.1 = C03851 313 | c androidx.transition.Transition.2 = C01932 314 | c androidx.transition.Transition.3 = C01943 315 | c androidx.transition.TransitionManager.MultiListener.1 = C04671 316 | c androidx.transition.TransitionSet.1 = C04681 317 | c androidx.transition.ViewGroupUtilsApi14.1 = C01951 318 | c androidx.transition.ViewUtils.1 = C01961 319 | c androidx.transition.ViewUtils.2 = C01972 320 | c androidx.transition.Visibility.1 = C04691 321 | c androidx.vectordrawable.R = R 322 | c androidx.vectordrawable.animated.R = R 323 | c androidx.vectordrawable.graphics.drawable.Animatable2Compat.AnimationCallback.1 = C01981 324 | c androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat.1 = C01991 325 | c androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat.2 = C02002 326 | c androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.1 = C02011 327 | c androidx.versionedparcelable.ParcelImpl.1 = C02021 328 | c androidx.versionedparcelable.R = R 329 | c androidx.versionedparcelable.VersionedParcel.1 = C02031 330 | c androidx.versionedparcelable.VersionedParcelStream.1 = C02041 331 | c androidx.viewpager.R = R 332 | c androidx.viewpager.widget.PagerTabStrip.1 = C02051 333 | c androidx.viewpager.widget.PagerTabStrip.2 = C02062 334 | c androidx.viewpager.widget.ViewPager.1 = C02071 335 | c androidx.viewpager.widget.ViewPager.2 = C02082 336 | c androidx.viewpager.widget.ViewPager.3 = C02093 337 | c androidx.viewpager.widget.ViewPager.4 = C03864 338 | c androidx.viewpager.widget.ViewPager.SavedState.1 = C02101 339 | c androidx.viewpager2.R = R 340 | c androidx.viewpager2.adapter.FragmentStateAdapter.1 = C02111 341 | c androidx.viewpager2.adapter.FragmentStateAdapter.2 = C04702 342 | c androidx.viewpager2.adapter.FragmentStateAdapter.3 = C03873 343 | c androidx.viewpager2.adapter.FragmentStateAdapter.4 = C02124 344 | c androidx.viewpager2.adapter.FragmentStateAdapter.5 = C04715 345 | c androidx.viewpager2.adapter.FragmentStateAdapter.FragmentMaxLifecycleEnforcer.1 = C03881 346 | c androidx.viewpager2.adapter.FragmentStateAdapter.FragmentMaxLifecycleEnforcer.2 = C04722 347 | c androidx.viewpager2.adapter.FragmentStateAdapter.FragmentMaxLifecycleEnforcer.3 = C04733 348 | c androidx.viewpager2.widget.AnimateLayoutChangeDetector.1 = C02131 349 | c androidx.viewpager2.widget.ViewPager2.1 = C04741 350 | c androidx.viewpager2.widget.ViewPager2.2 = C03892 351 | c androidx.viewpager2.widget.ViewPager2.3 = C03903 352 | c androidx.viewpager2.widget.ViewPager2.4 = C03914 353 | c androidx.viewpager2.widget.ViewPager2.PageAwareAccessibilityProvider.1 = C03921 354 | c androidx.viewpager2.widget.ViewPager2.PageAwareAccessibilityProvider.2 = C03932 355 | c androidx.viewpager2.widget.ViewPager2.PageAwareAccessibilityProvider.3 = C04753 356 | c androidx.viewpager2.widget.ViewPager2.SavedState.1 = C02141 357 | c b.a.a.a.a = a 358 | c c.a.a.a = a 359 | c c.a.a.b = b 360 | c c.a.a.c = c 361 | c c.a.a.d = d 362 | c c.a.a.e = e 363 | c c.a.a.f = f 364 | c c.a.a.g = g 365 | c c.a.a.h = h 366 | c c.a.a.i = i 367 | c c.a.a.i.a = a 368 | c c.a.a.j = j 369 | c c.a.a.k = k 370 | c c.a.a.l = l 371 | c c.a.a.m = m 372 | c com.google.android.material.R = R 373 | c com.google.android.material.appbar.AppBarLayout.1 = C03941 374 | c com.google.android.material.appbar.AppBarLayout.2 = C02152 375 | c com.google.android.material.appbar.AppBarLayout.BaseBehavior.1 = C02161 376 | c com.google.android.material.appbar.AppBarLayout.BaseBehavior.SavedState.1 = C02171 377 | c com.google.android.material.appbar.CollapsingToolbarLayout.1 = C03951 378 | c com.google.android.material.appbar.CollapsingToolbarLayout.2 = C02182 379 | c com.google.android.material.badge.BadgeDrawable.SavedState.1 = C02191 380 | c com.google.android.material.behavior.HideBottomViewOnScrollBehavior.1 = C02201 381 | c com.google.android.material.behavior.SwipeDismissBehavior.1 = C03961 382 | c com.google.android.material.bottomappbar.BottomAppBar.1 = C02211 383 | c com.google.android.material.bottomappbar.BottomAppBar.2 = C03972 384 | c com.google.android.material.bottomappbar.BottomAppBar.3 = C03983 385 | c com.google.android.material.bottomappbar.BottomAppBar.4 = C02224 386 | c com.google.android.material.bottomappbar.BottomAppBar.5 = C04005 387 | c com.google.android.material.bottomappbar.BottomAppBar.5.1 = C03991 388 | c com.google.android.material.bottomappbar.BottomAppBar.6 = C02236 389 | c com.google.android.material.bottomappbar.BottomAppBar.7 = C02247 390 | c com.google.android.material.bottomappbar.BottomAppBar.8 = C02258 391 | c com.google.android.material.bottomappbar.BottomAppBar.Behavior.1 = C02261 392 | c com.google.android.material.bottomappbar.BottomAppBar.SavedState.1 = C02271 393 | c com.google.android.material.bottomnavigation.BottomNavigationItemView.1 = C02281 394 | c com.google.android.material.bottomnavigation.BottomNavigationMenuView.1 = C02291 395 | c com.google.android.material.bottomnavigation.BottomNavigationPresenter.SavedState.1 = C02301 396 | c com.google.android.material.bottomnavigation.BottomNavigationView.1 = C04011 397 | c com.google.android.material.bottomnavigation.BottomNavigationView.2 = C04022 398 | c com.google.android.material.bottomnavigation.BottomNavigationView.SavedState.1 = C02311 399 | c com.google.android.material.bottomsheet.BottomSheetBehavior.1 = C02321 400 | c com.google.android.material.bottomsheet.BottomSheetBehavior.2 = C02332 401 | c com.google.android.material.bottomsheet.BottomSheetBehavior.3 = C04033 402 | c com.google.android.material.bottomsheet.BottomSheetBehavior.4 = C04044 403 | c com.google.android.material.bottomsheet.BottomSheetBehavior.SavedState.1 = C02341 404 | c com.google.android.material.bottomsheet.BottomSheetDialog.1 = C02351 405 | c com.google.android.material.bottomsheet.BottomSheetDialog.2 = C04052 406 | c com.google.android.material.bottomsheet.BottomSheetDialog.3 = C02363 407 | c com.google.android.material.bottomsheet.BottomSheetDialog.4 = C04064 408 | c com.google.android.material.bottomsheet.BottomSheetDialogFragment.1 = C02371 409 | c com.google.android.material.button.MaterialButtonToggleGroup.1 = C02381 410 | c com.google.android.material.card.MaterialCardViewHelper.1 = C02391 411 | c com.google.android.material.chip.Chip.1 = C04071 412 | c com.google.android.material.chip.Chip.2 = C02402 413 | c com.google.android.material.chip.ChipGroup.1 = C02411 414 | c com.google.android.material.circularreveal.CircularRevealCompat.1 = C02421 415 | c com.google.android.material.circularreveal.CircularRevealWidget.1 = C02431 416 | c com.google.android.material.datepicker.CalendarConstraints.1 = C02441 417 | c com.google.android.material.datepicker.DateValidatorPointForward.1 = C02451 418 | c com.google.android.material.datepicker.MaterialCalendar.1 = C04081 419 | c com.google.android.material.datepicker.MaterialCalendar.2 = C04802 420 | c com.google.android.material.datepicker.MaterialCalendar.3 = C04093 421 | c com.google.android.material.datepicker.MaterialCalendar.4 = C04104 422 | c com.google.android.material.datepicker.MaterialCalendar.5 = C04115 423 | c com.google.android.material.datepicker.MaterialCalendar.6 = C04126 424 | c com.google.android.material.datepicker.MaterialCalendar.7 = C02467 425 | c com.google.android.material.datepicker.MaterialCalendar.8 = C02478 426 | c com.google.android.material.datepicker.MaterialCalendar.9 = C02489 427 | c com.google.android.material.datepicker.MaterialCalendarGridView.1 = C04131 428 | c com.google.android.material.datepicker.MaterialDatePicker.1 = C02491 429 | c com.google.android.material.datepicker.MaterialDatePicker.2 = C02502 430 | c com.google.android.material.datepicker.MaterialDatePicker.3 = C04143 431 | c com.google.android.material.datepicker.MaterialDatePicker.4 = C02514 432 | c com.google.android.material.datepicker.MaterialTextInputPicker.1 = C04151 433 | c com.google.android.material.datepicker.Month.1 = C02521 434 | c com.google.android.material.datepicker.MonthsPagerAdapter.1 = C02531 435 | c com.google.android.material.datepicker.RangeDateSelector.1 = C04161 436 | c com.google.android.material.datepicker.RangeDateSelector.2 = C04172 437 | c com.google.android.material.datepicker.RangeDateSelector.3 = C02543 438 | c com.google.android.material.datepicker.SingleDateSelector.1 = C04181 439 | c com.google.android.material.datepicker.SingleDateSelector.2 = C02552 440 | c com.google.android.material.datepicker.SmoothCalendarLayoutManager.1 = C04761 441 | c com.google.android.material.datepicker.YearGridAdapter.1 = C02561 442 | c com.google.android.material.floatingactionbutton.BorderDrawable.1 = C02571 443 | c com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.1 = C04191 444 | c com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.2 = C04202 445 | c com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.3 = C02583 446 | c com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.4 = C02594 447 | c com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.5 = C02605 448 | c com.google.android.material.floatingactionbutton.FloatingActionButton.1 = C04211 449 | c com.google.android.material.floatingactionbutton.FloatingActionButtonImpl.1 = C02611 450 | c com.google.android.material.floatingactionbutton.FloatingActionButtonImpl.2 = C02622 451 | c com.google.android.material.floatingactionbutton.FloatingActionButtonImpl.3 = C04223 452 | c com.google.android.material.floatingactionbutton.FloatingActionButtonImpl.4 = C02634 453 | c com.google.android.material.floatingactionbutton.FloatingActionButtonImpl.5 = C02645 454 | c com.google.android.material.internal.CheckableImageButton.1 = C04231 455 | c com.google.android.material.internal.CheckableImageButton.SavedState.1 = C02651 456 | c com.google.android.material.internal.CollapsingTextHelper.1 = C04241 457 | c com.google.android.material.internal.CollapsingTextHelper.2 = C04252 458 | c com.google.android.material.internal.NavigationMenuItemView.1 = C04261 459 | c com.google.android.material.internal.NavigationMenuPresenter.1 = C02661 460 | c com.google.android.material.internal.ParcelableSparseArray.1 = C02671 461 | c com.google.android.material.internal.ParcelableSparseBooleanArray.1 = C02681 462 | c com.google.android.material.internal.ParcelableSparseIntArray.1 = C02691 463 | c com.google.android.material.internal.ScrimInsetsFrameLayout.1 = C04271 464 | c com.google.android.material.internal.StateListAnimator.1 = C02701 465 | c com.google.android.material.internal.TextDrawableHelper.1 = C04281 466 | c com.google.android.material.internal.TextScale.1 = C02711 467 | c com.google.android.material.internal.ViewUtils.1 = C02721 468 | c com.google.android.material.internal.ViewUtils.2 = C04292 469 | c com.google.android.material.internal.ViewUtils.3 = C02733 470 | c com.google.android.material.navigation.NavigationView.1 = C04301 471 | c com.google.android.material.navigation.NavigationView.2 = C02742 472 | c com.google.android.material.navigation.NavigationView.SavedState.1 = C02751 473 | c com.google.android.material.resources.TextAppearance.1 = C04311 474 | c com.google.android.material.resources.TextAppearance.2 = C04322 475 | c com.google.android.material.ripple.RippleDrawableCompat.1 = C02761 476 | c com.google.android.material.shape.InterpolateOnScrollPositionChangeHelper.1 = C02771 477 | c com.google.android.material.shape.MaterialShapeDrawable.1 = C04331 478 | c com.google.android.material.shape.MaterialShapeDrawable.2 = C04342 479 | c com.google.android.material.shape.ShapeAppearanceModel.1 = C02781 480 | c com.google.android.material.shape.ShapePath.1 = C04351 481 | c com.google.android.material.snackbar.BaseTransientBottomBar.1 = C02791 482 | c com.google.android.material.snackbar.BaseTransientBottomBar.2 = C02802 483 | c com.google.android.material.snackbar.BaseTransientBottomBar.3 = C04363 484 | c com.google.android.material.snackbar.BaseTransientBottomBar.4 = C04374 485 | c com.google.android.material.snackbar.BaseTransientBottomBar.5 = C04385 486 | c com.google.android.material.snackbar.BaseTransientBottomBar.6 = C04396 487 | c com.google.android.material.snackbar.BaseTransientBottomBar.6.1 = C02811 488 | c com.google.android.material.snackbar.BaseTransientBottomBar.7 = C04407 489 | c com.google.android.material.snackbar.BaseTransientBottomBar.8 = C04418 490 | c com.google.android.material.snackbar.BaseTransientBottomBar.9 = C02829 491 | c com.google.android.material.snackbar.BaseTransientBottomBar.SnackbarBaseLayout.1 = C02831 492 | c com.google.android.material.snackbar.Snackbar.1 = C02841 493 | c com.google.android.material.snackbar.SnackbarManager.1 = C02851 494 | c com.google.android.material.stateful.ExtendableSavedState.1 = C02861 495 | c com.google.android.material.tabs.TabLayout.1 = C02871 496 | c com.google.android.material.tabs.TabLayout.SlidingTabIndicator.1 = C02881 497 | c com.google.android.material.tabs.TabLayout.SlidingTabIndicator.2 = C02892 498 | c com.google.android.material.tabs.TabLayout.TabView.1 = C02901 499 | c com.google.android.material.textfield.ClearTextEndIconDelegate.1 = C02911 500 | c com.google.android.material.textfield.ClearTextEndIconDelegate.2 = C04422 501 | c com.google.android.material.textfield.ClearTextEndIconDelegate.3 = C02923 502 | c com.google.android.material.textfield.ClearTextEndIconDelegate.4 = C02934 503 | c com.google.android.material.textfield.ClearTextEndIconDelegate.5 = C02945 504 | c com.google.android.material.textfield.ClearTextEndIconDelegate.6 = C02956 505 | c com.google.android.material.textfield.ClearTextEndIconDelegate.7 = C02967 506 | c com.google.android.material.textfield.DropdownMenuEndIconDelegate.1 = C02981 507 | c com.google.android.material.textfield.DropdownMenuEndIconDelegate.1.1 = C02971 508 | c com.google.android.material.textfield.DropdownMenuEndIconDelegate.2 = C04772 509 | c com.google.android.material.textfield.DropdownMenuEndIconDelegate.3 = C04433 510 | c com.google.android.material.textfield.DropdownMenuEndIconDelegate.4 = C02994 511 | c com.google.android.material.textfield.DropdownMenuEndIconDelegate.5 = C03005 512 | c com.google.android.material.textfield.DropdownMenuEndIconDelegate.6 = C03016 513 | c com.google.android.material.textfield.DropdownMenuEndIconDelegate.7 = C03027 514 | c com.google.android.material.textfield.DropdownMenuEndIconDelegate.8 = C03038 515 | c com.google.android.material.textfield.DropdownMenuEndIconDelegate.9 = C03049 516 | c com.google.android.material.textfield.IndicatorViewController.1 = C03051 517 | c com.google.android.material.textfield.PasswordToggleEndIconDelegate.1 = C03061 518 | c com.google.android.material.textfield.PasswordToggleEndIconDelegate.2 = C04442 519 | c com.google.android.material.textfield.PasswordToggleEndIconDelegate.3 = C04453 520 | c com.google.android.material.textfield.PasswordToggleEndIconDelegate.4 = C03074 521 | c com.google.android.material.textfield.TextInputLayout.1 = C03081 522 | c com.google.android.material.textfield.TextInputLayout.2 = C03092 523 | c com.google.android.material.textfield.TextInputLayout.3 = C03103 524 | c com.google.android.material.textfield.TextInputLayout.4 = C03114 525 | c com.google.android.material.textfield.TextInputLayout.SavedState.1 = C03121 526 | c com.google.android.material.transformation.ExpandableBehavior.1 = C03131 527 | c com.google.android.material.transformation.ExpandableTransformationBehavior.1 = C03141 528 | c com.google.android.material.transformation.FabTransformationBehavior.1 = C03151 529 | c com.google.android.material.transformation.FabTransformationBehavior.2 = C03162 530 | c com.google.android.material.transformation.FabTransformationBehavior.3 = C03173 531 | c com.google.android.material.transformation.FabTransformationBehavior.4 = C03184 532 | c com.google.android.material.transformation.FabTransformationScrimBehavior.1 = C03191 533 | c io.alcatraz.noapplet.MainActivity.a = a 534 | c io.alcatraz.noapplet.MainActivity.a.a = a 535 | c io.alcatraz.noapplet.MainActivity.b = b 536 | c io.alcatraz.noapplet.MainActivity.b.a = a 537 | f a.a.a.a.a.a.a.a:Landroid/os/IBinder; = f72a 538 | f a.a.a.b.a.a.a.a:Landroid/os/IBinder; = f73a 539 | f android.support.v4.os.ResultReceiver.a:Landroid/os/Handler; = f3a 540 | f android.support.v4.os.ResultReceiver.b.a:Landroid/support/v4/os/ResultReceiver; = f78a 541 | f android.support.v4.os.ResultReceiver.b:La/a/a/b/a; = f4b 542 | f android.support.v4.os.ResultReceiver.c.a:I = f0a 543 | f android.support.v4.os.ResultReceiver.c.b:Landroid/os/Bundle; = f1b 544 | f android.support.v4.os.ResultReceiver.c.c:Landroid/support/v4/os/ResultReceiver; = f2c 545 | f androidx.appcompat.app.AlertDialog.Builder.P:Landroidx/appcompat/app/AlertController$AlertParams; = f5P 546 | f androidx.appcompat.app.AppCompatDelegateImpl.PanelFeatureState.x:I = f6x 547 | f androidx.appcompat.app.AppCompatDelegateImpl.PanelFeatureState.y:I = f7y 548 | f androidx.constraintlayout.solver.widgets.ConstraintAnchor.1.$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type:[I = f8x4c44d048 549 | f androidx.constraintlayout.solver.widgets.ConstraintWidget.1.$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type:[I = f9x4c44d048 550 | f androidx.constraintlayout.solver.widgets.ConstraintWidget.1.$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintWidget$DimensionBehaviour:[I = f10xdde91696 551 | f androidx.constraintlayout.solver.widgets.Guideline.1.$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type:[I = f11x4c44d048 552 | f androidx.constraintlayout.solver.widgets.Rectangle.x:I = f12x 553 | f androidx.constraintlayout.solver.widgets.Rectangle.y:I = f13y 554 | f androidx.recyclerview.widget.DiffUtil.Snake.x:I = f14x 555 | f androidx.recyclerview.widget.DiffUtil.Snake.y:I = f15y 556 | f c.a.a.a.a:Lio/alcatraz/noapplet/ActiveShareActivity; = f16a 557 | f c.a.a.b.a:Lio/alcatraz/noapplet/ActiveShareActivity; = f74a 558 | f c.a.a.c.a:Landroid/graphics/Bitmap; = f17a 559 | f c.a.a.c.b:Lc/a/a/d; = f18b 560 | f c.a.a.d.a:Lio/alcatraz/noapplet/ActiveShareActivity; = f75a 561 | f c.a.a.f.a:Landroid/content/Context; = f19a 562 | f c.a.a.f.b:[I = f20b 563 | f c.a.a.f.c:I = f21c 564 | f c.a.a.g.a:Lc/a/a/i; = f22a 565 | f c.a.a.h.a:Ljava/lang/String; = f23a 566 | f c.a.a.h.b:Landroid/app/Activity; = f24b 567 | f c.a.a.h.c:Lc/a/a/i; = f25c 568 | f c.a.a.i.a:Lc/a/a/i$a; = f27a 569 | f c.a.a.i.b:Landroidx/appcompat/app/AlertDialog; = f28b 570 | f c.a.a.i.c:Lc/a/a/i; = f26c 571 | f c.a.a.j.a:Ljava/lang/String; = f29a 572 | f c.a.a.j.b:Lc/a/a/e; = f30b 573 | f c.a.a.k.a:Lio/alcatraz/noapplet/XposedAppletActivity; = f31a 574 | f c.a.a.l.a:Lio/alcatraz/noapplet/XposedAppletActivity; = f32a 575 | f c.a.a.m.a:Lio/alcatraz/noapplet/XposedAppletActivity; = f33a 576 | f com.google.android.material.R.style.ShapeAppearanceOverlay_MaterialComponents_ExtendedFloatingActionButton:I = f34x7c26e1f5 577 | f com.google.android.material.R.style.ShapeAppearanceOverlay_MaterialComponents_MaterialCalendar_Window_Fullscreen:I = f35x121af39e 578 | f com.google.android.material.R.style.ShapeAppearanceOverlay_MaterialComponents_TextInputLayout_FilledBox:I = f36xaf44c2a3 579 | f com.google.android.material.R.style.Test_ShapeAppearanceOverlay_MaterialComponents_MaterialCalendar_Day:I = f37x774f7bdd 580 | f com.google.android.material.R.style.ThemeOverlay_MaterialComponents_AutoCompleteTextView_FilledBox_Dense:I = f38x3194dd0e 581 | f com.google.android.material.R.style.ThemeOverlay_MaterialComponents_AutoCompleteTextView_OutlinedBox_Dense:I = f39x2469ccce 582 | f com.google.android.material.R.style.ThemeOverlay_MaterialComponents_MaterialAlertDialog_Picker_Date_Calendar:I = f40x8886184a 583 | f com.google.android.material.R.style.ThemeOverlay_MaterialComponents_MaterialAlertDialog_Picker_Date_Header_Text:I = f41x9b335733 584 | f com.google.android.material.R.style.ThemeOverlay_MaterialComponents_MaterialAlertDialog_Picker_Date_Header_Text_Day:I = f42x96aac070 585 | f com.google.android.material.R.style.ThemeOverlay_MaterialComponents_MaterialAlertDialog_Picker_Date_Spinner:I = f43x7cc1c38d 586 | f com.google.android.material.R.style.ThemeOverlay_MaterialComponents_TextInputEditText_FilledBox_Dense:I = f44xb44864b4 587 | f com.google.android.material.R.style.ThemeOverlay_MaterialComponents_TextInputEditText_OutlinedBox_Dense:I = f45xc85a02f4 588 | f com.google.android.material.R.style.Widget_MaterialComponents_MaterialCalendar_HeaderSelection_Fullscreen:I = f46x77b19d4e 589 | f com.google.android.material.R.style.Widget_MaterialComponents_TextInputLayout_FilledBox_Dense_ExposedDropdownMenu:I = f47x5c070b9b 590 | f com.google.android.material.R.style.Widget_MaterialComponents_TextInputLayout_FilledBox_ExposedDropdownMenu:I = f48x22b53d1b 591 | f com.google.android.material.R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox_Dense_ExposedDropdownMenu:I = f49xc3fd845b 592 | f com.google.android.material.R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox_ExposedDropdownMenu:I = f50x802545db 593 | f com.google.android.material.shape.ShapePath.PathLineOperation.x:F = f76x 594 | f com.google.android.material.shape.ShapePath.PathLineOperation.y:F = f77y 595 | f io.alcatraz.noapplet.ActiveShareActivity.a:Landroid/net/Uri; = f79a 596 | f io.alcatraz.noapplet.ActiveShareActivity.b:Ljava/lang/String; = f80b 597 | f io.alcatraz.noapplet.ActiveShareActivity.c:Landroid/content/Intent; = f81c 598 | f io.alcatraz.noapplet.ActiveShareActivity.d:Ljava/lang/String; = f82d 599 | f io.alcatraz.noapplet.ActiveShareActivity.e:Ljava/lang/String; = f83e 600 | f io.alcatraz.noapplet.ActiveShareActivity.f:Ljava/lang/String; = f84f 601 | f io.alcatraz.noapplet.ActiveShareActivity.g:Ljava/lang/String; = f85g 602 | f io.alcatraz.noapplet.ActiveShareActivity.h:Ljava/lang/String; = f86h 603 | f io.alcatraz.noapplet.ActiveShareActivity.i:Z = f87i 604 | f io.alcatraz.noapplet.ActiveShareActivity.j:Z = f88j 605 | f io.alcatraz.noapplet.ActiveShareActivity.k:Z = f89k 606 | f io.alcatraz.noapplet.ActiveShareActivity.l:Landroid/widget/ImageView; = f90l 607 | f io.alcatraz.noapplet.ActiveShareActivity.m:Landroidx/appcompat/widget/Toolbar; = f91m 608 | f io.alcatraz.noapplet.ActiveShareActivity.n:Landroid/widget/TextView; = f92n 609 | f io.alcatraz.noapplet.ActiveShareActivity.o:Landroid/widget/TextView; = f93o 610 | f io.alcatraz.noapplet.ActiveShareActivity.p:Landroid/widget/TextView; = f94p 611 | f io.alcatraz.noapplet.ActiveShareActivity.q:Landroid/widget/TextView; = f95q 612 | f io.alcatraz.noapplet.ActiveShareActivity.r:Landroid/widget/ImageView; = f96r 613 | f io.alcatraz.noapplet.ActiveShareActivity.s:Lcom/google/android/material/floatingactionbutton/FloatingActionButton; = f97s 614 | f io.alcatraz.noapplet.MainActivity.a.a.a:Lio/alcatraz/noapplet/MainActivity$a; = f51a 615 | f io.alcatraz.noapplet.MainActivity.a.a:Lio/alcatraz/noapplet/MainActivity; = f52a 616 | f io.alcatraz.noapplet.MainActivity.a:Landroid/widget/RelativeLayout; = f98a 617 | f io.alcatraz.noapplet.MainActivity.b.a.a:Lio/alcatraz/noapplet/MainActivity$b; = f53a 618 | f io.alcatraz.noapplet.MainActivity.b.a:Lio/alcatraz/noapplet/MainActivity; = f54a 619 | f io.alcatraz.noapplet.MainActivity.b:Landroid/os/Vibrator; = f99b 620 | f io.alcatraz.noapplet.MainActivity.c:Lc/a/a/f; = f100c 621 | f io.alcatraz.noapplet.R$style.ShapeAppearanceOverlay_MaterialComponents_ExtendedFloatingActionButton:I = f55x7c26e1f5 622 | f io.alcatraz.noapplet.R$style.ShapeAppearanceOverlay_MaterialComponents_MaterialCalendar_Window_Fullscreen:I = f56x121af39e 623 | f io.alcatraz.noapplet.R$style.ShapeAppearanceOverlay_MaterialComponents_TextInputLayout_FilledBox:I = f57xaf44c2a3 624 | f io.alcatraz.noapplet.R$style.Test_ShapeAppearanceOverlay_MaterialComponents_MaterialCalendar_Day:I = f58x774f7bdd 625 | f io.alcatraz.noapplet.R$style.ThemeOverlay_MaterialComponents_AutoCompleteTextView_FilledBox_Dense:I = f59x3194dd0e 626 | f io.alcatraz.noapplet.R$style.ThemeOverlay_MaterialComponents_AutoCompleteTextView_OutlinedBox_Dense:I = f60x2469ccce 627 | f io.alcatraz.noapplet.R$style.ThemeOverlay_MaterialComponents_MaterialAlertDialog_Picker_Date_Calendar:I = f61x8886184a 628 | f io.alcatraz.noapplet.R$style.ThemeOverlay_MaterialComponents_MaterialAlertDialog_Picker_Date_Header_Text:I = f62x9b335733 629 | f io.alcatraz.noapplet.R$style.ThemeOverlay_MaterialComponents_MaterialAlertDialog_Picker_Date_Header_Text_Day:I = f63x96aac070 630 | f io.alcatraz.noapplet.R$style.ThemeOverlay_MaterialComponents_MaterialAlertDialog_Picker_Date_Spinner:I = f64x7cc1c38d 631 | f io.alcatraz.noapplet.R$style.ThemeOverlay_MaterialComponents_TextInputEditText_FilledBox_Dense:I = f65xb44864b4 632 | f io.alcatraz.noapplet.R$style.ThemeOverlay_MaterialComponents_TextInputEditText_OutlinedBox_Dense:I = f66xc85a02f4 633 | f io.alcatraz.noapplet.R$style.Widget_MaterialComponents_MaterialCalendar_HeaderSelection_Fullscreen:I = f67x77b19d4e 634 | f io.alcatraz.noapplet.R$style.Widget_MaterialComponents_TextInputLayout_FilledBox_Dense_ExposedDropdownMenu:I = f68x5c070b9b 635 | f io.alcatraz.noapplet.R$style.Widget_MaterialComponents_TextInputLayout_FilledBox_ExposedDropdownMenu:I = f69x22b53d1b 636 | f io.alcatraz.noapplet.R$style.Widget_MaterialComponents_TextInputLayout_OutlinedBox_Dense_ExposedDropdownMenu:I = f70xc3fd845b 637 | f io.alcatraz.noapplet.R$style.Widget_MaterialComponents_TextInputLayout_OutlinedBox_ExposedDropdownMenu:I = f71x802545db 638 | f io.alcatraz.noapplet.XposedAppletActivity.a:Landroid/content/Intent; = f101a 639 | f io.alcatraz.noapplet.XposedAppletActivity.b:Ljava/lang/String; = f102b 640 | f io.alcatraz.noapplet.XposedAppletActivity.c:Ljava/lang/String; = f103c 641 | f io.alcatraz.noapplet.XposedAppletActivity.d:Ljava/lang/String; = f104d 642 | f io.alcatraz.noapplet.XposedAppletActivity.e:Ljava/lang/String; = f105e 643 | f io.alcatraz.noapplet.XposedAppletActivity.f:Landroidx/appcompat/widget/Toolbar; = f106f 644 | f io.alcatraz.noapplet.XposedAppletActivity.g:Landroid/widget/TextView; = f107g 645 | f io.alcatraz.noapplet.XposedAppletActivity.h:Landroid/widget/ImageButton; = f108h 646 | f io.alcatraz.noapplet.XposedAppletActivity.i:Landroid/widget/TextView; = f109i 647 | f io.alcatraz.noapplet.XposedAppletActivity.j:Landroid/widget/TextView; = f110j 648 | f io.alcatraz.noapplet.XposedAppletActivity.k:Landroid/widget/TextView; = f111k 649 | f io.alcatraz.noapplet.XposedAppletActivity.l:Landroid/widget/RelativeLayout; = f112l 650 | f io.alcatraz.noapplet.XposedAppletActivity.m:Landroid/widget/TextView; = f113m 651 | f io.alcatraz.noapplet.XposedAppletActivity.n:Landroid/widget/RelativeLayout; = f114n 652 | f io.alcatraz.noapplet.XposedAppletActivity.o:Landroid/widget/TextView; = f115o 653 | m a.a.a.b.a.a.a(Landroid/os/IBinder;)La/a/a/b/a; = m14a 654 | m android.support.v4.os.ResultReceiver.a()V = m0a 655 | m androidx.core.view.ViewPropertyAnimatorCompat.x(F)Landroidx/core/view/ViewPropertyAnimatorCompat; = m1x 656 | m androidx.core.view.ViewPropertyAnimatorCompat.y(F)Landroidx/core/view/ViewPropertyAnimatorCompat; = m2y 657 | m androidx.core.view.ViewPropertyAnimatorCompat.z(F)Landroidx/core/view/ViewPropertyAnimatorCompat; = m3z 658 | m b.a.a.a.a.a(Landroidx/recyclerview/widget/RecyclerView;Ljava/lang/StringBuilder;)Ljava/lang/String; = m4a 659 | m b.a.a.a.a.a(Ljava/lang/String;)Ljava/lang/StringBuilder; = m9a 660 | m b.a.a.a.a.a(Ljava/lang/String;Landroidx/fragment/app/Fragment;Ljava/lang/String;)Ljava/lang/String; = m5a 661 | m b.a.a.a.a.a(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; = m6a 662 | m b.a.a.a.a.a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; = m7a 663 | m b.a.a.a.a.a(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; = m8a 664 | m b.a.a.a.a.b(Ljava/lang/String;Landroidx/fragment/app/Fragment;Ljava/lang/String;)V = m10b 665 | m c.a.a.b.a()V = m15a 666 | m c.a.a.b.b()V = m16b 667 | m c.a.a.d.a(Ljava/lang/Object;)V = m17a 668 | m c.a.a.f.a()V = m11a 669 | m c.a.a.i.a()Lc/a/a/i; = m12a 670 | m c.a.a.i.a(Landroid/app/Activity;I[I)V = m13a 671 | m io.alcatraz.noapplet.ActiveShareActivity.a(Ljava/lang/String;)Ljava/lang/String; = m18a 672 | m io.alcatraz.noapplet.XposedAppletActivity.a()Ljava/lang/String; = m19a 673 | m io.alcatraz.noapplet.XposedAppletActivity.b()Ljava/lang/String; = m20b 674 | p a = p000a 675 | p a.a = p001a 676 | p a.a.a = p002a 677 | p a.a.a.a = p003a 678 | p a.a.a.b = p004b 679 | p b = p005b 680 | p b.a = p006a 681 | p b.a.a = p007a 682 | p b.a.a.a = p008a 683 | p c = p009c 684 | p c.a = p010a 685 | p c.a.a = p011a 686 | -------------------------------------------------------------------------------- /app/release/output.json: -------------------------------------------------------------------------------- 1 | [{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":5,"versionName":"0.9_2020_5_1","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}] -------------------------------------------------------------------------------- /app/src/androidTest/java/io/alcatraz/noapplet/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package io.alcatraz.noapplet; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | 25 | assertEquals("io.alcatraz.noapplet", appContext.getPackageName()); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 16 | 19 | 22 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 38 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /app/src/main/assets/xposed_init: -------------------------------------------------------------------------------- 1 | io.alcatraz.noapplet.ModuleMain -------------------------------------------------------------------------------- /app/src/main/java/io/alcatraz/noapplet/ActiveShareActivity.java: -------------------------------------------------------------------------------- 1 | package io.alcatraz.noapplet; 2 | 3 | import android.Manifest; 4 | import android.annotation.SuppressLint; 5 | import android.content.Intent; 6 | import android.graphics.Bitmap; 7 | import android.net.Uri; 8 | import android.os.Build; 9 | import android.os.Bundle; 10 | import android.util.Base64; 11 | import android.util.Log; 12 | import android.view.View; 13 | import android.view.ViewGroup; 14 | import android.widget.ImageView; 15 | import android.widget.TextView; 16 | import android.widget.Toast; 17 | 18 | import com.google.android.material.appbar.AppBarLayout; 19 | import com.google.android.material.floatingactionbutton.FloatingActionButton; 20 | 21 | import java.util.Set; 22 | 23 | import androidx.annotation.NonNull; 24 | import androidx.appcompat.app.AppCompatActivity; 25 | import androidx.appcompat.widget.Toolbar; 26 | 27 | public class ActiveShareActivity extends AppCompatActivity { 28 | //Data 29 | Uri uri; 30 | String scheme_url; 31 | Intent original_intent; 32 | 33 | String title; 34 | String source; 35 | String url; 36 | String description; 37 | String image_path; 38 | boolean isImageLocal = false; 39 | boolean hasImage = false; 40 | boolean isApplet = true; 41 | 42 | //Widgets 43 | ImageView imageView; 44 | AppBarLayout appBarLayout; 45 | Toolbar toolbar; 46 | TextView detail_title; 47 | TextView detail_description; 48 | TextView detail_target_url; 49 | TextView detail_isapplet; 50 | ImageView applet_indicator; 51 | FloatingActionButton fab; 52 | 53 | @Override 54 | protected void onCreate(Bundle savedInstanceState) { 55 | super.onCreate(savedInstanceState); 56 | setContentView(R.layout.activity_active_share); 57 | loadData(); 58 | initViews(); 59 | } 60 | 61 | private void initViews() { 62 | imageView = findViewById(R.id.share_detail_image); 63 | appBarLayout = findViewById(R.id.share_detail_app_bar); 64 | toolbar = findViewById(R.id.share_detail_toolbar); 65 | detail_title = findViewById(R.id.detail_title); 66 | detail_description = findViewById(R.id.detail_description); 67 | detail_target_url = findViewById(R.id.detail_target_url); 68 | detail_isapplet = findViewById(R.id.detail_is_applet); 69 | applet_indicator = findViewById(R.id.detail_is_applet_indicator); 70 | fab = findViewById(R.id.detail_share); 71 | 72 | toolbar.setTitle(source); 73 | detail_title.setText(title); 74 | detail_description.setText(description); 75 | detail_target_url.setText(url); 76 | detail_isapplet.setText(isApplet ? R.string.detail_is_applet_yes : R.string.detail_is_applet_no); 77 | applet_indicator.setImageResource(isApplet ? R.drawable.ic_cloud_queue_black_24dp : R.drawable.ic_cloud_off_black_24dp); 78 | setSupportActionBar(toolbar); 79 | adjustToolbar(); 80 | 81 | setImageWithPermission(); 82 | fab.setOnClickListener(new View.OnClickListener() { 83 | @Override 84 | public void onClick(View view) { 85 | String process_scheme = Utils.removeMiniProgramNode(scheme_url); 86 | String new_scheme = Utils.replace(process_scheme,"req_type","MQ=="); 87 | Toast.makeText(ActiveShareActivity.this,R.string.toast_step_2,Toast.LENGTH_SHORT).show(); 88 | Uri new_uri = Uri.parse(new_scheme); 89 | original_intent.setData(new_uri); 90 | original_intent.setComponent(null); 91 | 92 | startActivity(original_intent); 93 | } 94 | }); 95 | } 96 | 97 | private void adjustToolbar() { 98 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 99 | int paddingTop = toolbar.getPaddingTop(); 100 | int paddingBottom = toolbar.getPaddingBottom(); 101 | int paddingLeft = toolbar.getPaddingLeft(); 102 | int paddingRight = toolbar.getPaddingRight(); 103 | 104 | int statusBarHeight = Utils.getStatusBarHeight(this); 105 | 106 | ViewGroup.LayoutParams params = toolbar.getLayoutParams(); 107 | int height = params.height; 108 | 109 | paddingTop += statusBarHeight; 110 | height += statusBarHeight; 111 | 112 | params.height = height; 113 | toolbar.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom); 114 | } 115 | } 116 | 117 | private void loadData() { 118 | original_intent = getIntent(); 119 | uri = original_intent.getData(); 120 | Bundle ex = original_intent.getExtras(); 121 | if(ex!=null) { 122 | Set strings = ex.keySet(); 123 | Log.e("h","g"); 124 | } 125 | 126 | if (uri != null) { 127 | scheme_url = uri.toString(); 128 | title = decodeKeyValue("title"); 129 | source = decodeKeyValue("app_name"); 130 | url = decodeKeyValue("url"); 131 | description = decodeKeyValue("description"); 132 | if (scheme_url.contains("image_url=")) { 133 | image_path = decodeKeyValue("image_url"); 134 | isImageLocal = false; 135 | hasImage = true; 136 | } else { 137 | if (scheme_url.contains("file_data=")) { 138 | image_path = decodeKeyValue("file_data"); 139 | isImageLocal = true; 140 | hasImage = true; 141 | } 142 | } 143 | 144 | isApplet = scheme_url.contains("mini_program"); 145 | } 146 | } 147 | 148 | @SuppressLint("InlinedApi") 149 | private void setImageWithPermission() { 150 | if (hasImage) { 151 | if (isImageLocal) { 152 | PermissionsUtils.getInstance().checkPermissions(this, new PermissionsUtils.IPermissionsResult() { 153 | @Override 154 | public void passPermissions() { 155 | imageView.setImageBitmap(Utils.getLocalBitmap(image_path)); 156 | } 157 | 158 | @Override 159 | public void forbidPermissions() { 160 | } 161 | }, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.INTERNET); 162 | } else { 163 | Utils.getHttpBitmap(image_path, new AsyncInterface() { 164 | @Override 165 | public void onDone(final Bitmap result) { 166 | runOnUiThread(new Runnable() { 167 | @Override 168 | public void run() { 169 | imageView.setImageBitmap(result); 170 | } 171 | }); 172 | 173 | } 174 | }); 175 | } 176 | } 177 | } 178 | 179 | @Override 180 | protected void onStop() { 181 | super.onStop(); 182 | finish(); 183 | } 184 | 185 | @SuppressWarnings("ConstantConditions") 186 | public String decodeKeyValue(String key) { 187 | try { 188 | String param = uri.getQueryParameter(key).replaceAll(" ", "+"); 189 | return new String(Base64.decode(param, Base64.DEFAULT)); 190 | } catch (Exception e) { 191 | return getString(R.string.none_or_decode_failure); 192 | } 193 | } 194 | 195 | 196 | @Override 197 | public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 198 | super.onRequestPermissionsResult(requestCode, permissions, grantResults); 199 | PermissionsUtils.getInstance().onRequestPermissionsResult(this, requestCode, permissions, grantResults); 200 | } 201 | } 202 | -------------------------------------------------------------------------------- /app/src/main/java/io/alcatraz/noapplet/AsyncInterface.java: -------------------------------------------------------------------------------- 1 | package io.alcatraz.noapplet; 2 | 3 | public interface AsyncInterface { 4 | void onDone(T result); 5 | } 6 | -------------------------------------------------------------------------------- /app/src/main/java/io/alcatraz/noapplet/Easter.java: -------------------------------------------------------------------------------- 1 | package io.alcatraz.noapplet; 2 | 3 | import android.content.Context; 4 | import android.content.Intent; 5 | import android.net.Uri; 6 | 7 | public class Easter { 8 | private Context context; 9 | private int[] target = {0,1,0,1,0,0,1,0,1,0}; 10 | private int current = 0; 11 | public Easter(Context context){ 12 | this.context = context; 13 | } 14 | 15 | public void shortClick(){ 16 | int expect = target[current]; 17 | if(expect == 0){ 18 | if(current == target.length-1){ 19 | showEaster(); 20 | clearCounter(); 21 | }else { 22 | current++; 23 | } 24 | }else { 25 | clearCounter(); 26 | } 27 | } 28 | 29 | public void longClick(){ 30 | int expect = target[current]; 31 | if(expect == 1){ 32 | if(current == target.length-1){ 33 | showEaster(); 34 | clearCounter(); 35 | }else { 36 | current++; 37 | } 38 | }else { 39 | clearCounter(); 40 | } 41 | } 42 | 43 | public void showEaster(){ 44 | context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://alcatraz323.github.io/noapplet"))); 45 | } 46 | 47 | public void clearCounter(){ 48 | current = 0; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /app/src/main/java/io/alcatraz/noapplet/MainActivity.java: -------------------------------------------------------------------------------- 1 | package io.alcatraz.noapplet; 2 | 3 | import android.content.Intent; 4 | import android.net.Uri; 5 | import android.os.Build; 6 | import android.os.Bundle; 7 | import android.os.VibrationEffect; 8 | import android.os.Vibrator; 9 | import android.view.Menu; 10 | import android.view.MenuInflater; 11 | import android.view.MenuItem; 12 | import android.view.View; 13 | import android.widget.RelativeLayout; 14 | 15 | import androidx.annotation.Nullable; 16 | import androidx.appcompat.app.AppCompatActivity; 17 | import androidx.appcompat.widget.Toolbar; 18 | 19 | public class MainActivity extends AppCompatActivity { 20 | RelativeLayout about; 21 | Toolbar toolbar; 22 | Vibrator vibrator; 23 | Easter easter; 24 | @Override 25 | protected void onCreate(@Nullable Bundle savedInstanceState) { 26 | super.onCreate(savedInstanceState); 27 | setContentView(R.layout.activity_main); 28 | easter=new Easter(this); 29 | vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); 30 | 31 | about = findViewById(R.id.main_about_element); 32 | toolbar = findViewById(R.id.main_toolbar); 33 | 34 | setSupportActionBar(toolbar); 35 | about.setOnClickListener(new View.OnClickListener() { 36 | @Override 37 | public void onClick(View view) { 38 | if(vibrator.hasVibrator()){ 39 | view.post(new Runnable() { 40 | @Override 41 | public void run() { 42 | vibrator.cancel(); 43 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 44 | vibrator.vibrate(VibrationEffect.createOneShot(100,VibrationEffect.DEFAULT_AMPLITUDE)); 45 | }else { 46 | vibrator.vibrate(100); 47 | } 48 | } 49 | }); 50 | 51 | } 52 | easter.shortClick(); 53 | } 54 | }); 55 | about.setOnLongClickListener(new View.OnLongClickListener() { 56 | @Override 57 | public boolean onLongClick(View view) { 58 | if(vibrator.hasVibrator()){ 59 | view.post(new Runnable() { 60 | @Override 61 | public void run() { 62 | vibrator.cancel(); 63 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 64 | vibrator.vibrate(VibrationEffect.createOneShot(200, VibrationEffect.DEFAULT_AMPLITUDE)); 65 | } else { 66 | vibrator.vibrate(200); 67 | } 68 | } 69 | }); 70 | } 71 | easter.longClick(); 72 | return true; 73 | } 74 | }); 75 | } 76 | 77 | @Override 78 | public boolean onCreateOptionsMenu(Menu menu) { 79 | MenuInflater inflater = new MenuInflater(this); 80 | inflater.inflate(R.menu.menu_main,menu); 81 | return super.onCreateOptionsMenu(menu); 82 | } 83 | 84 | @Override 85 | protected void onStop() { 86 | super.onStop(); 87 | finish(); 88 | } 89 | 90 | @Override 91 | public boolean onOptionsItemSelected(MenuItem item) { 92 | switch (item.getItemId()){ 93 | case R.id.main_menu_item_1: 94 | startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/Alcatraz323/noapplet"))); 95 | break; 96 | } 97 | return super.onOptionsItemSelected(item); 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /app/src/main/java/io/alcatraz/noapplet/ModuleMain.java: -------------------------------------------------------------------------------- 1 | package io.alcatraz.noapplet; 2 | 3 | import android.app.Activity; 4 | import android.content.ComponentName; 5 | import android.content.Intent; 6 | import android.os.Bundle; 7 | import android.util.Log; 8 | 9 | import de.robv.android.xposed.IXposedHookLoadPackage; 10 | import de.robv.android.xposed.XC_MethodHook; 11 | import de.robv.android.xposed.XposedBridge; 12 | import de.robv.android.xposed.XposedHelpers; 13 | import de.robv.android.xposed.callbacks.XC_LoadPackage; 14 | 15 | @SuppressWarnings("FieldCanBeLocal") 16 | public class ModuleMain implements IXposedHookLoadPackage { 17 | private String targetPackage = "com.tencent.mobileqq"; 18 | private String activityCls = "com.tencent.mobileqq.activity.SplashActivity"; 19 | private String launchManagerCls = "com.tencent.mobileqq.mini.launch.AppBrandLaunchManager"; 20 | private Activity activityContext; 21 | 22 | @Override 23 | public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) { 24 | if (loadPackageParam.packageName.equals(targetPackage)) { 25 | XposedHelpers.findAndHookMethod(activityCls, loadPackageParam.classLoader, "doOnCreate", Bundle.class, 26 | new XC_MethodHook() { 27 | @Override 28 | protected void afterHookedMethod(MethodHookParam param) throws Throwable { 29 | Log.e("AlcQQ", "got context"); 30 | activityContext = (Activity) param.thisObject; 31 | super.afterHookedMethod(param); 32 | } 33 | }); 34 | XposedBridge.hookAllMethods(XposedHelpers.findClass(launchManagerCls, loadPackageParam.classLoader), "startMiniApp", 35 | new XC_MethodHook() { 36 | @Override 37 | protected void afterHookedMethod(MethodHookParam param) throws Throwable { 38 | Log.e("AlcQQ", "manager hook"); 39 | Object cfg_bean = param.args[1]; 40 | if (cfg_bean != null) { 41 | Object info_bean = XposedHelpers.getObjectField(cfg_bean, "config"); 42 | if (info_bean != null) { 43 | final String data = info_bean.toString(); 44 | Object app_name = XposedHelpers.getObjectField(info_bean, "name"); 45 | Object iconUrl = XposedHelpers.getObjectField(info_bean, "iconUrl"); 46 | Object description = XposedHelpers.getObjectField(info_bean, "desc"); 47 | Object pageinfo = XposedHelpers.getObjectField(info_bean, "firstPage"); 48 | Object url = XposedHelpers.getObjectField(pageinfo, "pagePath"); 49 | 50 | final Intent intent = new Intent(); 51 | ComponentName noapplet 52 | = new ComponentName("io.alcatraz.noapplet", 53 | "io.alcatraz.noapplet.XposedPopUpActivity"); 54 | 55 | intent.setComponent(noapplet); 56 | intent.putExtra(XposedAppletActivity.EXTRA_XPOSED_MINI_APP_INFO, data); 57 | intent.putExtra(XposedAppletActivity.EXTRA_XPOSED_MINI_APP_NAME, app_name.toString()); 58 | intent.putExtra(XposedAppletActivity.EXTRA_XPOSED_MINI_APP_DESCRIPTION, description.toString()); 59 | intent.putExtra(XposedAppletActivity.EXTRA_XPOSED_MINI_APP_ICON_URL, iconUrl.toString()); 60 | intent.putExtra(XposedAppletActivity.EXTRA_XPOSED_MINI_APP_URL, url.toString()); 61 | activityContext.startActivity(intent); 62 | } 63 | } 64 | super.afterHookedMethod(param); 65 | } 66 | }); 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /app/src/main/java/io/alcatraz/noapplet/PermissionsUtils.java: -------------------------------------------------------------------------------- 1 | package io.alcatraz.noapplet; 2 | 3 | import android.app.Activity; 4 | import android.content.DialogInterface; 5 | import android.content.Intent; 6 | import android.content.pm.PackageManager; 7 | import android.net.Uri; 8 | import android.os.Build; 9 | import android.provider.Settings; 10 | 11 | import java.util.ArrayList; 12 | import java.util.List; 13 | 14 | import androidx.annotation.NonNull; 15 | import androidx.appcompat.app.AlertDialog; 16 | import androidx.core.app.ActivityCompat; 17 | import androidx.core.content.ContextCompat; 18 | 19 | public class PermissionsUtils { 20 | 21 | 22 | private final int mRequestCode = 100;//权限请求码 23 | public static boolean showSystemSetting = true; 24 | 25 | private PermissionsUtils() { 26 | } 27 | 28 | private static PermissionsUtils permissionsUtils; 29 | private IPermissionsResult mPermissionsResult; 30 | 31 | public static PermissionsUtils getInstance() { 32 | if (permissionsUtils == null) { 33 | permissionsUtils = new PermissionsUtils(); 34 | } 35 | return permissionsUtils; 36 | } 37 | 38 | public void checkPermissions(Activity context, @NonNull IPermissionsResult permissionsResult, String... permissions) { 39 | mPermissionsResult = permissionsResult; 40 | 41 | if (Build.VERSION.SDK_INT < 23) {//6.0才用动态权限 42 | permissionsResult.passPermissions(); 43 | return; 44 | } 45 | 46 | //创建一个mPermissionList,逐个判断哪些权限未授予,未授予的权限存储到mPerrrmissionList中 47 | List mPermissionList = new ArrayList<>(); 48 | //逐个判断你要的权限是否已经通过 49 | for (int i = 0; i < permissions.length; i++) { 50 | if (ContextCompat.checkSelfPermission(context, permissions[i]) != PackageManager.PERMISSION_GRANTED) { 51 | mPermissionList.add(permissions[i]);//添加还未授予的权限 52 | } 53 | } 54 | 55 | //申请权限 56 | if (mPermissionList.size() > 0) {//有权限没有通过,需要申请 57 | ActivityCompat.requestPermissions(context, permissions, mRequestCode); 58 | } else { 59 | //说明权限都已经通过,可以做你想做的事情去 60 | permissionsResult.passPermissions(); 61 | return; 62 | } 63 | 64 | 65 | } 66 | 67 | //请求权限后回调的方法 68 | //参数: requestCode 是我们自己定义的权限请求码 69 | //参数: permissions 是我们请求的权限名称数组 70 | //参数: grantResults 是我们在弹出页面后是否允许权限的标识数组,数组的长度对应的是权限名称数组的长度,数组的数据0表示允许权限,-1表示我们点击了禁止权限 71 | 72 | public void onRequestPermissionsResult(Activity context, int requestCode, @NonNull String[] permissions, 73 | @NonNull int[] grantResults) { 74 | boolean hasPermissionDismiss = false;//有权限没有通过 75 | if (mRequestCode == requestCode) { 76 | for (int i = 0; i < grantResults.length; i++) { 77 | if (grantResults[i] == -1) { 78 | hasPermissionDismiss = true; 79 | } 80 | } 81 | //如果有权限没有被允许 82 | if (hasPermissionDismiss) { 83 | if (showSystemSetting) { 84 | showSystemPermissionsSettingDialog(context);//跳转到系统设置权限页面,或者直接关闭页面,不让他继续访问 85 | } else { 86 | mPermissionsResult.forbidPermissions(); 87 | } 88 | } else { 89 | //全部权限通过,可以进行下一步操作。。。 90 | mPermissionsResult.passPermissions(); 91 | } 92 | } 93 | 94 | } 95 | 96 | 97 | /** 98 | * 不再提示权限时的展示对话框 99 | */ 100 | AlertDialog mPermissionDialog; 101 | 102 | private void showSystemPermissionsSettingDialog(final Activity context) { 103 | final String mPackName = context.getPackageName(); 104 | if (mPermissionDialog == null) { 105 | mPermissionDialog = new AlertDialog.Builder(context) 106 | .setTitle(R.string.permission_denied_title) 107 | .setMessage(R.string.permission_denied_message) 108 | .setPositiveButton(R.string.permission_grant, new DialogInterface.OnClickListener() { 109 | @Override 110 | public void onClick(DialogInterface dialog, int which) { 111 | cancelPermissionDialog(); 112 | 113 | Uri packageURI = Uri.parse("package:" + mPackName); 114 | Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, packageURI); 115 | context.startActivity(intent); 116 | context.finish(); 117 | } 118 | }) 119 | .setNegativeButton(R.string.permission_cancel, new DialogInterface.OnClickListener() { 120 | @Override 121 | public void onClick(DialogInterface dialog, int which) { 122 | //关闭页面或者做其他操作 123 | cancelPermissionDialog(); 124 | //mContext.finish(); 125 | mPermissionsResult.forbidPermissions(); 126 | } 127 | }) 128 | .create(); 129 | } 130 | mPermissionDialog.show(); 131 | } 132 | 133 | //关闭对话框 134 | private void cancelPermissionDialog() { 135 | if (mPermissionDialog != null) { 136 | mPermissionDialog.cancel(); 137 | mPermissionDialog = null; 138 | } 139 | 140 | } 141 | 142 | 143 | public interface IPermissionsResult { 144 | void passPermissions(); 145 | void forbidPermissions(); 146 | } 147 | 148 | 149 | } -------------------------------------------------------------------------------- /app/src/main/java/io/alcatraz/noapplet/Utils.java: -------------------------------------------------------------------------------- 1 | package io.alcatraz.noapplet; 2 | 3 | import android.content.ClipData; 4 | import android.content.Context; 5 | import android.graphics.Bitmap; 6 | import android.graphics.BitmapFactory; 7 | import android.text.TextUtils; 8 | import android.widget.Toast; 9 | 10 | import java.io.FileInputStream; 11 | import java.io.FileNotFoundException; 12 | import java.io.IOException; 13 | import java.io.InputStream; 14 | import java.net.HttpURLConnection; 15 | import java.net.MalformedURLException; 16 | import java.net.URL; 17 | 18 | public class Utils { 19 | public static String replace(String url, String key, String value) { 20 | if (!TextUtils.isEmpty(url) && !TextUtils.isEmpty(key)) { 21 | url = url.replaceAll("(" + key + "=[^&]*)", key + "=" + value); 22 | } 23 | return url; 24 | } 25 | 26 | public static String removeMiniProgramNode(String url) { 27 | if (!TextUtils.isEmpty(url)) { 28 | url = url.replaceAll("(mini_program.*?)=([^&]*)&", ""); 29 | } 30 | return url; 31 | } 32 | 33 | public static Bitmap getLocalBitmap(String url) { 34 | try { 35 | FileInputStream fis = new FileInputStream(url); 36 | return BitmapFactory.decodeStream(fis); ///把流转化为Bitmap图片 37 | 38 | } catch (FileNotFoundException e) { 39 | e.printStackTrace(); 40 | return null; 41 | } 42 | } 43 | 44 | public static void getHttpBitmap(final String url, final AsyncInterface asyncInterface) { 45 | 46 | new Thread(new Runnable() { 47 | @Override 48 | public void run() { 49 | URL myFileUrl = null; 50 | Bitmap bitmap = null; 51 | try { 52 | myFileUrl = new URL(url); 53 | } catch (MalformedURLException e) { 54 | e.printStackTrace(); 55 | } 56 | try { 57 | HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection(); 58 | conn.setConnectTimeout(0); 59 | conn.setDoInput(true); 60 | conn.connect(); 61 | InputStream is = conn.getInputStream(); 62 | bitmap = BitmapFactory.decodeStream(is); 63 | is.close(); 64 | } catch (IOException e) { 65 | e.printStackTrace(); 66 | } 67 | asyncInterface.onDone(bitmap); 68 | } 69 | }).start(); 70 | 71 | } 72 | 73 | public static void copyToClipboard(String content, Context c) { 74 | android.content.ClipboardManager clipboardManager = (android.content.ClipboardManager) c.getSystemService(Context.CLIPBOARD_SERVICE); 75 | ClipData myClip = ClipData.newPlainText("text", content); 76 | assert clipboardManager != null; 77 | clipboardManager.setPrimaryClip(myClip); 78 | Toast.makeText(c, R.string.toast_copied, Toast.LENGTH_SHORT).show(); 79 | } 80 | 81 | 82 | public static int getStatusBarHeight(Context var0) { 83 | int var1 = var0.getResources().getIdentifier("status_bar_height", "dimen", "android"); 84 | return var0.getResources().getDimensionPixelSize(var1); 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /app/src/main/java/io/alcatraz/noapplet/XposedAppletActivity.java: -------------------------------------------------------------------------------- 1 | package io.alcatraz.noapplet; 2 | 3 | import android.content.Intent; 4 | import android.net.Uri; 5 | import android.os.Bundle; 6 | import android.view.MenuItem; 7 | import android.view.View; 8 | import android.widget.ImageButton; 9 | import android.widget.RelativeLayout; 10 | import android.widget.TextView; 11 | 12 | import androidx.annotation.Nullable; 13 | import androidx.appcompat.app.AppCompatActivity; 14 | import androidx.appcompat.widget.Toolbar; 15 | 16 | public class XposedAppletActivity extends AppCompatActivity { 17 | public static final String EXTRA_XPOSED_MINI_APP_INFO = "noapplet_mini_app_info"; 18 | public static final String EXTRA_XPOSED_MINI_APP_NAME = "noapplet_mini_app_name"; 19 | public static final String EXTRA_XPOSED_MINI_APP_DESCRIPTION = "noapplet_mini_app_desc"; 20 | public static final String EXTRA_XPOSED_MINI_APP_ICON_URL = "noapplet_mini_app_icon_url"; 21 | public static final String EXTRA_XPOSED_MINI_APP_URL = "noapplet_mini_app_url"; 22 | 23 | //Data 24 | Intent intent; 25 | String info; 26 | String name; 27 | String description; 28 | String icon_url; 29 | String app_url; 30 | 31 | //Widgets 32 | Toolbar toolbar; 33 | TextView txv_info; 34 | ImageButton info_expand; 35 | TextView txv_name; 36 | TextView txv_desc; 37 | TextView txv_app_url; 38 | 39 | RelativeLayout bili_panel; 40 | TextView txv_bili_gen; 41 | RelativeLayout zhihu_panel; 42 | TextView txv_zhihu_gen; 43 | RelativeLayout weibo_panel; 44 | TextView txv_weibo_gen; 45 | 46 | @Override 47 | protected void onCreate(@Nullable Bundle savedInstanceState) { 48 | super.onCreate(savedInstanceState); 49 | setContentView(R.layout.activity_xposed); 50 | initData(); 51 | initViews(); 52 | } 53 | 54 | private void initViews() { 55 | toolbar = findViewById(R.id.xposed_detail_toolbar); 56 | txv_info = findViewById(R.id.xposed_raw_info); 57 | info_expand = findViewById(R.id.xposed_raw_info_expand); 58 | txv_name = findViewById(R.id.xposed_mini_name); 59 | txv_desc = findViewById(R.id.xposed_mini_description); 60 | txv_app_url = findViewById(R.id.xposed_mini_url); 61 | bili_panel = findViewById(R.id.xposed_bili_element); 62 | txv_bili_gen = findViewById(R.id.xposed_bili_generate); 63 | zhihu_panel = findViewById(R.id.xposed_zhihu_element); 64 | txv_zhihu_gen = findViewById(R.id.xposed_zhihu_generate); 65 | weibo_panel = findViewById(R.id.xposed_weibo_element); 66 | txv_weibo_gen = findViewById(R.id.xposed_weibo_generate); 67 | 68 | setSupportActionBar(toolbar); 69 | getSupportActionBar().setHomeButtonEnabled(true); 70 | getSupportActionBar().setDisplayHomeAsUpEnabled(true); 71 | txv_info.setText(info); 72 | txv_name.setText(name); 73 | txv_desc.setText(description); 74 | txv_app_url.setText(app_url); 75 | 76 | info_expand.setOnClickListener(new View.OnClickListener() { 77 | @Override 78 | public void onClick(View view) { 79 | if (txv_info.getMaxLines() == 2) { 80 | info_expand.setImageResource(R.drawable.ic_keyboard_arrow_up_black_24dp); 81 | txv_info.setMaxLines(Integer.MAX_VALUE); 82 | } else { 83 | info_expand.setImageResource(R.drawable.ic_keyboard_arrow_down_black_24dp); 84 | txv_info.setMaxLines(2); 85 | } 86 | } 87 | }); 88 | 89 | if (name.equals("哔哩哔哩")) { 90 | txv_bili_gen.setText(generateBilibiliLink()); 91 | bili_panel.setVisibility(View.VISIBLE); 92 | bili_panel.setOnClickListener(new View.OnClickListener() { 93 | @Override 94 | public void onClick(View view) { 95 | startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(txv_bili_gen.getText().toString()))); 96 | } 97 | }); 98 | bili_panel.setOnLongClickListener(new View.OnLongClickListener() { 99 | @Override 100 | public boolean onLongClick(View view) { 101 | Utils.copyToClipboard(txv_bili_gen.getText().toString(), XposedAppletActivity.this); 102 | return true; 103 | } 104 | }); 105 | } 106 | 107 | if (name.equals("知乎")) { 108 | txv_zhihu_gen.setText(generateZhihuLink()); 109 | zhihu_panel.setVisibility(View.VISIBLE); 110 | zhihu_panel.setOnClickListener(new View.OnClickListener() { 111 | @Override 112 | public void onClick(View view) { 113 | startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(txv_zhihu_gen.getText().toString()))); 114 | } 115 | }); 116 | zhihu_panel.setOnLongClickListener(new View.OnLongClickListener() { 117 | @Override 118 | public boolean onLongClick(View view) { 119 | Utils.copyToClipboard(txv_zhihu_gen.getText().toString(), XposedAppletActivity.this); 120 | return true; 121 | } 122 | }); 123 | } 124 | 125 | if (name.equals("微博")) { 126 | txv_weibo_gen.setText(generateWeiboLink()); 127 | weibo_panel.setVisibility(View.VISIBLE); 128 | weibo_panel.setOnClickListener(new View.OnClickListener() { 129 | @Override 130 | public void onClick(View view) { 131 | startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(txv_weibo_gen.getText().toString()))); 132 | } 133 | }); 134 | weibo_panel.setOnLongClickListener(new View.OnLongClickListener() { 135 | @Override 136 | public boolean onLongClick(View view) { 137 | Utils.copyToClipboard(txv_weibo_gen.getText().toString(), XposedAppletActivity.this); 138 | return true; 139 | } 140 | }); 141 | } 142 | } 143 | 144 | @Override 145 | public boolean onOptionsItemSelected(MenuItem item) { 146 | switch (item.getItemId()) { 147 | case android.R.id.home: 148 | finish(); 149 | break; 150 | } 151 | return super.onOptionsItemSelected(item); 152 | } 153 | 154 | @Override 155 | protected void onStop() { 156 | super.onStop(); 157 | finish(); 158 | } 159 | 160 | private void initData() { 161 | intent = getIntent(); 162 | info = intent.getStringExtra(EXTRA_XPOSED_MINI_APP_INFO); 163 | name = intent.getStringExtra(EXTRA_XPOSED_MINI_APP_NAME); 164 | description = intent.getStringExtra(EXTRA_XPOSED_MINI_APP_DESCRIPTION); 165 | icon_url = intent.getStringExtra(EXTRA_XPOSED_MINI_APP_ICON_URL); 166 | app_url = intent.getStringExtra(EXTRA_XPOSED_MINI_APP_URL); 167 | } 168 | 169 | public String generateBilibiliLink() { 170 | String[] process_0 = app_url.split("="); 171 | String[] process_1 = process_0[1].split("&"); 172 | if (app_url.contains("avid")) { 173 | return "https://www.bilibili.com/video/av" + process_1[0]; 174 | } else if (app_url.contains("epid")) { 175 | return "https://www.bilibili.com/bangumi/play/ep" + process_1[0]; 176 | } else { 177 | return "https://www.bilibili.com/video/" + process_1[0]; 178 | } 179 | } 180 | 181 | public String generateWeiboLink(){ 182 | String[] process_0 = app_url.split("="); 183 | String[] process_1 = process_0[1].split("&"); 184 | return "https://m.weibo.cn/detail/" + process_1[0]; 185 | } 186 | 187 | public String generateZhihuLink() { 188 | String[] process_0 = app_url.split("="); 189 | String[] process_1 = process_0[1].split("&"); 190 | if (app_url.contains("answer")) { 191 | return "https://www.zhihu.com/answer/" + process_1[0]; 192 | } else if (app_url.contains("question")) { 193 | return "https://www.zhihu.com/question/" + process_1[0]; 194 | } 195 | return "Can't generate link"; 196 | } 197 | } 198 | -------------------------------------------------------------------------------- /app/src/main/java/io/alcatraz/noapplet/XposedPopUpActivity.java: -------------------------------------------------------------------------------- 1 | package io.alcatraz.noapplet; 2 | 3 | import android.content.ComponentName; 4 | import android.content.Intent; 5 | import android.os.Bundle; 6 | import android.view.View; 7 | import android.widget.Button; 8 | 9 | import androidx.annotation.Nullable; 10 | import androidx.appcompat.app.AppCompatActivity; 11 | 12 | public class XposedPopUpActivity extends AppCompatActivity { 13 | Button cancel; 14 | Button confirm; 15 | 16 | @Override 17 | protected void onCreate(@Nullable Bundle savedInstanceState) { 18 | super.onCreate(savedInstanceState); 19 | setContentView(R.layout.activity_xposed_popup); 20 | cancel = findViewById(R.id.xp_popup_cancel); 21 | confirm = findViewById(R.id.xp_popup_confirm); 22 | cancel.setOnClickListener(new View.OnClickListener() { 23 | @Override 24 | public void onClick(View view) { 25 | finish(); 26 | } 27 | }); 28 | confirm.setOnClickListener(new View.OnClickListener() { 29 | @Override 30 | public void onClick(View view) { 31 | Intent intent = getIntent(); 32 | ComponentName noapplet 33 | = new ComponentName("io.alcatraz.noapplet", 34 | "io.alcatraz.noapplet.XposedAppletActivity"); 35 | intent.setComponent(noapplet); 36 | startActivity(intent); 37 | finish(); 38 | } 39 | }); 40 | } 41 | 42 | @Override 43 | protected void onStop() { 44 | super.onStop(); 45 | finish(); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /app/src/main/res/anim/layout_fall_down.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/anim/recycler_falldown.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | 11 | 16 | 17 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 10 | 11 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_left_back.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | 9 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_right_back.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | 9 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/animator/raise.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 12 | 13 | 19 | 22 | 25 | 26 | 27 | 28 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_apps_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_cloud_off_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_cloud_queue_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_code_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_description_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_error_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_forward_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_hot_tub_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_keyboard_arrow_down_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_keyboard_arrow_up_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 | 65 | 70 | 75 | 80 | 85 | 90 | 95 | 100 | 105 | 110 | 115 | 120 | 125 | 130 | 135 | 140 | 145 | 150 | 155 | 160 | 165 | 170 | 171 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_share_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_title_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_unarchive_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_active_share.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 19 | 20 | 25 | 26 | 32 | 33 | 34 | 35 | 41 | 42 | 43 | 44 | 45 | 51 | 52 | 56 | 57 | 65 | 66 | 74 | 75 | 80 | 81 | 89 | 90 | 99 | 100 | 101 | 102 | 109 | 110 | 125 | 126 | 133 | 134 | 142 | 143 | 152 | 153 | 154 | 155 | 162 | 163 | 178 | 179 | 186 | 187 | 195 | 196 | 205 | 206 | 207 | 208 | 213 | 214 | 222 | 223 | 232 | 233 | 238 | 239 | 247 | 248 | 257 | 258 | 259 | 260 | 261 | 262 | 272 | 273 | 274 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | 20 | 21 | 22 | 28 | 29 | 33 | 34 | 40 | 41 | 53 | 54 | 64 | 65 | 74 | 75 | 81 | 82 | 83 | 84 | 85 | 86 | 90 | 91 | 94 | 95 | 107 | 108 | 118 | 119 | 128 | 129 | 135 | 136 | 137 | 138 | 139 | 140 | 143 | 144 | 156 | 157 | 167 | 168 | 178 | 179 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_xposed.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 19 | 20 | 21 | 27 | 28 | 32 | 33 | 36 | 37 | 49 | 50 | 60 | 61 | 69 | 70 | 77 | 78 | 79 | 80 | 92 | 93 | 94 | 95 | 100 | 101 | 108 | 109 | 123 | 124 | 134 | 135 | 141 | 142 | 150 | 151 | 152 | 153 | 160 | 161 | 175 | 176 | 186 | 187 | 193 | 194 | 202 | 203 | 204 | 205 | 212 | 213 | 227 | 228 | 238 | 239 | 245 | 246 | 254 | 255 | 256 | 257 | 269 | 270 | 284 | 285 | 295 | 296 | 302 | 303 | 310 | 311 | 312 | 313 | 325 | 326 | 340 | 341 | 351 | 352 | 358 | 359 | 366 | 367 | 368 | 380 | 381 | 395 | 396 | 406 | 407 | 413 | 414 | 421 | 422 | 423 | 424 | 425 | 426 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_xposed_popup.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 20 | 21 | 26 | 27 | 33 | 34 | 39 | 40 | 41 | 50 | 51 |