From 789e95fb33e6546a32523c6801b36f43261477d4 Mon Sep 17 00:00:00 2001 From: xingag Date: Sun, 12 Jan 2020 11:13:06 +0800 Subject: [PATCH 01/10] create phone numbers --- .DS_Store | Bin 14340 -> 18436 bytes README.md | 1 + .../.DS_Store" | Bin 0 -> 6148 bytes .../generate_area_phone_util.py" | 71 ++++++++++++++++++ .../utils/.DS_Store" | Bin 0 -> 6148 bytes .../utils/addr_utils.py" | 68 +++++++++++++++++ 6 files changed, 140 insertions(+) create mode 100644 "\346\211\271\351\207\217\347\224\237\346\210\220\346\211\213\346\234\272\345\217\267\347\240\201/.DS_Store" create mode 100644 "\346\211\271\351\207\217\347\224\237\346\210\220\346\211\213\346\234\272\345\217\267\347\240\201/generate_area_phone_util.py" create mode 100644 "\346\211\271\351\207\217\347\224\237\346\210\220\346\211\213\346\234\272\345\217\267\347\240\201/utils/.DS_Store" create mode 100644 "\346\211\271\351\207\217\347\224\237\346\210\220\346\211\213\346\234\272\345\217\267\347\240\201/utils/addr_utils.py" diff --git a/.DS_Store b/.DS_Store index 17d64e0b9725a5ee7dfc8e1d5b07b7699c0c3aff..558ef795e1eadc7adf707509ba4bff6a740ac490 100644 GIT binary patch delta 1200 zcma)+ZERCj7{{M~*Rpf(I(CK|?4s8e+K$n&t-~&}lfhm(29AJX6~?QyyEmhuYs=bA zAZmT#MGXPVfe%KEhM4dH6P=BT5I#VnKmtf6#1DoL0(>yhPa5@$Z>PP)ATz`d_dMr3 z|L2@@^ZTE3_NMo~11}MwXWVEd>XKb1zhdN0*&HBp%NTIxy^W5=GGWh0+F{Edoa>eY zM=`OQjx`VVzj87$(mFVt8coX_(X84Qv79fP{Ki&ZC}(ztnT4Ho#~sxywmW}q+!f=o zfsu~E-*!Rd<{W0BK-(gBYcM3{Rrj<_EBV*LrPXO#jd;1vV;fM#xtdy0>F;SAiVvrf zgYiA)3!IN<%(Z4BnvGAG;b_*(a44sowfg+}#z0%gvas0WZ)daT)NyUD_JsJfzD~TZ z&9bX5ZJxO1pPkcOnvbzfhMd_uX3EyMQ8}}Us|}i8;ZYXJ$W5$FliH&2j1t)qPg*tF zVl~LPp*)|6#>_;iNNZO^j1MU5C(N--Je9PPOVp*T8jF-6$#2w5W;0g0TkB;xeu-@@ zZoVp-$*xJ8Nx6UNXI)x9V;hP}w_%tD^K>;>Y$D0%sOjknSR+OHsZq0ZbOmiDlhU-C z4$>hyOz+W0^f7%#XXzqcqRVuJrszAmL*LU+^fUcJztUe|*rcEWPH31954;E+864nx?0jTnY0DQ-s`W0K+oUc@fEhBqY319%g89FaVa zN}eagj|=K^53?Ihg~PE#DkiOGu9J_wYur2EUF=V#gbW?q5Wtefj){xNRmR`|m&$qF(A tXfQXBa78wJvmoPp=E?jnx~z;qsRNU3UDP-&KuSSiayn1%=D#ZJ%m4~9AKU-{ diff --git a/README.md b/README.md index 5ecab3c..3acf8d5 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ ## 文章列表 +* [批量生成手机号码](./批量生成手机号码) * [短视频二次创作](./video_auto/二次剪辑) * [使用 Python 制作 GIF 动画视频](./video_auto/制作GIF视频/) * [使用 Python 制作一个卡点视频](./video_auto/卡点视频/readme.md) diff --git "a/\346\211\271\351\207\217\347\224\237\346\210\220\346\211\213\346\234\272\345\217\267\347\240\201/.DS_Store" "b/\346\211\271\351\207\217\347\224\237\346\210\220\346\211\213\346\234\272\345\217\267\347\240\201/.DS_Store" new file mode 100644 index 0000000000000000000000000000000000000000..73fb940be35c205bc535cf2ebf055f71e4b7c06f GIT binary patch literal 6148 zcmeHK%}T>S5ZMAVcQSx$S7ABJSinN|e*IqD^Ds!WTJ4#a#>$oP2~D4@>eZ>Ler$K* zo}D>ao;IDNZOq$&=etgF5O`T<&yO}jzw1Za$(ED($sq>s#c>D$(stba!0)w-e;8WN1wlUl9*Bgx`vtC~rESdea zwHnwftAl~AX>*I4yC?a@<<<4g?cM#uqg(|JpR15*g+q7(;~gDcJBh+LIs@-8V;D(D z3=jjvz#nEnZE0Hd56^*KofsenzJ~$aA52h0OJN~VY#q?x?<4k?5mCU#y9A=C&{9}P zgdPwsQvqcvS62)!)4^}5I7?w6QKmC4Mus|SWUg)~T#OEWQ-m{aNu-t-AO=1%FeV=j zJpVVozW;wrq9!QD*ylh literal 0 HcmV?d00001 diff --git "a/\346\211\271\351\207\217\347\224\237\346\210\220\346\211\213\346\234\272\345\217\267\347\240\201/generate_area_phone_util.py" "b/\346\211\271\351\207\217\347\224\237\346\210\220\346\211\213\346\234\272\345\217\267\347\240\201/generate_area_phone_util.py" new file mode 100644 index 0000000..0420c1a --- /dev/null +++ "b/\346\211\271\351\207\217\347\224\237\346\210\220\346\211\213\346\234\272\345\217\267\347\240\201/generate_area_phone_util.py" @@ -0,0 +1,71 @@ +#!/usr/bin/env python +# encoding: utf-8 + +""" +@version: v1.0 +@author: xag +@license: Apache Licence +@contact: xinganguo@gmail.com +@site: http://www.xingag.top +@software: PyCharm +@file: generate_area_phone_util.py +@time: 2020-01-05 20:16 +@description:生成区域的电话号码 +""" + +from utils.addr_utils import * + +def generate_phones(num, areas): + """ + 生成随机号码 + :param num:数目 + :param areas: 区域 + :return: + """ + + headers = { + 'authority': 'api.uukit.com', + 'pragma': 'no-cache', + 'cache-control': 'no-cache', + 'accept': 'enote_app/json, text/javascript, */*; q=0.01', + 'origin': 'https://uutool.cn', + 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36', + 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', + 'sec-fetch-site': 'cross-site', + 'sec-fetch-mode': 'cors', + 'referer': 'https://uutool.cn/phone-generate/', + 'accept-encoding': 'gzip, deflate, br', + 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', + } + + data = { + 'phone_num': num, + 'area': areas, + 'segment': '133,153,189,180,181,177,173,139,138,137,136,135,134,159,158,157,150,151,152,147,188,187,182,183,184,178,130,131,132,156,155,186,185,145,176' + } + + response = requests.post('https://api.uukit.com/phone/generate_batch', headers=headers, data=data) + + phones = json.loads(response.text).get('data').get('rows') + + return phones + + +if __name__ == '__main__': + # 手机号码个数 + num = 100 + + # 全国所有城市名称和id编号 + citys = get_all_citys() + + city_name = input('请输入手机归属地:') + + if city_name not in citys.keys(): + city_name = '北京' + + # 获取城市id + city_id = citys.get(city_name) + + # 请输入要获取手机号码的归属地 + phones = generate_phones(num, city_id) + print(phones) diff --git "a/\346\211\271\351\207\217\347\224\237\346\210\220\346\211\213\346\234\272\345\217\267\347\240\201/utils/.DS_Store" "b/\346\211\271\351\207\217\347\224\237\346\210\220\346\211\213\346\234\272\345\217\267\347\240\201/utils/.DS_Store" new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Sun, 1 Mar 2020 14:12:31 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E6=9C=8B=E5=8F=8B=E5=9C=88=E9=98=B2?= =?UTF-8?q?=E6=8A=98=E5=8F=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 18436 -> 18436 bytes .gitignore | 1 + README.md | 1 + .../.DS_Store" | Bin 0 -> 8196 bytes .../NoCollapseInput/.gitignore" | 15 ++ .../.idea/codeStyles/Project.xml" | 113 ++++++++++++ .../NoCollapseInput/.idea/gradle.xml" | 21 +++ .../NoCollapseInput/.idea/misc.xml" | 14 ++ .../.idea/runConfigurations.xml" | 12 ++ .../NoCollapseInput/.project" | 17 ++ .../org.eclipse.buildship.core.prefs" | 2 + .../NoCollapseInput/.vscode/settings.json" | 3 + .../NoCollapseInput/app/.classpath" | 6 + .../NoCollapseInput/app/.gitignore" | 1 + .../NoCollapseInput/app/.project" | 23 +++ .../org.eclipse.buildship.core.prefs" | 2 + .../NoCollapseInput/app/build.gradle" | 44 +++++ .../NoCollapseInput/app/proguard-rules.pro" | 21 +++ .../ExampleInstrumentedTest.java" | 29 +++ .../app/src/main/AndroidManifest.xml" | 50 +++++ .../com/xingag/preventrubbishapp/App.java" | 24 +++ .../preventrubbishapp/MainActivity.java" | 82 +++++++++ .../java/com/xingag/service/BaseService.java" | 89 +++++++++ .../com/xingag/service/PreventService.java" | 131 +++++++++++++ .../com/xingag/utils/AccessibilityUtil.java" | 141 ++++++++++++++ .../main/java/com/xingag/utils/AppUtil.java" | 56 ++++++ .../drawable-v24/ic_launcher_foreground.xml" | 34 ++++ .../app/src/main/res/drawable/btn_bg.xml" | 7 + .../res/drawable/ic_launcher_background.xml" | 170 +++++++++++++++++ .../src/main/res/layout/activity_main.xml" | 82 +++++++++ .../res/layout/dialog_bottom_alertmsg.xml" | 33 ++++ .../src/main/res/layout/item_app_select.xml" | 22 +++ .../app/src/main/res/layout/title_bar.xml" | 10 + .../src/main/res/mipmap-xhdpi/ic_back.png" | Bin 0 -> 1075 bytes .../main/res/mipmap-xhdpi/ic_launcher.png" | Bin 0 -> 3832 bytes .../src/main/res/mipmap-xhdpi/ic_sure.png" | Bin 0 -> 1688 bytes .../app/src/main/res/values/colors.xml" | 6 + .../app/src/main/res/values/strings.xml" | 5 + .../app/src/main/res/values/styles.xml" | 11 ++ .../main/res/xml/accessibility_settings.xml" | 9 + .../preventrubbishapp/ExampleUnitTest.java" | 19 ++ .../NoCollapseInput/build.gradle" | 43 +++++ .../NoCollapseInput/gradle.properties" | 20 ++ .../gradle/wrapper/gradle-wrapper.jar" | Bin 0 -> 54329 bytes .../gradle/wrapper/gradle-wrapper.properties" | 6 + .../NoCollapseInput/gradlew" | 172 ++++++++++++++++++ .../NoCollapseInput/gradlew.bat" | 84 +++++++++ .../NoCollapseInput/readme.md" | 2 + .../NoCollapseInput/settings.gradle" | 2 + ...0\345\217\240\346\234\215\345\212\241.apk" | Bin 0 -> 2342952 bytes 50 files changed, 1635 insertions(+) create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/.DS_Store" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.gitignore" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.idea/codeStyles/Project.xml" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.idea/gradle.xml" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.idea/misc.xml" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.idea/runConfigurations.xml" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.project" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.settings/org.eclipse.buildship.core.prefs" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.vscode/settings.json" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/.classpath" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/.gitignore" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/.project" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/.settings/org.eclipse.buildship.core.prefs" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/build.gradle" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/proguard-rules.pro" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/androidTest/java/com/xingag/preventrubbishapp/ExampleInstrumentedTest.java" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/AndroidManifest.xml" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/preventrubbishapp/App.java" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/preventrubbishapp/MainActivity.java" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/service/BaseService.java" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/service/PreventService.java" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/utils/AccessibilityUtil.java" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/utils/AppUtil.java" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/drawable-v24/ic_launcher_foreground.xml" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/drawable/btn_bg.xml" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/drawable/ic_launcher_background.xml" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/layout/activity_main.xml" create mode 100755 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/layout/dialog_bottom_alertmsg.xml" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/layout/item_app_select.xml" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/layout/title_bar.xml" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/mipmap-xhdpi/ic_back.png" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/mipmap-xhdpi/ic_launcher.png" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/mipmap-xhdpi/ic_sure.png" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/values/colors.xml" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/values/strings.xml" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/values/styles.xml" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/xml/accessibility_settings.xml" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/test/java/com/xingag/preventrubbishapp/ExampleUnitTest.java" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/build.gradle" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/gradle.properties" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/gradle/wrapper/gradle-wrapper.jar" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/gradle/wrapper/gradle-wrapper.properties" create mode 100755 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/gradlew" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/gradlew.bat" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/readme.md" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/settings.gradle" create mode 100644 "\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/\351\230\262\346\212\230\345\217\240\346\234\215\345\212\241.apk" diff --git a/.DS_Store b/.DS_Store index 558ef795e1eadc7adf707509ba4bff6a740ac490..33e8cc2b90ff77f4cbdb81481e406e1259b3c839 100644 GIT binary patch delta 713 zcmaiyOK4L;6o%)&P2#<21CyH6mL~QV6EJBKbMt6yHEL>5M5}>-BE?ryOsRPkAN5gV zL`o19n>hFeF}M)A)6qp2f^Ef(pr9_?RdFXO=t4yodPxeBE_7BieE)&-oipPljF(Vq zN3m@2qqiK}&#s#d80AKM(=i$Se37UTK^e7}_>}pn&Y(**#-HsFulN$z;&0hp=Y-kU z6LQIZZy@iI#}p;xb;-d{ka?7#yDpnfDe+`3GeZ8JI?iq@GFsWRa)}k3PE^>W^9%cJ z>?m+DMP|u!@`Ai1ugDwnj(i{=$tUued?!E1Px1>QjA+JUbYM9g=zZ3GsgQ*E7^ z4IA|~7N&VN7Z_$KcTdu0x9TbALs5F&vZS@mVYgbTAd1z8+oQ4ux^JHO{CX?Z(m|<4 zLo4-qs-cIZTIK4nN_BMeJdO0Jlo*AIB(a=n1v7Qi0Uesqf~AnL3^v%|ffqjb5m1%a zB7(lE_SUNQP7GidcB}G37)BZyWN}ngAHzxHQN&rCs}A8ZuHpu6vO;%Pp>8pmTr`?U z=Mw5b#P=~*<%xDCqTUx|2LGEG8T$7J7>ysyrgPa8A^e1;EZk|7DVlkccavD2v~mMI bt>s_C4gp1OSto0>PaehgFfg5B$umjxH)<>cq31H~98UlbPEtRQfVZF9YB57WX2jElJy1Q>ZX t^B8z?OxD$q-CU$Gm3=b1g9u~$W*G+s7Dk52jxGl$`%8Oo_B7qi1OOl%C};ox diff --git a/.gitignore b/.gitignore index 894a44c..3277328 100644 --- a/.gitignore +++ b/.gitignore @@ -102,3 +102,4 @@ venv.bak/ # mypy .mypy_cache/ +.DS_Store diff --git a/README.md b/README.md index 3acf8d5..e8f1516 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ ## 文章列表 +* [朋友圈防折叠](./朋友圈防折叠/) * [批量生成手机号码](./批量生成手机号码) * [短视频二次创作](./video_auto/二次剪辑) * [使用 Python 制作 GIF 动画视频](./video_auto/制作GIF视频/) diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/.DS_Store" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/.DS_Store" new file mode 100644 index 0000000000000000000000000000000000000000..ae8216825ed89308000a89ddf663bba5ce188c75 GIT binary patch literal 8196 zcmeHLU2GIp6h3EL;Lh;VX@PBvlx|oWsw}!&S{k6pwp$EUej2xBTPU`(I|Ch=&a6AL zyZy1IF~<0VPX?o4Vl@5)c@m$DFB0B-&_qc@UyMdye9*)PG5X@Ub7v6>O^FX`VD9GL zbMHOp+`0Fg@7_CS0RVf7S^}T}02pO1mE~02B5^&>H>Hr@!<9(>04DuZ$b$p=P1Zq2 zfIxsifIxsifIxu2{{aEIvw30*-1|ZslmP+(0(T_>{CtQ|<}&HaIU&8Hg96|^0_Z(~FvD@%)N-2RZJONJ8FKYW zm)DLscEL?~hNFs7bo57cvNKA0FIkgo9UtjX-ZgB?Ijk2PlF?+`TLehwSFByv9Btj& z*4dT3ymD2IBG<`lG9|+?vZg**HZ*s9Saou`r5VD_sS!3pJ9I%m41)$` zI0dKS6?hBI!-wz@T!PQwbNB+jge&kJd=EdskMJ{Gh2P;1_!Ak{VjZr=W^BcKaSO&U zfje;*?#2f(h5PXU9>RV+jH5V)S7xt5AXthjGy2| zF~3lS)P15|De)5379+J&@;7tn$gL>aL=@fhpHlSe6`Yr~b*tB`-4NZpCEl@f&$U-N z?>*i?wCmaBy+Oekk4Y7#2nL7i8yeT$BR35a$Mnhhtgq|_Wf^A^yUeYdBTY>TBWjE0 zrbv^lAd@^@E7yg5O>8S^s)*7;muQollqJMo;kUh0mX&Ivx6tnDBJENlvd|{GNeg_V zN%Oh5AQR8Q1-M8o{06=y?)?P6!c_!ZiYqXT8!&=V+=MN7KgO{Qw_!VRZx1H18z1)g zcMvl;j7M<o&{@Z0?Fi*D$~ + + + + +
+ + + + xmlns:android + + ^$ + + + +
+
+ + + + xmlns:.* + + ^$ + + + BY_NAME + +
+
+ + + + .*:id + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:name + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + name + + ^$ + + + +
+
+ + + + style + + ^$ + + + +
+
+ + + + .* + + ^$ + + + BY_NAME + +
+
+ + + + .* + + http://schemas.android.com/apk/res/android + + + ANDROID_ATTRIBUTE_ORDER + +
+
+ + + + .* + + .* + + + BY_NAME + +
+
+
+
+
+ \ No newline at end of file diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.idea/gradle.xml" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.idea/gradle.xml" new file mode 100644 index 0000000..674414f --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.idea/gradle.xml" @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.idea/misc.xml" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.idea/misc.xml" new file mode 100644 index 0000000..703e5d4 --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.idea/misc.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.idea/runConfigurations.xml" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.idea/runConfigurations.xml" new file mode 100644 index 0000000..7f68460 --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.idea/runConfigurations.xml" @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.project" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.project" new file mode 100644 index 0000000..aec280f --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.project" @@ -0,0 +1,17 @@ + + + NoCollapseInput + Project NoCollapseInput created by Buildship. + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.buildship.core.gradleprojectnature + + diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.settings/org.eclipse.buildship.core.prefs" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.settings/org.eclipse.buildship.core.prefs" new file mode 100644 index 0000000..e889521 --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.settings/org.eclipse.buildship.core.prefs" @@ -0,0 +1,2 @@ +connection.project.dir= +eclipse.preferences.version=1 diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.vscode/settings.json" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.vscode/settings.json" new file mode 100644 index 0000000..e0f15db --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/.vscode/settings.json" @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "automatic" +} \ No newline at end of file diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/.classpath" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/.classpath" new file mode 100644 index 0000000..eb19361 --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/.classpath" @@ -0,0 +1,6 @@ + + + + + + diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/.gitignore" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/.gitignore" new file mode 100644 index 0000000..796b96d --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/.gitignore" @@ -0,0 +1 @@ +/build diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/.project" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/.project" new file mode 100644 index 0000000..ac485d7 --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/.project" @@ -0,0 +1,23 @@ + + + app + Project app created by Buildship. + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.buildship.core.gradleprojectnature + + diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/.settings/org.eclipse.buildship.core.prefs" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/.settings/org.eclipse.buildship.core.prefs" new file mode 100644 index 0000000..b1886ad --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/.settings/org.eclipse.buildship.core.prefs" @@ -0,0 +1,2 @@ +connection.project.dir=.. +eclipse.preferences.version=1 diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/build.gradle" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/build.gradle" new file mode 100644 index 0000000..0bf342f --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/build.gradle" @@ -0,0 +1,44 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 28 + defaultConfig { + applicationId "com.xingag.preventrubbishapp" + minSdkVersion 21 + targetSdkVersion 28 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } } + } + + buildTypes { + + debug { + minifyEnabled false + } + + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility = 1.8 + targetCompatibility = 1.8 + } + +} + + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'androidx.appcompat:appcompat:1.0.2' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test.ext:junit:1.1.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' + implementation 'com.wuhenzhizao:titlebar:1.1.4' + implementation 'com.google.android.material:material:1.0.0' + implementation 'com.google.code.gson:gson:2.8.6' +} diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/proguard-rules.pro" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/proguard-rules.pro" new file mode 100644 index 0000000..f1b4245 --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/proguard-rules.pro" @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/androidTest/java/com/xingag/preventrubbishapp/ExampleInstrumentedTest.java" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/androidTest/java/com/xingag/preventrubbishapp/ExampleInstrumentedTest.java" new file mode 100644 index 0000000..05797e4 --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/androidTest/java/com/xingag/preventrubbishapp/ExampleInstrumentedTest.java" @@ -0,0 +1,29 @@ +package com.xingag.preventrubbishapp; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest +{ + @Test + public void useAppContext() + { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + + assertEquals("com.xingag.preventrubbishapp", appContext.getPackageName()); + } +} diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/AndroidManifest.xml" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/AndroidManifest.xml" new file mode 100644 index 0000000..6546f04 --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/AndroidManifest.xml" @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/preventrubbishapp/App.java" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/preventrubbishapp/App.java" new file mode 100644 index 0000000..787a3b0 --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/preventrubbishapp/App.java" @@ -0,0 +1,24 @@ +package com.xingag.preventrubbishapp; + +import android.app.Application; +import android.content.Context; + +public class App extends Application +{ + private static App instance = null; + + public static int phone_type = 0; + + public static App getInstance() + { + return instance; + } + + @Override + public void onCreate() + { + super.onCreate(); + instance = this; + phone_type = BuildConfig.phone_type; + } +} diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/preventrubbishapp/MainActivity.java" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/preventrubbishapp/MainActivity.java" new file mode 100644 index 0000000..0d00f89 --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/preventrubbishapp/MainActivity.java" @@ -0,0 +1,82 @@ +package com.xingag.preventrubbishapp; + +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.TextView; + +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; + +import com.xingag.utils.AccessibilityUtil; + +public class MainActivity extends AppCompatActivity implements View.OnClickListener +{ + + //包名和服务名称 + private static final String PACKAGE_NAME = "com.xingag.preventrubbishapp"; + private static final String SERVICE_NAME = "com.xingag.service.PreventService"; + + private AccessibilityUtil accessibilityUtil = null; + + //状态 + private TextView status_tv = null; + + private Button open_service_btn = null; + + @Override + protected void onCreate(Bundle savedInstanceState) + { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + status_tv = findViewById(R.id.status_tv); + open_service_btn = findViewById(R.id.open_service_btn); + open_service_btn.setOnClickListener(this); + + accessibilityUtil = new AccessibilityUtil(MainActivity.this, + PACKAGE_NAME, SERVICE_NAME); + + //设置标题 + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) + { + actionBar.setTitle("不折叠服务"); + } + + //判断状态,如果没有开启,就跳到设置界面 + openAccessibilityMet(); + } + + public void openAccessibilityMet() + { + //服务状态 + boolean status = AccessibilityUtil.isAccessibilitySettingsOn(this, SERVICE_NAME); + if (!status) + { + accessibilityUtil.openSettingDialog(); + } + } + + + @Override + protected void onResume() + { + super.onResume(); + //判断服务状态 + boolean status = AccessibilityUtil.isAccessibilitySettingsOn(this, SERVICE_NAME); + status_tv.setText(status ? "开启" : "关闭"); + } + + @Override + public void onClick(View view) + { + if (view.getId() == R.id.open_service_btn) + { + accessibilityUtil.openSettingPage(); + } + } +} + diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/service/BaseService.java" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/service/BaseService.java" new file mode 100644 index 0000000..2bb0f5a --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/service/BaseService.java" @@ -0,0 +1,89 @@ +package com.xingag.service; + +import android.accessibilityservice.AccessibilityService; +import android.accessibilityservice.AccessibilityServiceInfo; +import android.annotation.SuppressLint; +import android.annotation.TargetApi; +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.Context; +import android.os.Build; +import android.os.Bundle; +import android.text.TextUtils; +import android.util.Log; +import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityManager; +import android.view.accessibility.AccessibilityNodeInfo; + + +import java.util.List; + +/*** + * 无障碍服务的基类 + */ + + +public class BaseService extends AccessibilityService +{ + + @SuppressLint("StaticFieldLeak") + private static BaseService mInstance = null; + + + public static BaseService getInstance() + { + if (mInstance == null) + { + mInstance = new BaseService(); + } + return mInstance; + } + + + @Override + public void onAccessibilityEvent(AccessibilityEvent event) + { + + } + + @Override + public void onInterrupt() + { + + } + + + /** + * 模拟输入 + * + * @param nodeInfo nodeInfo + * @param text text + */ + public void inputText(AccessibilityNodeInfo nodeInfo, String text) + { + ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); + + Log.d("xag", "字符个数为:" + text.length()); + for (int i = 0; i < text.length(); i++) + { + String temp = text.substring(0, i + 1); + Log.e("xag", "输入一次,输入内容是:" + temp); + + //输入内容 + Bundle arguments = new Bundle(); + arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, temp); + nodeInfo.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments); + + //下面可以控制输入的速度,这里设置间隔为0.1s + try + { + Thread.sleep(100); + } catch (InterruptedException e) + { + e.printStackTrace(); + } + } + } + + +} diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/service/PreventService.java" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/service/PreventService.java" new file mode 100644 index 0000000..cabf382 --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/service/PreventService.java" @@ -0,0 +1,131 @@ +package com.xingag.service; + +import android.accessibilityservice.AccessibilityService; +import android.annotation.TargetApi; +import android.content.Intent; +import android.os.Build; +import android.text.TextUtils; +import android.util.Log; +import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityNodeInfo; +import android.widget.Toast; + +import com.xingag.utils.AppUtil; + +import java.util.ArrayList; +import java.util.List; + +public class PreventService extends BaseService +{ + //所有的节点 + public static List nodes = new ArrayList<>(); + + private static final String CLASS_NAME_SNS_UPLOAD = "com.tencent.mm.plugin.sns.ui.SnsUploadUI"; + + /** + * 连接服务成功后回调该方法 + */ + @Override + protected void onServiceConnected() + { + super.onServiceConnected(); + //缓存中获取数据 + Toast.makeText(PreventService.this, "连接服务成功", + Toast.LENGTH_SHORT).show(); + + stopSelf(); + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) + { + return super.onStartCommand(intent, flags, startId); + } + + @Override + public void onAccessibilityEvent(AccessibilityEvent event) + { + //如果是朋友圈发布界面 + String className = event.getClassName().toString(); + + Log.d("xag", "className:" + className); + + if (TextUtils.equals(CLASS_NAME_SNS_UPLOAD, className)) + { + Log.e("xag", "朋友圈发布界面"); + + //获取剪切板的内容 + String content = AppUtil.getClipBoardContent(getApplicationContext()); + + if (!TextUtils.isEmpty(content)) + { + Log.d("xag", "剪切板内容是:" + content); + inputContent(event, content); + } else + { + Log.d("xag", "剪切板内容为空"); + } + } + + } + + + /*** + * 回复消息 + * @param event + */ + private void inputContent(AccessibilityEvent event, String content) + { + //获取输入框元素 + //方式一 +// AccessibilityNodeInfo chat_edit = findViewByID("com.tencent.mm:id/d41"); + + //方式二 + nodes.clear(); + AppUtil.getAllNodes(getRootInActiveWindow()); + AccessibilityNodeInfo chat_edit = findNodeInfoByClassName("android.widget.EditText"); + + //把文本输入到输入框内 + inputText(chat_edit, content); + } + + + /*** + * 通过类名查找元素 + * @param className + * @return + */ + public AccessibilityNodeInfo findNodeInfoByClassName(String className) + { + for (int i = 0; i < nodes.size(); i++) + { + //当前节点元素及classname + AccessibilityNodeInfo currentNode = nodes.get(i); + String tagClassName = currentNode.getClassName().toString(); + + Log.d("xag", "tagClassName:" + tagClassName); + if (TextUtils.equals(tagClassName, className)) + { + Log.d("xag", "元素找到了"); + return currentNode; + } + } + Log.d("xag", "元素没找到"); + return null; + } + + + @Override + public void onInterrupt() + { + Log.d("xag", "无障碍服务被打断"); + } + + + @Override + public void onDestroy() + { + super.onDestroy(); + Log.d("xag", "无障碍服务销毁"); + } +} diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/utils/AccessibilityUtil.java" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/utils/AccessibilityUtil.java" new file mode 100644 index 0000000..94c0378 --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/utils/AccessibilityUtil.java" @@ -0,0 +1,141 @@ +package com.xingag.utils; + +import android.app.ActivityManager; +import android.app.AlertDialog; +import android.content.ComponentName; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.provider.Settings; +import android.text.TextUtils; + +import com.xingag.preventrubbishapp.R; + +import java.util.List; + +public class AccessibilityUtil +{ + private Context mContext; + private String locPackageName; + private String accessibilityClassAbsolutePath; + + /** + * 构造方法 + * + * @param mContext + * @param accessibilityClassAbsolutePath + */ + public AccessibilityUtil(Context mContext, String locPackageName, + String accessibilityClassAbsolutePath + ) + { + this.mContext = mContext; + this.locPackageName = locPackageName; + this.accessibilityClassAbsolutePath = accessibilityClassAbsolutePath; + } + + + /** + * 判断是否有辅助功能权限 + * + * @return 是否开启服务 + */ + public static boolean isAccessibilitySettingsOn(Context context, String className) + { + if (context == null) + { + return false; + } + ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); + // 获取正在运行的服务列表 + List runningServices = + activityManager.getRunningServices(300); + for (int i = 0; i < runningServices.size(); i++) + { + ComponentName service = runningServices.get(i).service; + if (service.getClassName().equals(className)) + { + return true; + } + } + return false; + } + + public boolean isAccessibilitySettingsOn() + { + boolean isAccessibilityOn = false; + try + { + int accessibilityEnabled = Settings.Secure.getInt(mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_ENABLED); + TextUtils.SimpleStringSplitter mStringColonSplitter = new TextUtils.SimpleStringSplitter(':'); + if (accessibilityEnabled == 1) + { + String settingValue = Settings.Secure.getString(mContext.getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES); + if (settingValue != null) + { + TextUtils.SimpleStringSplitter splitter = mStringColonSplitter; + splitter.setString(settingValue); + while (splitter.hasNext()) + { + String accessabilityService = splitter.next(); + //辅助服务关键路径,格式如"com.corget/com.corget.service.UnAccessibilityService" + String service = locPackageName + "/" + accessibilityClassAbsolutePath; + if (accessabilityService.equalsIgnoreCase(service)) + { + isAccessibilityOn = true; + } + } + } + } + } catch (Settings.SettingNotFoundException e) + { + e.printStackTrace(); + } + return isAccessibilityOn; + } + + + public void openSettingDialog() + { + AlertDialog.Builder mDialogBuilder = new AlertDialog.Builder(mContext); + + mDialogBuilder.setIcon(R.mipmap.ic_launcher); + mDialogBuilder.setTitle("警告"); + mDialogBuilder.setMessage("防折叠服务没有开启,请先开启服务"); + mDialogBuilder.setCancelable(false); + mDialogBuilder.setPositiveButton("Sure", + new DialogInterface.OnClickListener() + { + @Override + public void onClick(DialogInterface dialog, int which) + { + dialog.dismiss(); + openSettingPage(); + } + }); + mDialogBuilder.setNegativeButton("Cancel", + new DialogInterface.OnClickListener() + { + @Override + public void onClick(DialogInterface dialog, int which) + { + dialog.dismiss(); + } + }); + mDialogBuilder.create().show(); + } + + /*** + * 打开设置界面 + */ + public void openSettingPage() + { + Intent startIntent = new Intent( + Settings.ACTION_ACCESSIBILITY_SETTINGS); + mContext.startActivity(startIntent); + mContext.sendBroadcast(new Intent() + .setAction("com.xingag.setting.dialog")); + } + + +} diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/utils/AppUtil.java" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/utils/AppUtil.java" new file mode 100644 index 0000000..74253f2 --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/java/com/xingag/utils/AppUtil.java" @@ -0,0 +1,56 @@ +package com.xingag.utils; + +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.Context; +import android.util.Log; +import android.view.accessibility.AccessibilityNodeInfo; + +import com.xingag.service.PreventService; + +import static android.content.Context.CLIPBOARD_SERVICE; + + +public class AppUtil +{ + + /*** + * 获取剪切板上的内容 + * @return + */ + public static String getClipBoardContent(Context context) + { + ClipboardManager cm = (ClipboardManager) context.getSystemService(CLIPBOARD_SERVICE); + ClipData cd2 = cm.getPrimaryClip(); + String result = ""; + try + { + result = cd2.getItemAt(0).getText().toString(); + } catch (Exception e) + { + //pass + Log.d("xag", "产生异常了。。。。"); + } + return result; + } + + /*** + * 获取当前页面所有的元素 + * @param node + */ + public static void getAllNodes(AccessibilityNodeInfo node) + { + int count = node.getChildCount(); + + if (count == 0) + { + PreventService.nodes.add(node); + } else + { + for (int i = 0; i < count; i++) + { + getAllNodes(node.getChild(i)); + } + } + } +} diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/drawable-v24/ic_launcher_foreground.xml" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/drawable-v24/ic_launcher_foreground.xml" new file mode 100644 index 0000000..1f6bb29 --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/drawable-v24/ic_launcher_foreground.xml" @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/drawable/btn_bg.xml" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/drawable/btn_bg.xml" new file mode 100644 index 0000000..1f6bdb7 --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/drawable/btn_bg.xml" @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/drawable/ic_launcher_background.xml" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/drawable/ic_launcher_background.xml" new file mode 100644 index 0000000..0d025f9 --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/drawable/ic_launcher_background.xml" @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/layout/activity_main.xml" "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/layout/activity_main.xml" new file mode 100644 index 0000000..143762a --- /dev/null +++ "b/\346\234\213\345\217\213\345\234\210\351\230\262\346\212\230\345\217\240/NoCollapseInput/app/src/main/res/layout/activity_main.xml" @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + +