AI手机网,短视频直播 硬改改机 一键新机 群控软件 刷机定制

 找回密码
 立即注册
搜索
查看: 2257|回复: 9

自定义插件中SendIntent方法所支持的参数列表

[复制链接]
发表于 2019-4-1 11:15:39 | 显示全部楼层 |阅读模式
  1.   //打开附近的人界面,这个具体参数请查看开发博客
  2.     var dic = new Dictionary<string, string> { { "act", "opennearui" } };
  3.      SendIntent(dic);
  4. 上一篇博文中,我们的DEMO插件 里有这么一句,其实这个是我们的开发人员预置的接口,可用的参数有以下几个
  5.     //打开指定用户的聊天对话界面
  6.     var dic = new Dictionary<string, string> { { "act", "openchatui" },{"userid“,”用户id"} };
  7.     SendIntent(dic);

  8.     //打开指定用户的用户信息界面
  9.     var dic = new Dictionary<string, string> { { "act", "openuser" },{"userid“,”用户id"} };
  10.     SendIntent(dic);

  11.     //打开好友群发界面
  12.     var dic = new Dictionary<string, string> { { "act", "openmasssend" } };
  13.     SendIntent(dic);

  14.     //打开搜索好友界面
  15.     var dic = new Dictionary<string, string> { { "act", "searchui" } };
  16.     SendIntent(dic);

  17.     //打开我的信息界面
  18.     var dic = new Dictionary<string, string> { { "act", "openinfoui" }};
  19.     SendIntent(dic);

  20.     //打开朋友圈界面
  21.     var dic = new Dictionary<string, string> { { "act", "opensnsui" }};
  22.     SendIntent(dic);

  23.     //打开附近的人界面
  24.     var dic = new Dictionary<string, string> { { "act", "opennearui" } };
  25.     SendIntent(dic);

  26.     //打开附近对我打招呼的人界面
  27.     var dic = new Dictionary<string, string> { { "act", "opennearsayhi" } };
  28.     SendIntent(dic);

  29.     //打开摇一摇
  30.     var dic = new Dictionary<string, string> { { "act", "openyaoyiyao" } };
  31.     SendIntent(dic);

  32.     //打开摇一摇对我打招呼的人
  33.     var dic = new Dictionary<string, string> { { "act", "openyaoyiyaosayhi" };
  34.     SendIntent(dic);

  35.     //打开指定url
  36.     var dic = new Dictionary<string, string> { { "act", "openurl" }  ,{"url","目标地址"}};
  37.     SendIntent(dic);
  38. 目前就这些
复制代码


 楼主| 发表于 2019-4-1 11:16:25 | 显示全部楼层
问---我试了下讨论里的几个例子,,,按理说插件是运行在主控端的(也就是说插件调用SDK时是通过你们内部通讯方式发生消息至服务器,然后在转到手机执行),,那么应该是可以在插件中通过某种通讯方式(socket、http)从其他地方来获取代码然后在插件中动态编译执行的.....但目前的问题是,,能不能提供下插件的生命周期说明或者图,,,好了解下这种需要长期稳定运行的插件执行方式可不可行

答--
插件的整个生命周期都在RunScript方法里面,从执行插件那一刻开始,如果里面的代码没有循环或者耗时,就会直接执行完成然后自动结束。如果想让插件长期运行,在里面加入一个循环和Thread.Sleep即可,不可以使用线程。在这个循环里面,可以做任何事情,例如访问http从远程获取命令或代码来执行,当然如果想执行其他代码,还得实现动态编译这个东西。
 楼主| 发表于 2019-4-1 11:16:43 | 显示全部楼层

RunScript结束后就释放掉插件了?

插件本身就运行在一个线程里面,如果在RunScript方法里面使用线程代码就会直接执行到末尾,插件就结束了
 楼主| 发表于 2019-4-1 11:17:20 | 显示全部楼层

明白了,,,那么框架本身对插件的运行时间做超时验证了吗?或者说运行脚本线程后Job过没有? 如果我插件内是个死循环,,对框架本身有影响吗?、

没有超时验证,没有任何影响,但是同一台设备同时只能运行一个插件。
 楼主| 发表于 2019-4-1 11:17:59 | 显示全部楼层
  1. 们的软件名叫“侠客手机群控引擎”,既然它是一个引擎,就不应该只局限于一成不变的功能,所以应客户需求放出了插件功能。
  2. 用户可以基于自己需要来实现自己需要的任意功能,插件采用标准C# DLL方式开发,非常容易入门,目前提供了屏幕、按键、元素以及部分Intent实现的特定功能。

  3. 下面来给大家简单介绍一下插件开发、以及使用方法。

  4. 写插件需要的环境:

  5. VS2015 .net4.6

  6. <span style="font-weight:bolder;">DEMO项目下载地址</span>:自动给附近的人打招呼的插件

  7. 以这个演示项目为例讲解一下插件的编写以及使用方法
  8. 首先,插件的类型其实是一个标准的.net dll类库,只不过它继承了侠客手机群控引擎的SDK来实现而已
  9. 只要继承<span style="color:rgb(255, 0, 0);">AndroidControlSDK.AndroidScript</span>并实现<span style="color:rgb(255, 0, 0);">Name Description RunScript</span>这3个方法,即可实现一个完整的插件

  10. 完整DEMO

  11. using System;
  12. using System.Collections.Generic;
  13. using System.Runtime.Serialization;
  14. using System.Threading;
  15. using System.Windows.Media;

  16. namespace mysss
  17. {

  18.     public class Class1 : AndroidControlSDK.AndroidScript //继承AndroidControlSDK.AndroidScript来实现插件功能
  19.     {
  20.         public override string Name()
  21.         {
  22.             //返回插件的名称
  23.             return "自动给附近的人打招呼";
  24.         }

  25.         public override string Description()
  26.         {
  27.             //返回插件的描述
  28.             return "这是一个演示脚本";
  29.         }

  30.         //这个方法是插件的执行主体,所有功能都在这里执行
  31.         public override void RunScript()
  32.         {
  33.             //显示调试日志,正式用时可以不开启这个
  34.             ShowLogConsole();

  35.             //在手机屏幕上显示运行状态
  36.             ShowStatus("正在打开附近的人..", Color.FromRgb(78, 17, 255));

  37.             //打开附近的人界面,这个具体参数请查看开发博客
  38.             var dic = new Dictionary<string, string> { { "act", "opennearui" } };
  39.             SendIntent(dic);

  40.             //冷却1000毫秒
  41.             Thread.Sleep(5000);

  42.             //定义个int变量用于计数
  43.             var count = 0;

  44.             //定义一个变量为打招呼的内容
  45.             var zhaohu = "hi,你好啊";

  46.             //在手机屏幕上显示运行状态
  47.             ShowStatus("正在获取附近的人“列表”..");

  48.             //获取所有的昵称 com.tencent.mm:id/agg 这个是附近的人列表里的昵称资源id,这个可以通过android sdk里的 uiautomatorviewer.bat 这个工具来获取
  49.             var nicks = GetUiTexts("com.tencent.mm:id/agg");

  50.             Console.WriteLine("获取到的昵称数量:" + nicks.Count);

  51.             //循环给所有昵称打招呼
  52.             for (var index = 0; index < nicks.Count; index++)
  53.             {
  54.                 var nickname = nicks[index];
  55.                 ShowStatus("正在加“" + nickname + "”[累计:" + count + "]..");
  56.                 //查看是否包含这个昵称
  57.                 if (FindObj(nickname).Contains("成功找到元素"))
  58.                 {
  59.                     //包含就点击它
  60.                     if (FindAndCLickObj(nickname).Contains("true"))
  61.                     {
  62.                         //冷却1000毫秒
  63.                         Thread.Sleep(1000);
  64.                         //查找并点击“打招呼”
  65.                         var result = FindAndCLickObjByRegex("打招呼");
  66.                         //输出结果到日志
  67.                         Console.WriteLine(result);
  68.                         //如果点击成功
  69.                         if (result.Contains("true"))
  70.                         {
  71.                             Thread.Sleep(1000);
  72.                             //查找输入框输入内容
  73.                             FindAndInutText("android.widget.EditText", zhaohu, 0);
  74.                             Thread.Sleep(2000);
  75.                             //添加好友
  76.                             FindAndCLickObjByRegex("(加为朋友|发送)");
  77.                             Thread.Sleep(1000);
  78.                             //返回
  79.                             FindAndCLickObj("返回");
  80.                             Thread.Sleep(1000);
  81.                         }
  82.                         else
  83.                         {
  84.                             //如果没有打招呼按钮则直接返回(一般是已经添加过了)
  85.                             FindAndCLickObj("返回");
  86.                         }
  87.                     }
  88.                 }
  89.                 //计数器加1
  90.                 count++;

  91.             }

  92.         }

  93.     }
  94. }
  95. 以上代码就是一个完整的插件方法,同一个dll里可以做多个这样的插件,最后生成插件










  96. 然后就可以运行它了,勾上群控后,也可以象其他脚本一样,对所有手机生效。
复制代码


 楼主| 发表于 2019-4-1 11:19:19 | 显示全部楼层

能找到类型或命名空间名称“xcontrol”(是否缺少 using 指令或程序集引用?) 未能找到类型或命名空间名称“AndroidControlSDK”(是否缺少 using 指令或程序集引用?)        我有点小白,怎么解决,求简单指导??谢谢

插件的原理其实就是在界面上查找元素然后模拟点击,输入哦,所有只要是手机上的app都可以操作,很多客户都用自定义插件实现了自己需要的功能,讨论组里面已经有一键打开app的demo,其他方法参照通用点击查找方法


附件源码调试前请先添加对群控安装目录下AndroidModel.dll和xcontrol.core.dll两个文件的引用。http://www.xiake.net/blog/wp-con ... 016082114180332.rar
发表于 2019-8-7 12:53:50 | 显示全部楼层
嗯,这个岁万想学习的A
发表于 2019-8-7 16:07:37 | 显示全部楼层
顶一下~~~~~~~R
回复

使用道具 举报

发表于 2019-8-7 22:06:35 | 显示全部楼层
感謝分享Z
回复

使用道具 举报

发表于 2019-8-8 05:59:05 | 显示全部楼层
好苦恼H
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

技术交流售后群

QQ|小黑屋|手机版|站点找错-建议|AI手机网 |Sitemap



GMT+8, 2024-5-20 10:09 , Processed in 0.161414 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表