微信自动挑选黑名单
做過銷售、營銷的同學都知道,手機聯系人少于一千都不好意思打招呼,大量的聯系人占用了很多手機內存,導致手機運行越來越慢。而這些聯系人中有很多已經刪除了我們,或者已經拉黑了我們,如何快速把這些已經刪除或者拉黑我們的聯系人找出來并刪除是優化手機速度很重要的手段,下面就給出基于「Android智能輔助平臺」免費實現的自動挑選微信黑名單代碼(紅米9A、8A測試通過)
var sAlpha = '';function main() {var removedList = [];if (!launchApp('com.tencent.mm')) {console.error('啟動微信失敗');return removedList;}var ret = smartFindView('txt:發現', {failed: exitPopup, maxStep: 30});if (ret.length <= 0) {console.log('進入微信失敗');return ;}var maxSelCount = 37;var username = findUsername();console.log('username:' + username);if (username != '') {ret = switchPage('txt:通訊錄', 'txt:新的朋友', {click:true, failed: exitPopup, maxStep:8});if (ret.length > 0) {console.log('進入通訊錄');var exit = false, allNameList = [];while(!exit) {ret = switchPage('txt:更多功能按鈕', 'txt:發起群聊', {click:true, failed: exitPopup, maxStep:8});if (ret.length > 0) {ret = switchPage('txt:發起群聊', 'txt:選擇一個群', {click:true, failed: exitPopup, maxStep:8});if (ret.length > 0) {jumpByAlpha();var curList = [], preFirstText = '', selectedCount = 0;while (selectedCount < maxSelCount) {var firstText = '', index = -1, curSelectedCount = 0;ret = smartFindView('cn:android.widget.ListView', {failed: exitPopup});while (ret.length > 0 && index < ret.views[0].size - 1) {if (index > -1) {index++;} else {console.log('ret.views[0].size:' + ret.views[0].size);for (var item of ret.views[0]) {// console.log('item className:' + item.className);++index;if (item.className == 'android.widget.RelativeLayout') {console.log('find first---');break;}}// console.log('find for end');}if (index > -1) {if (index < ret.views[0].size) {var item = ret.views[0][index];if (item.size > 0) {if (item[0].className == 'android.widget.TextView') {sAlpha = item[0].text;console.log('找到字母:' + sAlpha);if (sAlpha=='') {firstText = item[0].text;}} else {var t = findView('cn:android.widget.TextView', {root: item});if (t.length > 0) {var text = t.views[0].text;if (firstText=='') {firstText = text;}console.log('找到文本:' + text);if (allNameList.indexOf(text) < 0) {console.log('添加:' + text);var checkView = item[0][0];if (checkView) {click(checkView, {click: true});allNameList.push(text);curList.push(text);curSelectedCount += 1;if (curSelectedCount + selectedCount >= maxSelCount) {break;}} else {console.log('找不到 checkbox:' + text);}} else {console.log('已經找到過了:' + text);}} else {console.log('沒有找到text');}}} else {console.log('item size is 0');}} else {console.log('一輪結束');break;}} else {console.log('找到的index為-1');break;}ret = smartFindView('cn:android.widget.ListView', {failed: exitPopup});}console.log('一頁完成');if (preFirstText == firstText) {console.log('兩次相同,結束了----:' + firstText);exit = true;break;}preFirstText = firstText;if (curSelectedCount > 0) {selectedCount += curSelectedCount;if (selectedCount < maxSelCount) {console.log('scroll 1');scroll('up', {root: ret.views[0], type: 2, afterWait: 1000});}} else {console.log('scroll 2');scroll('up', {root: ret.views[0], type: 2, afterWait: 1000});}console.log('一輪 正式結束 selectedCount:' + selectedCount);}if (selectedCount > 0) {var friends = findFriends();console.log('friends:' + friends);for (var item of curList) {if (friends.indexOf(item) < 0) {removedList.push(item);}}}if (selectedCount < maxSelCount) {console.log('結束了---');exit = true;break;}console.log('完成一圈');} else {console.log('進入選擇失敗');}} else {console.log('進入群聊失敗');}}console.log('removed:' + removedList);}} else {console.log('find username failed');}console.log('退出');return removedList; }function findFriends() {var result = [];var ret = switchPage('txt^:完成', 'txt^:群聊', {click:true, failed: exitPopup, maxStep: 10});if (ret.length > 0) {ret = switchPage('txt:聊天信息', 'txt:分隔欄', {click:true, failed: exitPopup, maxStep: 10});if (ret.length > 0) {var needFindFriend = true;ret = smartFindView('cn:android.widget.ListView', {failed: exitPopup});while (ret.length > 0) {if (needFindFriend) {for (var item of ret.views[0]) {if (item.className == 'android.widget.TextView') {needFindFriend = false;break;} else {for (var child of item) {if (child.size == 2 && child[1].size == 1) {if (result.indexOf(child[1][0].text) < 0) {result.push(child[1][0].text);} else {console.log('已經添加過,忽略');break;}} else {console.log('做完了:' + result.length);needFindFriend = false;break;}}if (!needFindFriend) {break;}}}} else {ret = smartFindView('txt:刪除并退出', {failed: exitPopup, maxStep: 2});if (ret.length > 0) {console.log('刪除并退出了');ret = switchPage('txt:刪除并退出', 'txt:離開群聊', {failed: exitPopup});if (ret.length > 0) {ret = switchPage('txt:離開群聊', 'txt:發現', {click: true, failed: exitPopup});if (ret.length > 0) {console.log('成功---');return result;}}break;}}scroll('up', {distance: 0.9});ret = smartFindView('cn:android.widget.ListView', {failed: exitPopup});}} else {console.log('進入錯誤1');}} else {console.log('進入錯誤2');}back2Page('txt:發現', {failed: exitPopup, backFirst: false});return result; }function jumpByAlpha() {console.log('sAlpha:' + sAlpha);var jumpIndex = 0;if (sAlpha != '') {if ('#' == sAlpha) {jumpIndex = 26;} else {jumpIndex = sAlpha.charCodeAt(0) - 'A'.charCodeAt(0);}}console.log('jumpIndex:' + jumpIndex);if (jumpIndex > -1) {var ret = smartFindView('cn:android.view.View', {flag: 'find_all', failed: exitPopup});if (ret.length > 0) {console.log('total length:' + ret.views.length + ' rsDensity:' + rsDensity + ' rsScreenHeight:' + rsScreenHeight);for (var item of ret.views) {if ((item.width < 30*rsDensity) && (item.height > rsScreenHeight/2)) {console.log('find panel item width:' + item.width + ' height:' + item.height);var per = item.height / 29.0, x = item.left + item.width*2/3, y = parseInt((jumpIndex+2)*per + per/2 + item.top);console.log('click x:' + x + ' y:' + y + ' per:' + per);gestureClick(x, y, {afterWait: 1000, duration: 200});break;}}} else {console.log('找不到 pandel')}} else {console.log('不需要跳轉');} }function exitPopup() {var ret = findView('txt:稍后|txt:以后再說|txt:允許|txt:確定|txt:存儲空間不足', {maxStep: 1});if (ret.length > 0) {console.log('找到:' + ret.tag);if (ret.tag == '存儲空間不足') {clickByText('忽略', {click: true});} else {click(ret.views[0], {click: true});}} }function findUsername() {var ret = switchPage('txt:我', 'txt^:微信號', {click: true, failed: exitPopup});if (ret.length > 0) {var text = ret.views[0].text;return text.substring(text.indexOf('微信號:') +'微信號:'.length);}return ""; }原文地址:實踐之微信自動挑選黑名單
總結
- 上一篇: Java 中哈希码的说明
- 下一篇: js快速计算文件hash值