├── .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 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
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 |
58 |
59 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alcatraz323/noapplet/a25eec2a5da718b163828033f3602cce5bc96087/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alcatraz323/noapplet/a25eec2a5da718b163828033f3602cce5bc96087/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alcatraz323/noapplet/a25eec2a5da718b163828033f3602cce5bc96087/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alcatraz323/noapplet/a25eec2a5da718b163828033f3602cce5bc96087/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alcatraz323/noapplet/a25eec2a5da718b163828033f3602cce5bc96087/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alcatraz323/noapplet/a25eec2a5da718b163828033f3602cce5bc96087/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alcatraz323/noapplet/a25eec2a5da718b163828033f3602cce5bc96087/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alcatraz323/noapplet/a25eec2a5da718b163828033f3602cce5bc96087/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alcatraz323/noapplet/a25eec2a5da718b163828033f3602cce5bc96087/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alcatraz323/noapplet/a25eec2a5da718b163828033f3602cce5bc96087/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/values-v19/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/values-zh-rCN/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 远离小程序
3 | 查看源码
4 | 来源
5 | 描述
6 | 标题
7 | 目标地址
8 | 当前链接是否正在请求小程序
9 | 是
10 | 否
11 | 无或解码错误
12 | 权限
13 | 读取权限被禁止,当前链接图片位于本地,无法载入,请授予读取权限
14 | 取消
15 | 授予
16 | 请选择正常的QQ
17 | 导出QQ小程序链接 来自@Alcatraz323(github)
18 | 当前小程序
19 | 小程序名称
20 | 原始配置信息
21 | 小程序链接
22 | 可能的Bilibili原始链接
23 | 可能的知乎原始链接
24 | 可能的微博原始链接
25 | 分析当前小程序链接?
26 | 关于
27 | 这是一个用来将QQ小程序分享链接转化为非小程序链接,或是将聊天中小程序信信息导出的小工具(Xposed/可以太极阴)(比如将别人发给你的小程序转化为网页地址)\n欢迎反馈到@AlcatrazDev(GooglePlay)/Alcatraz323(github)特别鸣谢@神经元(GooglePlay)提供想法\n以及@Mr_Dennis/AudioHQ项目群员测试
28 | 教程
29 | 1.主动分享\n你可以在分享列表看见本应用,选择本应用,确认分享信息后点击右边绿色按钮,这次选择正常的QQ!!!即可\n
30 | 2.获取小程序连接信息(*Xposed/太极)\n在QQ中启动目标小程序,将会出现对话框,若需分析请点击"是"
31 | 注意
32 | 对于新版bilibili,分享时bilibili将会把图片存在/sdcard/tmp若你启动了存储空间隔离(重定向),将会导致分享失败(无论用不用本应用),目前只遇到bilibili有此问题,但不排除其他程序出现相同问题可能
33 | 已复制
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #008577
4 | #00574B
5 | #4caf50
6 |
7 | #a5a5a5
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | NoApplet
3 | Check source code
4 | App Name
5 | Description
6 | Title
7 | Target Url
8 | IsAppletRequest
9 | Yes
10 | No
11 | None/Decode failure
12 | Permission
13 | Read External Storage permission denied, this share link\'s image is local(%s), can not load file, Pls grant permission(Just read)
14 | Cancel
15 | Grant
16 | Please select regular QQ this time
17 | A module to retrieve URL when opening the QQ applet. Developed by @Decontamination(Coolapk)
18 | CurrentApplet
19 | Applet name
20 | Raw MiniApp Info
21 | Applet Url
22 | Possible Bilibili Url
23 | Possible Zhihu Url
24 | Possible Weibo Url
25 | Analyse current applet?
26 | About
27 | This is a small tool for convert your QQ Applet share link to normal
28 | link actively and export the existed applet info\nDeveloped by: Alcatraz(Coolapk)\nIdea by: Neuron(Coolapk),as always, this program is free and no ads
29 | Tutorial
30 | 1.Active sharing\nYou can find \'NoApplet\' in the choose list, select it, check the share content and click the green button, This time PLS SELECT NORMAL QQ, then you are done\n
31 | 2.Export Existed\nStart the target applet, and you will see the AlertDialog
32 | Warning
33 | For latest bilibili, it will create image locally under /sdcard/tmp, if you have activated Storage Redirect, this will cause share failure no matter if you use this app, there may be other app with the same issue
34 | Copied
35 |
36 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
23 |
24 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/test/java/io/alcatraz/noapplet/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package io.alcatraz.noapplet;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | google()
6 | jcenter()
7 |
8 | }
9 | dependencies {
10 | classpath 'com.android.tools.build:gradle:3.5.2'
11 |
12 | // NOTE: Do not place your application dependencies here; they belong
13 | // in the individual module build.gradle files
14 | }
15 | }
16 |
17 | allprojects {
18 | repositories {
19 | google()
20 | jcenter()
21 |
22 | }
23 | }
24 |
25 | task clean(type: Delete) {
26 | delete rootProject.buildDir
27 | }
28 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx1536m
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 | # AndroidX package structure to make it clearer which packages are bundled with the
15 | # Android operating system, and which are packaged with your app's APK
16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 | android.useAndroidX=true
18 | # Automatically convert third-party libraries to use AndroidX
19 | android.enableJetifier=true
20 |
21 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alcatraz323/noapplet/a25eec2a5da718b163828033f3602cce5bc96087/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Mar 27 13:22:56 CST 2020
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
7 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | ##############################################################################
4 | ##
5 | ## Gradle start up script for UN*X
6 | ##
7 | ##############################################################################
8 |
9 | # Attempt to set APP_HOME
10 | # Resolve links: $0 may be a link
11 | PRG="$0"
12 | # Need this for relative symlinks.
13 | while [ -h "$PRG" ] ; do
14 | ls=`ls -ld "$PRG"`
15 | link=`expr "$ls" : '.*-> \(.*\)$'`
16 | if expr "$link" : '/.*' > /dev/null; then
17 | PRG="$link"
18 | else
19 | PRG=`dirname "$PRG"`"/$link"
20 | fi
21 | done
22 | SAVED="`pwd`"
23 | cd "`dirname \"$PRG\"`/" >/dev/null
24 | APP_HOME="`pwd -P`"
25 | cd "$SAVED" >/dev/null
26 |
27 | APP_NAME="Gradle"
28 | APP_BASE_NAME=`basename "$0"`
29 |
30 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
31 | DEFAULT_JVM_OPTS=""
32 |
33 | # Use the maximum available, or set MAX_FD != -1 to use that value.
34 | MAX_FD="maximum"
35 |
36 | warn () {
37 | echo "$*"
38 | }
39 |
40 | die () {
41 | echo
42 | echo "$*"
43 | echo
44 | exit 1
45 | }
46 |
47 | # OS specific support (must be 'true' or 'false').
48 | cygwin=false
49 | msys=false
50 | darwin=false
51 | nonstop=false
52 | case "`uname`" in
53 | CYGWIN* )
54 | cygwin=true
55 | ;;
56 | Darwin* )
57 | darwin=true
58 | ;;
59 | MINGW* )
60 | msys=true
61 | ;;
62 | NONSTOP* )
63 | nonstop=true
64 | ;;
65 | esac
66 |
67 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
68 |
69 | # Determine the Java command to use to start the JVM.
70 | if [ -n "$JAVA_HOME" ] ; then
71 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
72 | # IBM's JDK on AIX uses strange locations for the executables
73 | JAVACMD="$JAVA_HOME/jre/sh/java"
74 | else
75 | JAVACMD="$JAVA_HOME/bin/java"
76 | fi
77 | if [ ! -x "$JAVACMD" ] ; then
78 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
79 |
80 | Please set the JAVA_HOME variable in your environment to match the
81 | location of your Java installation."
82 | fi
83 | else
84 | JAVACMD="java"
85 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
86 |
87 | Please set the JAVA_HOME variable in your environment to match the
88 | location of your Java installation."
89 | fi
90 |
91 | # Increase the maximum file descriptors if we can.
92 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
93 | MAX_FD_LIMIT=`ulimit -H -n`
94 | if [ $? -eq 0 ] ; then
95 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
96 | MAX_FD="$MAX_FD_LIMIT"
97 | fi
98 | ulimit -n $MAX_FD
99 | if [ $? -ne 0 ] ; then
100 | warn "Could not set maximum file descriptor limit: $MAX_FD"
101 | fi
102 | else
103 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
104 | fi
105 | fi
106 |
107 | # For Darwin, add options to specify how the application appears in the dock
108 | if $darwin; then
109 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
110 | fi
111 |
112 | # For Cygwin, switch paths to Windows format before running java
113 | if $cygwin ; then
114 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
115 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
116 | JAVACMD=`cygpath --unix "$JAVACMD"`
117 |
118 | # We build the pattern for arguments to be converted via cygpath
119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
120 | SEP=""
121 | for dir in $ROOTDIRSRAW ; do
122 | ROOTDIRS="$ROOTDIRS$SEP$dir"
123 | SEP="|"
124 | done
125 | OURCYGPATTERN="(^($ROOTDIRS))"
126 | # Add a user-defined pattern to the cygpath arguments
127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
129 | fi
130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
131 | i=0
132 | for arg in "$@" ; do
133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
135 |
136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
138 | else
139 | eval `echo args$i`="\"$arg\""
140 | fi
141 | i=$((i+1))
142 | done
143 | case $i in
144 | (0) set -- ;;
145 | (1) set -- "$args0" ;;
146 | (2) set -- "$args0" "$args1" ;;
147 | (3) set -- "$args0" "$args1" "$args2" ;;
148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
154 | esac
155 | fi
156 |
157 | # Escape application args
158 | save () {
159 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
160 | echo " "
161 | }
162 | APP_ARGS=$(save "$@")
163 |
164 | # Collect all arguments for the java command, following the shell quoting and substitution rules
165 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
166 |
167 | # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
168 | if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
169 | cd "$(dirname "$0")"
170 | fi
171 |
172 | exec "$JAVACMD" "$@"
173 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | set DIRNAME=%~dp0
12 | if "%DIRNAME%" == "" set DIRNAME=.
13 | set APP_BASE_NAME=%~n0
14 | set APP_HOME=%DIRNAME%
15 |
16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17 | set DEFAULT_JVM_OPTS=
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windows variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 |
53 | :win9xME_args
54 | @rem Slurp the command line arguments.
55 | set CMD_LINE_ARGS=
56 | set _SKIP=2
57 |
58 | :win9xME_args_slurp
59 | if "x%~1" == "x" goto execute
60 |
61 | set CMD_LINE_ARGS=%*
62 |
63 | :execute
64 | @rem Setup the command line
65 |
66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67 |
68 | @rem Execute Gradle
69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70 |
71 | :end
72 | @rem End local scope for the variables with windows NT shell
73 | if "%ERRORLEVEL%"=="0" goto mainEnd
74 |
75 | :fail
76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77 | rem the _cmd.exe /c_ return code!
78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79 | exit /b 1
80 |
81 | :mainEnd
82 | if "%OS%"=="Windows_NT" endlocal
83 |
84 | :omega
85 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name='NoApplet'
3 |
--------------------------------------------------------------------------------