美文网首页Android 编程Java实战编程
【黑科技】钉钉自动打卡

【黑科技】钉钉自动打卡

作者: At攻城狮 | 来源:发表于2017-08-11 15:33 被阅读398次

    所需环境:

    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);

    }

    }

    }

    相关文章

      网友评论

      本文标题:【黑科技】钉钉自动打卡

      本文链接:https://www.haomeiwen.com/subject/qlxrrxtx.html