Android 實現(xiàn)企業(yè)微信自動打卡任務同時支持釘釘急速打卡模式

下載地址:https://wwa.lanzoui.com/iIwzRt1lw1e
這是周五下午忘了打卡了 手機在公司遠程自動打卡的

前言

之前公司一直是彈性工作制 以工作任務為目標 自由上下班
日子過的不亦樂乎

自從人事來了以后 就頒布了第一條法令

看到這個無疑的痛苦的 對于一個幾年沒有打卡散人來說!!!
同時公司的財務小姐姐和其他同事也硬邀 工程師來開發(fā)一個腳本任務 來執(zhí)行自動打卡

聽起來好像還不錯
為了大家的福利 說干就擼起袖子

準備工作

要先完成app之間的跳轉
首先先拿到企業(yè)微信的包名釘釘?shù)陌?/code>
這個無論你是adb命令實現(xiàn) 還是百度直接找 都很方便


ADB命令方式

  1. 依舊數(shù)據(jù)線連接手機,注意都是調試模式哈,不然電腦無權訪問手機
  2. 電腦端Crtl+R 輸入cmd 回車
  3. 輸入 adb devices 檢驗是否成功連接手機
  4. 輸入 adb shell 進入手機的shell
  5. 輸入 pm list packages 顯示所有應用包名

通過命令獲取到 釘釘?shù)陌?code>com.alibaba.android.rimet
通過命令獲取到 企業(yè)微信的包名:com.tencent.wework

也可以直接百度搜


拿到包名以后要做的任務 就是啟動定時器完成應用跳轉 達到喚醒應用的效果
因為企業(yè)微信和釘釘急速打卡只要打開app在指定的打卡范圍內就可以自動打卡

ok 我們已知這個條件以后 就很方便寫程序了

實現(xiàn)流程

啟動前臺服務

 //啟動服務
Intent intentService = new Intent(MainActivity.this, AutomaticTaskService.class);
startService(intentService);

不斷的刷新通知任務

 NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
        builder.setSmallIcon(R.mipmap.timer_task);
        builder.setContentTitle("新消息").setContentText("這是一條定時任務");       
        startForeground(1, builder.build());

在服務中起了一個定時的線程來根據(jù)設置的時間跳轉指定包名的app

   new Thread() {
            @Override
            public void run() {
                super.run();
                while (isRun) {
                    //你需要執(zhí)行的任務
                    try {
                        Thread.sleep(50000);
                    } catch (InterruptedException es) {
                        es.printStackTrace();
                    }

                    //實例化SharedPreferences對象(第一步)
                    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)時間 --------- " + strTime);
                    if (strTime.equals(starTime)) {
                        //設置了上班打卡時間
                        ImplementUtils.openTask(getBaseContext());
                    } else if (strTime.equals(endTime)) {
                        //設置了下班打卡時間
                        ImplementUtils.openTask(getBaseContext());
                    }
                }
            }
        }.start();     
        //走OnDestory停止的服務,系統(tǒng)保留了service的onStartCommand方法中的變量,等待系統(tǒng)重啟此服務
        return START_STICKY;
    }

應用跳轉那塊的代碼都是死的

        //設置意圖
        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();
         }

實現(xiàn)效果

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容