Android 编程Java实战编程

【黑科技】钉钉自动打卡

2017-08-11  本文已影响398人  At攻城狮

所需环境:

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

}

}

}

上一篇下一篇

猜你喜欢

热点阅读