digraph g { node [shape=box, style=filled, fillcolor=lightblue, fontname="simsun.ttc", fontsize=14]; edge [fontname="simsun.ttc", fontsize=12]; subgraph cluster__ui_AppsManagementSettingsActivity{ label = "_ui_AppsManagementSettingsActivity" 93[label = "behavior = click arg = null index = -1 id = text = 防火墙设置 className = android.widget.TextView desc = packageName = "]; 94[label = "behavior = click arg = null index = -1 id = text = className = android.widget.ImageView desc = 更多选项 packageName = "]; 95[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 重置设置 className = android.widget.TextView desc = packageName = "]; 96[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 警告 className = android.widget.TextView desc = packageName = "]; 97[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/message text = 您确定要重置所有防火墙设置至默认? className = android.widget.TextView desc = packageName = "]; 98[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/positive_button text = 确定 className = android.widget.Button desc = packageName = "]; 99[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/left_icon text = className = android.widget.ImageView desc = packageName = "]; 100[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 关 className = android.widget.TextView desc = packageName = "]; 101[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/switch_item text = 开启 className = android.widget.Switch desc = packageName = "]; 102[label = "behavior = click arg = null index = -1 id = text = className = android.view.View desc = packageName = "]; 103[label = "behavior = click arg = null index = -1 id = text = 防火墙 className = android.widget.TextView desc = packageName = "]; 104[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 蜂窝数据 className = android.widget.TextView desc = packageName = "]; 105[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/summary text = 允许使用蜂窝数据。 className = android.widget.TextView desc = packageName = "]; 106[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = Wi-Fi 数据 className = android.widget.TextView desc = packageName = "]; 107[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/summary text = 允许使用 Wi-Fi 数据。 className = android.widget.TextView desc = packageName = "]; 108[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 息屏时的蜂窝数据 className = android.widget.TextView desc = packageName = "]; 109[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/summary text = 息屏时允许使用蜂窝数据。 className = android.widget.TextView desc = packageName = "]; 110[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 息屏时的 Wi-Fi 数据 className = android.widget.TextView desc = packageName = "]; 111[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/summary text = 当息屏时允许使用Wi-Fi数据 className = android.widget.TextView desc = packageName = "]; 112[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 防火墙通知 className = android.widget.TextView desc = packageName = "]; 113[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/summary text = AdGuard 每次拦截前台应用的网络请求时都要询问用户。 className = android.widget.TextView desc = packageName = "]; 114[label = "behavior = click arg = null index = -1 id = android:id/statusBarBackground text = className = android.view.View desc = packageName = "]; 115[label = "behavior = sendKeyEvent arg = [4] index = -1 id = text = className = desc = packageName = "]; } subgraph cluster__ui_AppsManagementPackageActivity{ label = "_ui_AppsManagementPackageActivity" 128[label = "behavior = click arg = null index = -1 id = text = AdGuard className = android.widget.TextView desc = packageName = "]; 129[label = "behavior = click arg = null index = -1 id = text = className = android.widget.ImageView desc = 更多选项 packageName = "]; 130[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 清除统计数据 className = android.widget.TextView desc = packageName = "]; 131[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 警告 className = android.widget.TextView desc = packageName = "]; 132[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/message text = 您确定要清除统计数据? className = android.widget.TextView desc = packageName = "]; 133[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/positive_button text = 确定 className = android.widget.Button desc = packageName = "]; 134[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title_first text = 流量合计 className = android.widget.TextView desc = packageName = "]; 135[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/chartTitle text = 今日 的流量统计 className = android.widget.TextView desc = packageName = "]; 136[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/chartContent text = className = android.view.View desc = packageName = "]; 137[label = "behavior = click arg = null index = -1 id = android:id/statusBarBackground text = className = android.view.View desc = packageName = "]; 138[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/traffic_total text = 0 KB className = android.widget.TextView desc = packageName = "]; 139[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/middle text = className = android.view.View desc = packageName = "]; 140[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title_second text = 节省的数据 className = android.widget.TextView desc = packageName = "]; 141[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/traffic_saved text = 0 KB className = android.widget.TextView desc = packageName = "]; 142[label = "behavior = click arg = null index = -1 id = android:id/text1 text = 所有数据 className = android.widget.CheckedTextView desc = packageName = "]; 143[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/textView text = 所有数据 className = android.widget.CheckedTextView desc = packageName = "]; 144[label = "behavior = click arg = null index = -1 id = android:id/text1 text = 今日 className = android.widget.CheckedTextView desc = packageName = "]; 145[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/textView text = 今日 className = android.widget.CheckedTextView desc = packageName = "]; 146[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/icon text = className = android.widget.ImageView desc = packageName = "]; 148[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = AdGuard className = android.widget.TextView desc = packageName = "]; 149[label = "behavior = click arg = null index = -1 id = text = ▼ className = android.widget.TextView desc = packageName = "]; 150[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/trafficDown text = 0 KB className = android.widget.TextView desc = packageName = "]; 151[label = "behavior = click arg = null index = -1 id = text = ▲ className = android.widget.TextView desc = packageName = "]; 152[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/trafficUp text = 0 KB className = android.widget.TextView desc = packageName = "]; 153[label = "behavior = click arg = null index = -1 id = text = ● className = android.widget.TextView desc = packageName = "]; 154[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/trafficSaved text = 0 KB className = android.widget.TextView desc = packageName = "]; 155[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/filterIcon text = className = android.widget.ImageView desc = packageName = "]; 156[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/wifiIcon text = className = android.widget.ImageView desc = packageName = "]; 157[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/mobileIcon text = className = android.widget.ImageView desc = packageName = "]; 158[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/package_warning text = AdGuard cannot filter itself. It would lead to inconsistent performance and cause issues for other apps. className = android.widget.TextView desc = packageName = "]; 159[label = "behavior = click arg = null index = -1 id = text = className = android.widget.ImageView desc = packageName = "]; 160[label = "behavior = click arg = null index = -1 id = text = 请求合计 className = android.widget.TextView desc = packageName = "]; 161[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/requestsStatsValueTextView text = 0 className = android.widget.TextView desc = packageName = "]; 162[label = "behavior = click arg = null index = -1 id = text = 拦截的广告 className = android.widget.TextView desc = packageName = "]; 163[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/bannerStatsValueTextView text = 0 className = android.widget.TextView desc = packageName = "]; 164[label = "behavior = click arg = null index = -1 id = text = Blocked trackers className = android.widget.TextView desc = packageName = "]; 165[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/trackersStatsValueTextView text = 0 className = android.widget.TextView desc = packageName = "]; 166[label = "behavior = click arg = null index = -1 id = text = 拦截的威胁 className = android.widget.TextView desc = packageName = "]; 167[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/threatStatsValueTextView text = 0 className = android.widget.TextView desc = packageName = "]; 168[label = "behavior = click arg = null index = -1 id = text = className = android.widget.LinearLayout desc = packageName = "]; 169[label = "behavior = sendKeyEvent arg = [4] index = -1 id = text = className = desc = packageName = "]; } subgraph cluster_{ label = "" 230[label = "Start "]; } subgraph cluster__ui_AboutActivity{ label = "_ui_AboutActivity" 194[label = "behavior = click arg = null index = -1 id = text = 关于 className = android.widget.TextView desc = packageName = "]; 195[label = "behavior = click arg = null index = -1 id = text = className = android.widget.ImageView desc = packageName = "]; 196[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/version_status_text text = v3.3 beta 3.1 (188) className = android.widget.TextView desc = packageName = "]; 197[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/copyright text = © 2009–2020. AdGuard Software Ltd. className = android.widget.TextView desc = packageName = "]; 198[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/all_rights_reserved text = All rights reserved. AdGuard.com className = android.widget.TextView desc = packageName = "]; 199[label = "behavior = click arg = null index = -1 id = text = className = android.view.View desc = packageName = "]; 200[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/version_history_link text = Version history className = android.widget.TextView desc = packageName = "]; 201[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/eula_link text = 最终用户许可协议 className = android.widget.TextView desc = packageName = "]; 202[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/privacy_policy_link text = Privacy Policy className = android.widget.TextView desc = packageName = "]; 203[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/acknowledgments_link text = 致谢 className = android.widget.TextView desc = packageName = "]; 204[label = "behavior = sendKeyEvent arg = [4] index = -1 id = text = className = desc = packageName = "]; } subgraph cluster__ui_BatteryActivity{ label = "_ui_BatteryActivity" 74[label = "behavior = click arg = null index = -1 id = text = 电池使用率 className = android.widget.TextView desc = packageName = "]; 75[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/menu_help text = className = android.widget.TextView desc = FAQ packageName = "]; 77[label = "behavior = click arg = null index = -1 id = text = 当 AdGuard 为开时,安卓系统的电池和数据使用率统计不并能反映实际的情况。由于过滤流量,安卓系统会将其它应用的消耗量算作 AdGuard 的,可导致高估 AdGuard 的消耗量并低估其它应用的消耗量。 className = android.widget.TextView desc = packageName = "]; 78[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/left_icon text = className = android.widget.ImageView desc = packageName = "]; 79[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 最后 24 小时的使用情况 className = android.widget.TextView desc = packageName = "]; 80[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/summary text = 2.45 mAh className = android.widget.TextView desc = packageName = "]; 81[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/battery_percent text = 0.24% className = android.widget.TextView desc = packageName = "]; 82[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/chartContent text = className = android.view.View desc = packageName = "]; 83[label = "behavior = click arg = null index = -1 id = text = 分解(最近 24 小时) className = android.widget.TextView desc = packageName = "]; 84[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = CPU 前台 className = android.widget.TextView desc = packageName = "]; 85[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/summary text = 用户界面渲染 className = android.widget.TextView desc = packageName = "]; 86[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/cpu_foreground_usage_value text = 1 分钟 25 秒 className = android.widget.TextView desc = packageName = "]; 87[label = "behavior = sendKeyEvent arg = [4] index = -1 id = text = className = desc = packageName = "]; 192[label = "behavior = click arg = null index = -1 id = text = className = android.widget.ImageButton desc = 转到上一层级 packageName = "]; 193[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 关于 className = android.widget.TextView desc = packageName = "]; } subgraph cluster__ui_FeedbackActivity{ label = "_ui_FeedbackActivity" 213[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 反馈类型 className = android.widget.TextView desc = packageName = "]; 214[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/textView text = 漏拦截的广告或跟踪器 className = android.widget.CheckedTextView desc = packageName = "]; } subgraph cluster__ui_SettingsActivity{ label = "_ui_SettingsActivity" 71[label = "behavior = click arg = null index = -1 id = text = className = android.widget.ImageButton desc = 转到上一层级 packageName = "]; 72[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 许可状态 className = android.widget.TextView desc = packageName = "]; 73[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 电池使用情况 className = android.widget.TextView desc = packageName = "]; } subgraph cluster__ui_PremiumPromoActivity{ label = "_ui_PremiumPromoActivity" 22[label = "behavior = click arg = null index = -1 id = text = className = android.widget.ImageView desc = 更多选项 packageName = "]; 23[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 免费试用 className = android.widget.TextView desc = packageName = "]; 24[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 输入电子邮件地址 className = android.widget.TextView desc = packageName = "]; 25[label = "behavior = click arg = null index = -1 id = text = 此电子邮件地址将用于激活试用版本以及注册个人账号以用于管理您的 AdGuard 授权码和订阅。 className = android.widget.TextView desc = packageName = "]; 26[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 您的电子邮件地址 className = android.widget.TextView desc = packageName = "]; 27[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/positive_button text = 激活 className = android.widget.Button desc = packageName = "]; 28[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/error text = 请输入有效的电子邮件地址。 className = android.widget.TextView desc = packageName = "]; 29[label = "behavior = sendKeyEvent arg = [4] index = -1 id = text = className = desc = packageName = "]; 30[label = "behavior = click arg = null index = -1 id = text = className = android.widget.ImageButton desc = 转到上一层级 packageName = "]; } subgraph cluster__ui_UpdatesActivity{ label = "_ui_UpdatesActivity" 34[label = "behavior = click arg = null index = -1 id = text = className = android.widget.ImageView desc = 更多选项 packageName = "]; 35[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = Update settings className = android.widget.TextView desc = packageName = "]; 44[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/indeterminate_progress_bar text = className = android.widget.ProgressBar desc = packageName = "]; 45[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = AdGuard 3.3 beta 3.1 className = android.widget.TextView desc = packageName = "]; 46[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/left_icon text = className = android.widget.ImageView desc = packageName = "]; 47[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/summary text = Available version: 3.3.2 Release # 3.3.230: In this small update, there’s only one but important fix and a few additions to the exclusions list. - [Fixed] Protection doesn’t restart when an excluded app is installed #3340 - [Changed] The list of HTTPS exclusions has been updated # 3.3.229: Recently we claimed to make the last release of the year, and it kinda was that. Ignore that this update is called a 'release', it's more of a 'hotfix'. Because you wouldn't call this tiny hotfix a release, right? Just a couple of bugfixes, that's all. - [Fixed] The protection doesn't start automatically if you restart the phone right after checking for filter updates #3286 - [Fixed] Stealth Mode configuration isn't saved after app update #3287 # 3.3.228: The last AdGuard for Android release of the decade! This sounds solid. Anyway, it’s more of a coincidence than anything else that such a massive update falls right on Christmas. And don’t get us wrong: it is massive. Multiple major features and over 50 lesser ones — all in all it combines to make a nice Christmas gift for y’all! ## [Improved] Filtering engine Version 3.3 brings scriptlets and $redirect modifiers support. Scriptlets is a powerful ad-blocking tool that helps to block ads on websites that use different circumvention techniques. $redirect modifier is another tool that allows substituting special "resources" instead of a blocked element. For instance, it can replace a banner with a transparent 1x1 image. ## [Changed] The onboarding process #2895 We sure love us some redesign! This time, we revamped the onboarding sequence (basically, what you see when you launch the app for the first time). Key changes: * An option to choose a ‘quick’ or a ‘long’ configuration: you’ll be asked to either make only key decisions or set most of the settings manually New option to allow sending some technical and interaction information that will help us further improve AdGuard Better graphics! ## [Added] New activation flow #2901 Not a lot of Android users had a chance to see our AdGuard for iOS app, so they likely don’t know about the system that’s being used there for Premium features activation. But it recommended itself as one that’s convenient for users, so we adopted it for AdGuard for Android too. As you can see, there are now two options: enter a license key directly, or log into AdGuard personal account. If your account has a license key that can be used to activate Premium, it will get picked up automatically after you enter credentials. ## Ad blocking * [Added] Preset Stealth Mode settings configurations #2625 * [Added] abp:subscribe and adguard:subscribe links interception #2918 * [Added] subscribe.adblockplus.org links interception #2930 * [Changed] Internet connection availability checking method #3095 * [Changed] Whale browser has been added to the known browsers list #3175 * [Fixed] DNS User filter import bug #2972 * [Fixed] Some legit hosts lists are not recognized as valid #2982 * [Fixed] Error while checking updates of resources added from the local storage #2997 * [Fixed] Quick Settings does not allow to choose a different Privacy protection Level #2768 * [Fixed] “Exclude from filtering” button behavior #3052 * [Fixed] Google Now can’t be updated with “Always-on-VPN” enabled #3039 * [Fixed] AdGuard Extra enables automatically when there’s an available update #3216 * [Fixed] The application causes a crash if custom filters were enabled #3258 * [Fixed] AdGuard breaks some UDP connections on Samsung S10 devices with Android 10 #3259 * [Improved] AdGuard now uses on-the-fly methods of applying settings changes without restarting the protection when possible #2881 * [Improved] DNS filtering to block cloaked trackers #3228 * [Improved] “Block phishing and malware” option now is enabled automatically when Premium gets activated #3249 * [Improved] Now AdGuard can block AAAA requests in networks without IPv6 interface #3197 ## UI * [Added] An option to purchase a new license via the app #2897 * [Added] Trial period and license activation via OAuth #3081, #3244 * [Added] Whitelisting apps option to the Assistant dialog #2853 * [Added] “On/Off” switch on some screens #2877 * [Added] Notifications about certificate errors #2722 * [Added] Ability to copy the current version number by tapping on it #2773 * [Added] Link to Version history in the About tab #2774 * [Added] System default theme option #2174 * [Added] Silent update action as a long-tap on the update button #2890 * [Added] “Failed to move the certificate” notification for rooted devices with Magisk firmware #2941 * [Added] Empty field validation when adding a new extension #2983 * [Added] “Refresh license status” button #2988 * [Added] Restore purchases button: a notification if there’s nothing to restore #2990 * [Changed] The imported filter list’s URL now won’t be stored if a content: link was used #2813 * [Changed] Chrome custom tabs now open in the same window #3019 * [Changed] Premium screens now can be viewed without Premium #2843 * [Changed] Update notifications behavior #2922 * [Changed] DNS request type is now displayed in the Filtering log even when there's no answer #2961 * [Changed] Tap on filter category titles in search will bring you to the respective category’s screen #3035 * [Changed] Toast notifications parameters #3087 * [Changed] Proxy screen UI #3092 * [Changed] AdGuard now remembers the selected type of data to display in Apps Management #3140 * [Changed] Phrasing on activation screens #3141 * [Changed] “Clear DNS statistics” warning description #3194 * [Changed] Improve the in-app purchase design #3252 * [Fixed] Minor UI issues #2879 * [Fixed] Issue with distribution graphs on the main screen #2935 * [Fixed] Search on Apps Managements screen is working slow #2951 * [Fixed] Unexpected connections resets #2980 * [Fixed] Incorrect filter locale is displayed after language change #2971 * [Fixed] Scrolling issue in the Filtering log #2974 * [Fixed] Wrong filters status is shown #2987 * [Fixed] Incorrect updates status when the network is not available #3020 * [Fixed] “Preparing to start protection” notification #3034 * [Fixed] “Edit Filter” overlay bug #3045 * [Fixed] Divider stripe is still shown when there are no updates available #3047 * [Fixed] Cloudflare DNS description #3062 * [Fixed] Wrong Chinese date format #3068 * [Fixed] Application updates icon #3098 * [Fixed] Missing button shadow #3109 * [Fixed] Some buttons in the first start dialog boxes can’t be seen on certain device models #3114 * [Fixed] The switch for Custom filters incorrectly represents the state of the filter group #3119 * [Fixed] Pressing the “Buy one more license” button closes the current screen #3136 * [Fixed] Certificate installation dialog is missing #3176 * [Fixed] Wrong toast notification is displayed when the license expires #3183 * [Fixed] “Missed ad” option in the Feedback section leads to an error if DuckDuckGo is selected as the default browser #3128 * [Improved] HTTPS filtering-related UI changes #2896 * [Improved] UI elements are now focusable on Android TV #2818 * [Improved] Rich formatting added to some modules’ descriptions #2878 * [Improved] Phrasing on onboarding screens #3248 * [Improved] Phrasing in the Apps Management details activity #3250 * [Improved] Localizations have been updated: #3271, #3188, #3161 ## Networking * [Added] A prevention system for connections overflow #2989 * [Added] TLS v1.3 support for custom DNS servers #3132 * [Changed] DNS-over-HTTPS connections number limit has been abolished #3224 * [Fixed] Some apps don't see available WiFi networks when AdGuard local VPN is up #2836 * [Improved] Interaction between AdGuard DNS settings and Private DNS #2797 * [Improved] AdGuard’s network safety and stability #2995 * [Improved] Connection error processing #3195 ##Other * [Added] Whitelist export feature #3069 * [Fixed] Update window appears after a short inactivity period #3055 * [Fixed] Userscripts updates are not tracked by the battery service #3073 * [Fixed] AdGuard 3.2 does not launch #3076 * [Fixed] “Include license data” option works incorrectly when you try to export settings #3067 * [Fixed] Crash when the app runs scheduled tasks #3164 * [Fixed] Crash in the Updates activity #3165 * [Fixed] Crash when Android OS tries to load the icon #3166 * [Fixed] Crash on some Android builds #3167 * [Fixed] Crash in the main activity #3168 * [Fixed] Crash when user communicates with the extensions activity #3171 * [Fixed] Crash when the log is being collected #3212 * [Fixed] Crash on MIUI phones with Ultra battery saver #3210 * [Fixed] Max imported settings file size increased to 10 Mb #3203 * [Improved] Target SDK level has been changed to 29 #3053 * [Improved] CoreLibs has been updated to v1.5.74 #3105 className = android.widget.TextView desc = packageName = "]; 48[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/summary text = Available version: 3.3.2 Release className = android.widget.TextView desc = packageName = "]; 49[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/right_icon text = className = android.widget.ImageView desc = packageName = "]; 50[label = "behavior = click arg = null index = -1 id = android:id/progress text = className = android.widget.ProgressBar desc = packageName = "]; 51[label = "behavior = click arg = null index = -1 id = android:id/message text = 请稍后... className = android.widget.TextView desc = packageName = "]; 52[label = "behavior = sendKeyEvent arg = [4] index = -1 id = text = className = desc = packageName = "]; 53[label = "behavior = sendKeyEvent arg = [3] index = -1 id = text = className = desc = packageName = "]; } subgraph cluster__applications_InstalledAppDetails{ label = "_applications_InstalledAppDetails" 147[label = "behavior = sendKeyEvent arg = [4] index = -1 id = text = className = desc = packageName = "]; } subgraph cluster__ui_OnboardingActivity{ label = "_ui_OnboardingActivity" 0[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/logo text = className = android.widget.ImageView desc = packageName = "]; 1[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/promo_title text = By continuing to use AdGuard, you agree with EULA and Privacy Policy. className = android.widget.TextView desc = packageName = "]; 2[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/crash_report_checkbox text = className = android.widget.CheckBox desc = packageName = "]; 3[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/crash_report_checkbox_label text = Send automatic crash reports className = android.widget.TextView desc = packageName = "]; 4[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/events_checkbox text = className = android.widget.CheckBox desc = packageName = "]; 5[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/events_checkbox_label text = Send technical and interaction data className = android.widget.TextView desc = packageName = "]; 6[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/learn_more text = What will be sent? className = android.widget.TextView desc = packageName = "]; 7[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = Technical and interaction data className = android.widget.TextView desc = packageName = "]; 8[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/message text = Technical and interaction data includes the app configuration and names of the screens viewed inside of the app. The main purpose of this is for us to find out how AdGuard is being used, which features are popular, and what UI/UX issues there are. This data will be used only internally and will not be shared with third parties. Learn more className = android.widget.TextView desc = packageName = "]; 9[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/positive_button text = 确定 className = android.widget.Button desc = packageName = "]; 10[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/button_positive text = Accept className = android.widget.Button desc = packageName = "]; 11[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/onboarding_animation_view text = className = android.widget.ImageView desc = packageName = "]; 12[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = Welcome className = android.widget.TextView desc = packageName = "]; 13[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/message text = Could you take 5 minutes to set up the app? className = android.widget.TextView desc = packageName = "]; 14[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/button_positive text = Thorough set-up (5 min) className = android.widget.Button desc = packageName = "]; 15[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = Search ads className = android.widget.TextView desc = packageName = "]; 16[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/message text = Do you want to see ads in the Web search results? className = android.widget.TextView desc = packageName = "]; 17[label = "behavior = click arg = null index = -1 id = android:id/statusBarBackground text = className = android.view.View desc = packageName = "]; 18[label = "behavior = sendKeyEvent arg = [4] index = -1 id = text = className = desc = packageName = "]; 19[label = "behavior = sendKeyEvent arg = [3] index = -1 id = text = className = desc = packageName = "]; 20[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/button_negative text = Quick set-up (1 min) className = android.widget.Button desc = packageName = "]; 21[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/button_negative text = Later (not recommended) className = android.widget.Button desc = packageName = "]; } subgraph cluster__ui_SupportActivity{ label = "_ui_SupportActivity" 64[label = "behavior = click arg = null index = -1 id = text = className = android.widget.ImageButton desc = 转到上一层级 packageName = "]; 65[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 过滤日志 className = android.widget.TextView desc = packageName = "]; 205[label = "behavior = click arg = null index = -1 id = text = 支持 className = android.widget.TextView desc = packageName = "]; 206[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/left_icon text = className = android.widget.ImageView desc = packageName = "]; 207[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = FAQ className = android.widget.TextView desc = packageName = "]; 208[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/summary text = 常见问题解答 className = android.widget.TextView desc = packageName = "]; 209[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/right_icon text = className = android.widget.ImageView desc = packageName = "]; 210[label = "behavior = click arg = null index = -1 id = text = className = android.view.View desc = packageName = "]; 211[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 讨论 className = android.widget.TextView desc = packageName = "]; 212[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/summary text = 与其他人分享您的见解 className = android.widget.TextView desc = packageName = "]; } subgraph cluster__BrowserActivity{ label = "_BrowserActivity" 76[label = "behavior = sendKeyEvent arg = [4] index = -1 id = text = className = desc = packageName = "]; } subgraph cluster__ui_FilteringLogActivity{ label = "_ui_FilteringLogActivity" 66[label = "behavior = click arg = null index = -1 id = text = className = android.widget.ImageView desc = 更多选项 packageName = "]; 67[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 移除全部 className = android.widget.TextView desc = packageName = "]; 68[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/positive_button text = 确定 className = android.widget.Button desc = packageName = "]; 69[label = "behavior = click arg = null index = -1 id = text = className = android.widget.ImageButton desc = 转到上一层级 packageName = "]; 70[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 设置 className = android.widget.TextView desc = packageName = "]; 215[label = "behavior = click arg = null index = -1 id = text = 过滤日志 className = android.widget.TextView desc = packageName = "]; 216[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/searchItem text = className = android.widget.TextView desc = 搜索... packageName = "]; 217[label = "behavior = click arg = null index = -1 id = text = className = android.widget.ImageButton desc = 收起 packageName = "]; 218[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 过滤请求 className = android.widget.TextView desc = packageName = "]; 219[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 请求类型 className = android.widget.TextView desc = packageName = "]; 220[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/regular_requests text = 常规 className = android.widget.CheckedTextView desc = packageName = "]; 221[label = "behavior = click arg = null index = -1 id = text = className = android.view.View desc = packageName = "]; 222[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/blocked_requests text = 已拦截 className = android.widget.CheckedTextView desc = packageName = "]; 223[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/modified_requests text = 已修改 className = android.widget.CheckedTextView desc = packageName = "]; 224[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/whitelisted_requests text = 已列入白名单 className = android.widget.CheckedTextView desc = packageName = "]; 225[label = "behavior = click arg = null index = -1 id = text = 请求源 className = android.widget.TextView desc = packageName = "]; 226[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/first_party_requests text = 第一方 className = android.widget.CheckedTextView desc = packageName = "]; 227[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/third_party_requests text = 第三方 className = android.widget.CheckedTextView desc = packageName = "]; 228[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/list_view text = className = android.widget.ListView desc = packageName = "]; 229[label = "behavior = sendKeyEvent arg = [4] index = -1 id = text = className = desc = packageName = "]; } subgraph cluster__ui_MainActivity{ label = "_ui_MainActivity" 31[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/tv_title text = The main switch className = android.widget.TextView desc = packageName = "]; 32[label = "behavior = click arg = null index = -1 id = text = AdGuard className = android.widget.TextView desc = packageName = "]; 33[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/updateFiltersMenuItem text = className = android.widget.TextView desc = 检查更新 packageName = "]; 54[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/bottom_text text = Disable hints className = android.widget.TextView desc = packageName = "]; 55[label = "behavior = click arg = null index = -1 id = text = className = android.widget.ImageButton desc = 转到上一层级 packageName = "]; 56[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 应用管理 className = android.widget.TextView desc = packageName = "]; } subgraph cluster__ui_SettingsGroupActivity{ label = "_ui_SettingsGroupActivity" 36[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/switch_item text = 开启 className = android.widget.Switch desc = packageName = "]; 37[label = "behavior = click arg = null index = -1 id = text = className = android.view.View desc = packageName = "]; 38[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/summary text = 当前:24 小时 className = android.widget.TextView desc = packageName = "]; 39[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/switch_item text = 关闭 className = android.widget.Switch desc = packageName = "]; 40[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/summary text = 当前:Beta className = android.widget.TextView desc = packageName = "]; 41[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/textView text = 释放 className = android.widget.CheckedTextView desc = packageName = "]; 42[label = "behavior = click arg = null index = -1 id = android:id/statusBarBackground text = className = android.view.View desc = packageName = "]; 43[label = "behavior = sendKeyEvent arg = [4] index = -1 id = text = className = desc = packageName = "]; } subgraph cluster__ui_AppsManagementMainActivity{ label = "_ui_AppsManagementMainActivity" 57[label = "behavior = click arg = null index = -1 id = text = className = android.widget.ImageView desc = 更多选项 packageName = "]; 58[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 清除统计数据 className = android.widget.TextView desc = packageName = "]; 59[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/negative_button text = 取消 className = android.widget.Button desc = packageName = "]; 60[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/sort_order text = className = android.widget.TextView desc = 排序顺序 packageName = "]; 61[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/textView text = 应用名称 className = android.widget.CheckedTextView desc = packageName = "]; 62[label = "behavior = click arg = null index = -1 id = text = className = android.widget.ImageButton desc = 转到上一层级 packageName = "]; 63[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 支持 className = android.widget.TextView desc = packageName = "]; 88[label = "behavior = click arg = null index = -1 id = text = 应用管理 className = android.widget.TextView desc = packageName = "]; 89[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/searchItem text = className = android.widget.TextView desc = 搜索应用... packageName = "]; 90[label = "behavior = click arg = null index = -1 id = text = className = android.widget.ImageButton desc = 收起 packageName = "]; 91[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 排序顺序 className = android.widget.TextView desc = packageName = "]; 92[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = 设置 className = android.widget.TextView desc = packageName = "]; 116[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title_first text = 流量合计 className = android.widget.TextView desc = packageName = "]; 117[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/chartTitle text = 所有时间 的流量统计 className = android.widget.TextView desc = packageName = "]; 118[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/chartContent text = className = android.view.View desc = packageName = "]; 119[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/traffic_total text = 10.79 MB className = android.widget.TextView desc = packageName = "]; 120[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/middle text = className = android.view.View desc = packageName = "]; 121[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title_second text = 节省的数据 className = android.widget.TextView desc = packageName = "]; 122[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/traffic_saved text = 0 KB className = android.widget.TextView desc = packageName = "]; 123[label = "behavior = click arg = null index = -1 id = android:id/text1 text = 所有数据 className = android.widget.CheckedTextView desc = packageName = "]; 124[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/textView text = 所有数据 className = android.widget.CheckedTextView desc = packageName = "]; 125[label = "behavior = click arg = null index = -1 id = android:id/text1 text = 所有时间 className = android.widget.CheckedTextView desc = packageName = "]; 126[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/textView text = 今日 className = android.widget.CheckedTextView desc = packageName = "]; 127[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/icon text = className = android.widget.ImageView desc = packageName = "]; 170[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = AdGuard className = android.widget.TextView desc = packageName = "]; 171[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/subtitleTitle text = 无数据 className = android.widget.TextView desc = packageName = "]; 172[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/filterIcon text = className = android.widget.ImageView desc = packageName = "]; 173[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/wifiIcon text = className = android.widget.ImageView desc = packageName = "]; 174[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/mobileIcon text = className = android.widget.ImageView desc = packageName = "]; 175[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = Android OS className = android.widget.TextView desc = packageName = "]; 176[label = "behavior = click arg = null index = -1 id = text = ▼ className = android.widget.TextView desc = packageName = "]; 177[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/trafficDown text = 1 KB className = android.widget.TextView desc = packageName = "]; 178[label = "behavior = click arg = null index = -1 id = text = ▲ className = android.widget.TextView desc = packageName = "]; 179[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/trafficUp text = 2.6 KB className = android.widget.TextView desc = packageName = "]; 180[label = "behavior = click arg = null index = -1 id = text = ● className = android.widget.TextView desc = packageName = "]; 181[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/trafficSaved text = 0 KB className = android.widget.TextView desc = packageName = "]; 182[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/trafficDown text = 1.2 KB className = android.widget.TextView desc = packageName = "]; 183[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/trafficUp text = 3.9 KB className = android.widget.TextView desc = packageName = "]; 184[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = Appium Settings className = android.widget.TextView desc = packageName = "]; 185[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = CaptivePortalLogin className = android.widget.TextView desc = packageName = "]; 186[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = ConfigUpdater className = android.widget.TextView desc = packageName = "]; 187[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = Dev Tools className = android.widget.TextView desc = packageName = "]; 188[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/title text = Google Play 商店 className = android.widget.TextView desc = packageName = "]; 189[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/trafficDown text = 1.6 KB className = android.widget.TextView desc = packageName = "]; 190[label = "behavior = click arg = null index = -1 id = com.adguard.android:id/trafficUp text = 5.9 KB className = android.widget.TextView desc = packageName = "]; 191[label = "behavior = sendKeyEvent arg = [4] index = -1 id = text = className = desc = packageName = "]; } 0->1; 1->2; 2->3; 3->4; 4->5; 5->6; 6->7; 7->8; 8->9; 9->10; 10->11; 10->20; 11->12; 12->13; 13->14; 14->15; 15->16; 16->17; 17->18; 18->18; 18->19; 20->21; 21->22; 21->30; 22->23; 23->24; 24->25; 25->26; 26->27; 26->28; 27->24; 28->29; 29->29; 30->31; 30->54; 30->55; 30->71; 31->32; 32->33; 33->34; 33->52; 34->35; 35->36; 35->43; 36->37; 37->38; 37->39; 37->40; 38->37; 39->37; 40->41; 41->42; 42->43; 43->44; 44->45; 45->46; 46->47; 47->48; 48->49; 49->50; 50->51; 51->52; 52->52; 52->53; 54->33; 54->55; 55->10; 55->56; 56->57; 56->88; 57->58; 57->92; 58->59; 59->60; 60->61; 60->91; 61->62; 61->57; 62->63; 63->64; 63->205; 64->65; 65->66; 65->215; 66->67; 66->218; 67->68; 68->69; 68->228; 69->70; 70->71; 71->72; 71->73; 72->30; 73->74; 73->192; 74->75; 75->76; 76->77; 76->199; 76->204; 76->207; 76->208; 76->209; 76->210; 76->211; 76->212; 76->205; 77->78; 78->79; 79->80; 80->81; 81->82; 82->83; 83->84; 84->85; 85->86; 86->87; 88->89; 89->90; 90->60; 91->61; 92->93; 93->94; 94->95; 95->96; 96->97; 97->98; 98->99; 99->100; 99->104; 99->106; 99->108; 99->110; 99->112; 100->101; 101->102; 101->114; 102->103; 102->99; 103->99; 104->105; 105->101; 106->107; 107->101; 108->109; 109->101; 110->111; 111->101; 112->113; 113->101; 114->115; 115->116; 116->117; 116->119; 117->118; 118->116; 119->119; 119->120; 120->120; 120->121; 121->121; 121->122; 122->122; 122->123; 123->124; 124->125; 125->126; 126->127; 127->128; 127->169; 128->129; 129->130; 130->131; 131->132; 132->133; 133->134; 134->135; 134->137; 135->136; 136->134; 137->138; 138->138; 138->139; 139->139; 139->140; 140->140; 140->141; 141->141; 141->142; 142->143; 143->144; 144->145; 145->146; 146->147; 147->148; 147->149; 147->150; 147->151; 147->152; 147->153; 147->154; 147->155; 147->156; 147->157; 147->158; 148->147; 149->147; 150->147; 151->147; 152->147; 153->147; 154->147; 155->147; 156->147; 157->147; 158->159; 159->160; 159->162; 159->164; 159->166; 160->161; 161->159; 162->163; 163->159; 164->165; 165->159; 166->167; 167->168; 168->169; 169->170; 169->171; 169->172; 169->173; 169->174; 169->127; 169->175; 169->176; 169->177; 169->178; 169->179; 169->180; 169->181; 169->182; 169->183; 169->184; 169->185; 169->186; 169->187; 169->188; 169->189; 169->190; 169->191; 170->169; 171->169; 172->169; 173->169; 174->169; 175->169; 176->169; 177->169; 178->169; 179->169; 180->169; 181->169; 182->169; 183->169; 184->169; 185->169; 186->169; 187->169; 188->169; 189->169; 190->169; 192->193; 193->194; 194->195; 195->196; 196->197; 197->198; 198->199; 199->200; 199->201; 199->202; 199->203; 200->76; 201->76; 202->76; 203->76; 205->206; 206->76; 206->213; 206->10; 207->76; 208->76; 209->76; 210->206; 211->76; 212->76; 213->214; 214->76; 215->216; 216->217; 217->66; 218->219; 219->220; 220->221; 221->222; 221->223; 221->224; 221->227; 222->221; 223->221; 224->225; 225->226; 226->221; 227->68; 228->229; 230->0; }