精华内容
下载资源
问答
  • 想要下载源码的可以到这个地址下载 https://blog.csdn.net/Mr___Xu/article/details/83688678
  • 自动钉钉打卡

    千次阅读 2019-06-14 16:47:16
    自动钉钉打卡,经试用了差不多一个月了吧,一直正常,略作步骤记录。 1、用一个买来的样品Android平板放在办公室(废旧手机什么的都可); 2、安装钉钉,找到packageName; 3、写个程序,开启前台服务,用Alert...

    自动钉钉打卡,经试用了差不多一个月了吧,一直正常,略作步骤记录。

    1、用一个买来的样品Android平板放在办公室(废旧手机什么的都可);

    2、安装钉钉,找到packageName;

    3、写个程序,开启前台服务,用AlertManager设置连个循环闹钟(此处注意PendingIntent必须是两个对象而不能只用一个来修改参数)发送广播,收到广播后启动钉钉,三分钟之后杀死钉钉(我因使用系统权限故可以随便玩儿,没系统权限没root的话只需想将其想办法从前台挤下去即可)。

     

    可以正常使用了,一个月功能正常。需要注意的点是闹钟并非稳定在设定的时间触发,设定时适当预留时间,当心打卡迟到哦!

     

    代码比较简单,有人问起,就贴一下吧。

     

    public class MainService extends Service{
    
    	@Override
    	public IBinder onBind(Intent intent) {
    		return null;
    	}
    	
    	@Override
    	public void onCreate() {
    		super.onCreate();
    //		Notification notification=new Notification();
    //		
    //		//推荐使用Builder构建。
    //		startForeground(1, notification);
    		Log.d("jemen","service crated!");
    		
    		Builder builder = new Notification.Builder(this);
    		Notification notif = builder.build();
    		startForeground(2, notif);
    		
    		
    		IntentFilter filter=new IntentFilter(Consts.ACTION_PUNCH_CARD);
    		BroadcastReceiver receiver=new PunchCardReceiver();
    		registerReceiver(receiver, filter);
    		
    		setAlarm();
    		
    	}
    
    	
    	private void setAlarm() {
    		 final AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    		  final Intent intent = new Intent();
    		  intent.setAction(Consts.ACTION_PUNCH_CARD);
    		  intent.putExtra("message", "打卡");
    
    
    		  PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    		  Calendar c=Calendar.getInstance();
    		  c.set(Calendar.HOUR_OF_DAY, 7);
    		  c.set(Calendar.MINUTE, 20);
    		  
    		  
    		  long interval=60000*60*24;
    		  alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis()+1000, interval,pendingIntent);// 设定精确重复提醒
    		  
    		  //set the different requestCode,or it will cover the front
    		  PendingIntent pendingIntent2 = PendingIntent.getBroadcast(getApplicationContext(), 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    		  c.set(Calendar.HOUR_OF_DAY, 17);
    		  c.set(Calendar.MINUTE, 10);
    		  
    		  
    		  alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis()+1000, interval,pendingIntent2);// 设定精确重复提醒
    		  
    	}
    	
    }

     

    package org.jemen.daka.receiver;

    import org.jemen.daka.service.MainService;

    import android.content.BroadcastReceiver;
    import android.content.ContentProvider;
    import android.content.Context;
    import android.content.Intent;
    import android.util.Log;

    public class BootReceiver extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d("jemen","boot completed");
            Intent iService=new Intent(context, MainService.class);
            context.startService(iService);
        }
    }
        
        

    
    
    public class PunchCardReceiver extends BroadcastReceiver{
    
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		Log.d("jemen","PunchCardReceiver received!");
    		Model.getInstance().punchCard(context, Consts.NAME);
    		final Context mContext=context;
    		new Handler().postDelayed(new Runnable() {
    			@Override
    			public void run() {
    				try {
    					ActivityManager mActivityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
    					Method method = Class.forName("android.app.ActivityManager").getMethod("forceStopPackage", String.class);
    					method.invoke(mActivityManager, Consts.NAME);  //packageName是需要强制停止的应用程序包名
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		},180000);
    	}
    	
    	
    
    }
    

     

    展开全文
  • 使用AutoJs实现钉钉自动打卡

    千次阅读 2021-07-13 14:13:04
    本脚本基于AutoJS4.1.1,在美图T8手机上面上开发,安卓版本为7.0,...在AutoJS应用内将脚本添加为上下班两个定时任务,实现工作日自动打卡并发送打卡结果到自己的邮箱。 AutoJS软件链接: https://pan.baidu.com/s/..

    码字不易,麻烦点点赞了!!!!

    本脚本基于AutoJS4.1.1,在美图T8手机上面上开发,安卓版本为7.0,钉钉版本6.0.20。

    硬件要求:闲置安卓手机一部。务必是安卓7.0以上,要不然无法执行autojs。

    环境要求:1、有网络连接  2、打开GPS  3、取消手机锁屏,即上划无需密码即可解锁手机 4、授予AutoJS无障碍权限

    注意:手机无需root

    在AutoJS应用内将脚本添加为上下班两个定时任务,实现工作日自动打卡并发送打卡结果到自己的邮箱。

    AutoJS软件链接:
    https://pan.baidu.com/s/1qv9MlaSW0eq17ZqezIIw_w 
    提取码:1Bv6 
     

    脚本如下:

    //打卡类型(上班打卡/下班打卡)
    var punchType = "下班打卡";
    
    //设置随机延时(分钟),避免所有打卡时间点都一样
    var randomSleepMinutes = 10;
    
    //发送打卡结果到此邮箱(换成自己的邮箱)
    var emailAddress = "XX@qq.com";
    
    /**
     * 示例:swipe(539, 1918, 539, 1100, 200);
     * 表示从位置(539, 1918)滑动到位置(539, 1100), 持续2秒
     * swipe(swipeStartX, swipeStartY, swipeEndX, swipeEndY, swipeSpeed);
     * 上滑起始和中止的坐标可以根据手机分辨率自己设置
     * swipeSpeed=200适用于上滑解锁美图系统,其他系统的swipeSpeed需要自己测试出来
     * 起始位置坐标可以通过打开手机的调试模式,然后选择开发者选项>开启>指针位置(选择打开)
     */
    var swipeStartX = 539;
    var swipeStartY = 1918;
    var swipeEndX = 539;
    var swipeEndY = 1100;
    var swipeSpeed = 200;
    
    //脚本执行时保持屏幕常亮,默认15分钟
    var keepScreenOnMinutes = 15;
    
    //输出指定日志文件
    console.setGlobalLogConfig({
      file: "/sdcard/auto_daka_log.txt",
    });
    
    //记录当前时间
    var date = new Date();
    console.log(
      "当前日期:" +
        date.getFullYear() +
        "/" +
        (date.getMonth() + 1) +
        "/" +
        date.getDate()
    );
    console.log(punchType + "开始");
    
    //设置随机延时
    var sleep_time = random(0, randomSleepMinutes * 60 * 1000);
    console.log("延时时间:" + sleep_time / 1000 + "s");
    sleep(sleep_time);
    
    //检测网络状态
    internetCheck();
    
    //检测GPS状态
    gpsCheck();
    
    //进入打卡流程
    punchTheClock();
    
    function punchTheClock() {
      //唤醒手机
      device.wakeUp();
      sleep(3 * 1000);
    
      //判断屏幕是否唤醒成功
      if (!device.isScreenOn()) {
        console.error("屏幕未唤醒,退出脚本");
        exit();
      }
    
      //上滑解锁
      sleep(3 * 1000);
      swipe(swipeStartX, swipeStartY, swipeEndX, swipeEndY, swipeSpeed);
      sleep(3 * 1000);
    
      //脚本执行时保持屏幕常亮
      device.keepScreenOn(keepScreenOnMinutes * 60 * 1000);
    
      //返回桌面
      home();
      sleep(5 * 1000);
    
      //关闭钉钉(这个关闭操作根据自己设备具体情况配置)
      console.log("关闭钉钉");
      openAppSetting(getPackageName("钉钉"));
      sleep(5 * 1000);
      click("强行停止");
      sleep(5 * 1000);
      click("确定");
      sleep(5 * 1000);
    
      //打开钉钉
      console.log("打开钉钉");
      launchApp("钉钉");
      sleep(10 * 1000);
    
      //判断是否已登录
      if (id("tv_welcome_name").exists()) {
        console.error("钉钉未登录");
        exit();
      }
    
      //点击忽略更新(如果有)
      if (click("暂不更新")) {
        console.log("点击暂不更新");
      }
      sleep(5 * 1000);
    
      //点击工作台
      console.log("点击工作台");
      clickMessage("工作台");
      sleep(10 * 1000);
    
      //点击考勤进入打卡页面
      console.log("点击考勤打卡");
      clickMessage("考勤打卡");
      sleep(10 * 1000);
    
      //判断是否休息日
      if (className("android.view.View").text("今日休息").exists()) {
        console.log("今日休息");
        exit();
      }
    
      //点击打卡
      console.log("点击" + punchType);
      clickMessage(punchType);
      sleep(10 * 1000);
    
      //点击 查看打卡结果
      console.log("点击查看打卡结果");
      clickMessage("查看打卡结果");
      sleep(10 * 1000);
    
      //上滑
      swipe(swipeStartX, swipeStartY, swipeEndX, swipeEndY, swipeSpeed);
      sleep(5 * 1000);
    
      //截图
      console.log("截图");
      if (!requestScreenCapture()) {
        console.error("请求截图失败");
        exit();
      }
      var img = captureScreen();
      images.saveImage(img, "/sdcard/result.png");
      sleep(5 * 1000);
    
      //发送邮件,唤起选择发送邮件应用的界面
      console.log("发送邮件");
      app.sendEmail({
        email: [emailAddress],
        subject: punchType + "成功",
        text: punchType + "成功",
        attachment: "/sdcard/result.png",
      });
      sleep(5 * 1000);
    
      //点击应用名称选择邮箱。根据自己情况配置,我用的美图系统自带邮箱
      clickMessage("电子邮箱");
      sleep(5 * 1000);
    
      //点击发送邮件
      //if (className("android.widget.Button").desc("发送").findOnce().click()) {
       // console.log("邮件发送成功");
      //} else {
        //console.error("未找到邮件发送按钮");
        //exit();
    	//console.log("通过坐标点击发送");
    	//click(987,144)
     // }
    //通过坐标点击发送(我这边调试不通,暂时通过坐标方式去点击发送,实现效果一样)
      click(987,144)
      sleep(5 * 1000);
    
      //关闭钉钉(这个关闭操作根据自己设备具体情况配置)
      console.log("关闭钉钉");
      openAppSetting(getPackageName("钉钉"));
      sleep(5 * 1000);
      click("强行停止");
      sleep(5 * 1000);
      click("确定");
      sleep(5 * 1000);
    
      //返回主页
      home();
      sleep(1 * 1000);
    
      //关闭屏幕常亮
      console.log("关闭屏幕常亮");
      device.cancelKeepingAwake();
    
      console.log("打卡完成");
      exit();
    }
    
    //判断网络情况,如果没有网络,结束脚本运行
    function internetCheck() {
      var url = "m.baidu.com";
      var res = http.get(url);
      if (res.statusCode != 200) {
        console.error("网络不可用,无法打卡");
        exit();
      }
    }
    
    //判断GPS是否可用,如果不可用,结束脚本运行
    function gpsCheck() {
      importClass(android.location.LocationManager);
      importClass(android.content.Context);
      var locationManager = context.getSystemService(Context.LOCATION_SERVICE);
      if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
        console.error("GPS不可用,无法打卡");
        exit();
      }
    }
    
    //根据控件文字点击,如果点击失败,则说明打卡流程无法正常进行,结束脚本运行
    function clickMessage(message) {
      var n = 3;
      var logo = false;
      while (n--) {
        if (click(message)) {
          logo = true;
          break;
        }
        sleep(3 * 1000);
      }
      if (logo == false) {
        console.error("点击" + message + "出错");
        exit();
      }
    }

    展开全文
  • 这款叫做 FreeDing 的 Android 应用,是一个钉钉自动打卡工具,只需要把手机放在办公室,就能实现每天自动定时打卡了。其实它的背后是一个悲伤的故事,作者的公司不允许漏打卡后补打,自己负责,作者气不过啊,身为...

    这款叫做 FreeDing 的 Android 应用,是一个钉钉自动打卡工具,只需要把手机放在办公室,就能实现每天自动定时打卡了。

    其实它的背后是一个悲伤的故事c6799606083354617ec4c988fb3d9e27.png,作者的公司不允许漏打卡后补打,自己负责,作者气不过啊,身为一个优秀的开发者,怎么能轻言放弃?!于是自己开发了这款工具,从此再也不用害怕上班迟到了,安心吃个早餐,享受美好生活。(还是建议各位按时上下班,此工具仅建议做紧急情况下备用) 

    所以在开发公司,最好不要得罪开发者,他们对付你那就跟过家家一样。

    a77d675ecc74e5e4dc2c246abca0cfd0.png

    使用步骤:

    1. 预留一部安卓手机在公司。

    2.下载安装最新版的钉钉和本应用并登陆。

    3.设置上班时间,下班时间,钉钉登录账号,登录密码(用于自动登录钉钉,自动打卡)

    4.启动服务。

    主要解决了以下几个难点:

    1.实现自动登录钉钉。(让你可以在下班后随时在自己手机登录钉钉,不遗漏工作消息,留在公司的手机钉钉被踢下线后到打卡时间仍可以自动登录)

    2.实现自动息屏,无需长期亮屏。(防止被其他人发现)

    3.安卓7.0以上实现了完全模拟手势真实打卡过程,完全自动打卡;7.0以下开启极速打卡,也能自动打卡成功。

    还有一些注意事项,从开发者发布的内容里整理出来的

    请仔细阅读:

    手机不要设置锁屏密码

    启动服务后,最好插上电源,回到freeding页面息屏,尽量不要再去操作该手机,否则可能会导致服务被系统回收,无法定时打卡

    打卡成功后,弹出的我的考勤常用手机不要绑定,否则手机自动打卡需要人脸识别

    建议使用 Android 7.0 以上系统

    建议开启钉钉极速打卡

    不要多个钉钉账号登录

    针对失败率较多机型,建议增加多条相近打卡时间点

    另外,FreeDing 需要系统的无障碍辅助权限、修改系统设置权限,请给予。建议各位有需要的站友找一台闲置的安卓机使用,反正是扔办公室,百元机或者能用的淘汰机足够啦。

    添加微信:hudongdaka.支付1元领取,

    您如果需要其他资料可以有偿咨询索取。

    展开全文
  • app-release.apk

    2021-03-29 08:59:46
    一部闲置手机,即可帮你完成使用WK、DD完成打卡

空空如也

空空如也

1
收藏数 5
精华内容 2
关键字:

闲置手机钉钉自动打卡

友情链接: 聚焦算法.rar