|
using System;using System.Collections.Generic;using System.Runtime.Serialization;using System.Threading;using System.Windows.Media;namespace mysss{ public class Class1 : AndroidControlSDK.AndroidScript //继承AndroidControlSDK.AndroidScript来实现插件…
) n. {- Y3 [" J1 q \' _
5 ?' R. ~/ v, V u using System;
0 t; |! F3 p' T% }) k* C2 ? using System.Collections.Generic;
$ L/ b) P# G1 @: l' S using System.Runtime.Serialization;- I7 V8 V6 H+ ^
using System.Threading;4 e. O/ b6 M- b* A. M$ C
using System.Windows.Media;
% T3 _ O* V0 P& m6 E. C. t
& }6 D: @% @& A, g5 _ namespace mysss
/ s! o* M n% Z: I+ ` {
6 R I6 M2 U; G( f$ e4 M2 [ 0 ?9 ~1 t' p5 x; a O- l
public class Class1 : AndroidControlSDK.AndroidScript //继承AndroidControlSDK.AndroidScript来实现插件功能+ ]6 L) I# J9 y- ^# {
{
( G6 t/ B7 H; w* _4 g$ |9 N public override string Name()
6 m# h7 Y8 L& t$ k T+ O& U7 M! P {( W( P4 q' B/ J% l* Q8 p1 q
//返回插件的名称
) h/ D A6 V0 f U" O3 {: ]: R- n return "自动给附近的人打招呼";) R5 Q' M' {+ p; }7 t( ?
}
0 A& G' H& u) {. W* _/ u9 L$ a
( b- _1 N0 s; g# } public override string Description()
0 c& h( J2 q! p) t5 N. ` {9 C+ B: ^0 F& ^; B; W+ M& I
//返回插件的描述! E3 R$ X( [& j l
return "这是一个演示脚本";5 z+ p) g* X+ |) }
}$ X L' o5 S+ n
+ y1 ]; O/ O# c //这个方法是插件的执行主体,所有功能都在这里执行" I. R5 i( K4 ^, a$ ?/ e9 y. {* V
public override void RunScript()" L7 p+ h/ f& S' _$ j
{" M6 u9 Z8 g$ c
//显示调试日志,正式用时可以不开启这个' A% v4 j9 }% [6 `) X
ShowLogConsole();! ^# o- ?. f4 V% y! A* G
3 s/ b# W) Q7 N //在手机屏幕上显示运行状态1 S' w( N) ~5 Y- l! `! R0 M& c
ShowStatus("正在打开附近的人..", Color.FromRgb(78, 17, 255));1 f' F. O) f- l. {$ R
: ?+ @: x6 L: X; d
//打开附近的人界面,这个具体参数请查看开发博客# E! X \8 R& Y* w7 ~( c1 y
var dic = new Dictionary<string, string> { { "act", "opennearui" } };
5 E5 p2 A9 V, \9 _' q8 O SendIntent(dic);
[% k# E+ Z F- i+ U% d
3 s- C& G6 A* O$ U //冷却1000毫秒
j* b( w% \: H" m% C0 {" p Thread.Sleep(5000);
2 s/ k+ K+ T, _. i# L: W9 P/ \ # d* B1 p& E9 c) L: c. Q1 Q
0 L; y1 L" H$ u4 u6 Q! U; `
//定义个int变量用于计数/ d; |9 c8 y; ^+ G. {7 x, W
var count = 0;* s' l/ Y4 Y7 j8 m0 H
& M) [/ _( y) e; ~9 `4 d8 A //定义一个变量为打招呼的内容; R+ P% ]' H/ X
var zhaohu = "hi,你好啊";
2 Y# b- V* ~4 Y K. T1 s0 H
( t1 G M- }; Y //在手机屏幕上显示运行状态9 m* k! F1 \& \% U( r
ShowStatus("正在获取附近的人“列表”..");
$ b! }) Q$ A3 k% g- r# Z* Q
: x& d0 c" C" p' o4 t5 q' l3 r //获取所有的昵称 com.tencent.mm:id/agg 这个是附近的人列表里的昵称资源id,这个可以通过android sdk里的 uiautomatorviewer.bat 这个工具来获取4 p# Y8 t) z! O. m0 _' O
var nicks = GetUiTexts("com.tencent.mm:id/agg");
. K2 c* J5 N N) C+ F
0 S+ C" L E/ J* B2 B
- T' W, S* C" H7 k& v7 E6 E Console.WriteLine("获取到的昵称数量:" + nicks.Count);, C# S2 `# |' } J% M' [# a
( d+ d0 E, T3 Q! T+ g& y //循环给所有昵称打招呼7 W& n2 y$ a7 N! A3 ?
for (var index = 0; index < nicks.Count; index++). p4 c" |5 x7 @: i
{1 t4 O t+ \. R
var nickname = nicks[index];5 V) f6 U e- k
ShowStatus("正在加“" + nickname + "”[累计:" + count + "]..");: z; S7 n: g+ A9 h' Y
//查看是否包含这个昵称5 n3 x0 F2 r6 s" U; Y/ Y" y
if (FindObj(nickname).Contains("成功找到元素"))
* h2 w$ j5 s8 J* g: D {
4 _+ {7 p" B2 e6 _ o //包含就点击它
; _* F& g' H" X l* A+ W/ h* R if (FindAndCLickObj(nickname).Contains("true"))
' _+ T( u* u E0 ]6 m$ m3 E {9 S: I) ^ y, ~0 z
//冷却1000毫秒: n' w& G, a# y( X& t6 V
Thread.Sleep(1000);
1 p1 u% S" g; U$ j. S //查找并点击“打招呼”
+ M4 g3 T" {! N, h' M var result = FindAndCLickObjByRegex("打招呼");
5 c; F1 k, ^+ z$ {2 o. n& M //输出结果到日志
3 ] ^% e& ]. ?: `8 P Console.WriteLine(result);
& i& N' L8 T' a7 o3 \7 o //如果点击成功
3 j: |; V& A8 B4 o# W* H if (result.Contains("true"))
4 w ^" |( u% g3 ~! N$ `6 U {
$ P! x: ]: W+ s7 d! C9 T, ~! T M Thread.Sleep(1000);
- i U2 F# J# M7 q+ o. ? d0 } //查找输入框输入内容4 R: q0 x% L) F4 `. G2 ?; J
FindAndInutText("android.widget.EditText", zhaohu, 0);
( m7 ^9 S& E4 N/ u Thread.Sleep(2000);
5 |& d* x5 V! w$ L4 L0 r //添加好友
" R o! |: u0 |7 R1 A6 ~* R7 _ FindAndCLickObjByRegex("(加为朋友|发送)");
& x& v' J6 @) v5 \* R Thread.Sleep(1000);& I% j7 o# i7 V. g6 Q! d! O
//返回
2 W; p1 s, h. `1 v7 p1 e FindAndCLickObj("返回");$ g$ h" W4 s7 B0 ?2 o V
Thread.Sleep(1000);
$ }2 i6 q0 j3 ^& I8 A' Y" Y }3 l3 x0 P" ^! ^4 S; y6 ~
else
4 I6 o) K6 D+ ^. E3 O# n$ h {& K- |6 D7 z \' L# s- Q( P4 O4 M
//如果没有打招呼按钮则直接返回(一般是已经添加过了)
+ C' I. B/ d5 {& Z FindAndCLickObj("返回");' Q& \7 T* }* J' g7 {/ B. j
}
9 b/ h: E6 P4 r( N }$ f0 J' V6 {6 V
}
5 L9 G3 \( T, y //计数器加19 d, A3 y- i& Q8 n: c+ O0 `. T/ {: G
count++;2 @- a! z, y4 d1 \! \- {
# W6 X- I N; x* k$ n/ K" O
}0 }& I F' W2 e4 D# h2 j
( Y ^/ ^: A) R
}
6 B3 b7 Z) ]% A) h& r1 q7 N
5 E M- [! i F6 v1 n7 j }. S$ k9 W+ X2 e3 i) M
}" D* [' x( W5 h$ o
% R: M. ?9 d; e2 j1 P" }
/ E2 [% V/ r& B, I1 L1 I) J
|
|