【黑科技】钉钉自动打卡

所需环境:

1、JDK

2、Android SDK

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Timer;

import java.util.TimerTask;

public class DDingAutoClock {

public static void main(String[] args) {

Timer timer = new Timer();

timer.schedule(new Task(), 60 * 1000);

}

static class Task extends TimerTask {

public voidrun() {

String str = getCurrentTime();

if(str.equals("08:00")){

System.out.println("定时任务执行");

//启动叮叮

try {

execCommand("adb wait-for-device");

execCommand("adb shell am start -n com.alibaba.android.rimet/com.alibaba.android.rimet.biz.SplashActivity");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

public static StringgetCurrentTime(){

SimpleDateFormat formatter  =  new  SimpleDateFormat  ("HH:mm");

Date curDate  =  new  Date(System.currentTimeMillis());//获取当前时间

String  str  =  formatter.format(curDate);

System.out.println(str);

returnstr;

}

public static void execCommand(Stringcommand) throws IOException {

// start the lscommandrunning

//String[] args =  new String[]{"sh","-c",command};

Runtime runtime = Runtime.getRuntime();

Process proc = runtime.exec(command);        //这句话就是shell与高级语言间的调用

//如果有参数的话可以用另外一个被重载的exec方法

//实际上这样执行时启动了一个子进程,它没有父进程的控制台

//也就看不到输出,所以我们需要用输出流来得到shell执行后的输出

InputStream inputstream = proc.getInputStream();

InputStreamReader inputstreamreader = new InputStreamReader(inputstream);

BufferedReader bufferedreader = new BufferedReader(inputstreamreader);

//readthe ls output

String line ="";

StringBuilder sb = new StringBuilder(line);

while((line = bufferedreader.readLine()) != null) {

//System.out.println(line);

sb.append(line);

sb.append("\n");

}

//使用exec执行不会等执行成功以后才返回,它会立即返回

//所以在某些情况下是很要命的(比如复制文件的时候)

//使用wairFor()可以等待命令执行完成以后才返回

try {

if(proc.waitFor() != 0) {

System.out.println(proc.exitValue());

}

}

catch (InterruptedException e) {

System.err.println(e);

}

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,805评论 18 399
  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 1,443评论 0 6
  • 一、流的概念和作用。 流是一种有顺序的,有起点和终点的字节集合,是对数据传输的总成或抽象。即数据在两设备之间的传输...
    布鲁斯不吐丝阅读 10,122评论 2 95
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 1,192评论 1 0
  • 阅读完这篇文章,你有什么收获? (文章标题:快速成长的秘诀,只有这两点) 001 认真学习,脚踏实地 002 不忘...
    成为伍尔夫阅读 185评论 0 0