補(bǔ)充
apk下載
地址:https://wws.lanzoui.com/icQiUrqtkna
密碼:52pj
今天早上8.35打的卡 而我9點(diǎn)才來公司
前言
之前公司一直是彈性工作制 以工作任務(wù)為目標(biāo) 自由上下班
日子過的不亦樂乎
自從人事來了以后 就頒布了第一條法令
看到這個(gè)無疑的痛苦的 對(duì)于一個(gè)幾年沒有打卡散人來說!!!
同時(shí)公司的財(cái)務(wù)小姐姐和其他同事也硬邀 工程師來開發(fā)一個(gè)腳本任務(wù) 來執(zhí)行自動(dòng)打卡
聽起來好像還不錯(cuò)
為了大家的福利 說干就擼起袖子
準(zhǔn)備工作
要先完成app之間的跳轉(zhuǎn)
首先先拿到企業(yè)微信的包名
和釘釘?shù)陌?/code>
這個(gè)無論你是adb命令實(shí)現(xiàn) 還是百度直接找 都很方便
ADB命令方式
- 依舊數(shù)據(jù)線連接手機(jī),注意都是調(diào)試模式哈贝淤,不然電腦無權(quán)訪問手機(jī)
- 電腦端Crtl+R 輸入cmd 回車
- 輸入 adb devices 檢驗(yàn)是否成功連接手機(jī)
- 輸入 adb shell 進(jìn)入手機(jī)的shell
- 輸入 pm list packages 顯示所有應(yīng)用包名
通過命令獲取到 釘釘?shù)陌?code>com.alibaba.android.rimet
通過命令獲取到 企業(yè)微信的包名:
com.tencent.wework
也可以直接百度搜
拿到包名以后要做的任務(wù) 就是啟動(dòng)定時(shí)器完成應(yīng)用跳轉(zhuǎn) 達(dá)到喚醒應(yīng)用的效果
因?yàn)槠髽I(yè)微信和釘釘急速打卡只要打開app在指定的打卡范圍內(nèi)就可以自動(dòng)打卡
ok 我們已知這個(gè)條件以后 就很方便寫程序了
實(shí)現(xiàn)流程
啟動(dòng)前臺(tái)服務(wù)
//啟動(dòng)服務(wù)
Intent intentService = new Intent(MainActivity.this, AutomaticTaskService.class);
startService(intentService);
不斷的刷新通知任務(wù)
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setSmallIcon(R.mipmap.timer_task);
builder.setContentTitle("新消息").setContentText("這是一條定時(shí)任務(wù)");
startForeground(1, builder.build());
在服務(wù)中起了一個(gè)定時(shí)的線程來根據(jù)設(shè)置的時(shí)間跳轉(zhuǎn)指定包名的app
new Thread() {
@Override
public void run() {
super.run();
while (isRun) {
//你需要執(zhí)行的任務(wù)
try {
Thread.sleep(50000);
} catch (InterruptedException es) {
es.printStackTrace();
}
//實(shí)例化SharedPreferences對(duì)象(第一步)
SharedPreferences mySharedPreferences = getSharedPreferences("shared", Activity.MODE_PRIVATE);
String starTime = mySharedPreferences.getString("startTime", "");
String endTime = mySharedPreferences.getString("endTime", "");
Log.e(TAG, " starTime -------- " + starTime);
Log.e(TAG, " endTime --------- " + endTime);
String strTime = getSystemTime() + "";
strTime = strTime.substring(0, 5);
Log.e(TAG, " 系統(tǒng)時(shí)間 --------- " + strTime);
if (strTime.equals(starTime)) {
//設(shè)置了上班打卡時(shí)間
ImplementUtils.openTask(getBaseContext());
} else if (strTime.equals(endTime)) {
//設(shè)置了下班打卡時(shí)間
ImplementUtils.openTask(getBaseContext());
}
}
}
}.start();
//走OnDestory停止的服務(wù)柒竞,系統(tǒng)保留了service的onStartCommand方法中的變量,等待系統(tǒng)重啟此服務(wù)
return START_STICKY;
}
應(yīng)用跳轉(zhuǎn)那塊的代碼都是死的
//設(shè)置意圖
Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
if (packageInfo != null) {
resolveIntent.setPackage(packageInfo.packageName);
}
List<ResolveInfo> apps = packageManager.queryIntentActivities(resolveIntent, 0);
ResolveInfo resolveInfo = apps.iterator().next();
if (resolveInfo != null && packageInfo != null) {
String className = resolveInfo.activityInfo.name;
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Log.e(TAG, "packageName ------------" + packageInfo.packageName);
ComponentName cn = new ComponentName(packageInfo.packageName, className);
intent.setComponent(cn);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
pendingIntent.send();
}
實(shí)現(xiàn)效果
[圖片上傳失敗...(image-bbe39d-1626878451991)]
總結(jié)
在幫助大家同時(shí) 自己又學(xué)習(xí)了知識(shí) 何樂而不為呢霹娄?啊哈哈哈