android利用adb命令,獲取當前介面(當前Task的棧頂).

weixin_34247155發表於2017-06-19

開發專案中經常會遇到很多手機廠商製造的麻煩.如涉及許可權,程式授權(受信任應用),或service自啟動管理等.由於android手機種類繁多,廠商自制系統各自為王.弄得我們有時不得不針對固定的廠商或機型做定製開發.
本文就提供一種靠adb命令獲取手機當前activity的方法!
1.首先 要配置adb環境變數 這裡就不多說了,自己百度就好了,非常簡單!
2.配置好環境變數後,就可以運用adb 命令了.
以OPPO r9S獲取自啟動管理介面為例:


3995903-d560a210562609bc.jpg
1.png.jpg

將手機調好到指定介面後:開啟cmd 輸入
1) adb devices //檢視連結裝置
adb shell dumpsys activity top //獲取棧頂activity

![Q%T]TN0RQ0X{@GP~TVZFG.png](http://upload-images.jianshu.io/upload_images/3995903-d4895ea759168dc6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2) 1.cmd命令中輸入:adb shell 進入shell命令模式
2.shell中輸入:logcat | grep ActivityManager 真機執行應用,可以實時 檢視當前正在執行的Activity;
或者也可以用第二種方法.
至於用那種,看介面吧,這裡第二種就不貼圖了.讀者自己去嘗試吧!

補充:已測試手機(為service開啟自啟動或設定受保護程式);

Intent intent3 = new Intent();
                        intent3.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        ComponentName comp = null;
                        if (brand.equals("Huawei")) {//華為
                            comp = ComponentName
                                    .unflattenFromString("com.huawei.systemmanager/.optimize.process.ProtectActivity");//設定管用,而且通知欄有通知
                            intent3.setComponent(comp);
                            startActivity(intent3);
                        } else if (brand.equals("Xiaomi")) {//小米
                            comp = ComponentName
                                    .unflattenFromString("com.miui.securitycenter/com.miui.permcenter.autostart.AutoStartManagementActivity");
                            intent3.setComponent(comp);
                            startActivity(intent3);
                        } else if (brand.equals("vivo")) {//vivo
                            comp = ComponentName
                                    .unflattenFromString("com.iqoo.secure/.ui.phoneoptimize.AddWhiteListActivity");
                            intent3.setComponent(comp);
                            startActivity(intent3);
                        } else if (brand.equals("OPPO")) {//oppo
                            comp = ComponentName
                                    .unflattenFromString("com.coloros.safecenter/.startupapp.StartupAppListActivity");
                            intent3.setComponent(comp);
                            startActivity(intent3);
                        }else if (brand.equals("LeEco")) {//樂視
                            comp = ComponentName
                                    .unflattenFromString("com.letv.android.letvsafe/.BackgroundAppManageActivity");
                            intent3.setComponent(comp);
                            startActivity(intent3);
                        }else if (brand.equals("HONOR")) {//榮耀暢玩5A
                            comp = ComponentName
                                    .unflattenFromString("com.huawei.systemmanager/.optimize.process.ProtectActivity");
                            intent3.setComponent(comp);
                            startActivity(intent3);
                        }else{
                            //以測魅族走這個
                            Intent intent =  new Intent(Settings.ACTION_SETTINGS);
                            startActivity(intent);
                        }

相關文章