美文网首页Android开发经验谈Android技术知识Android开发
android利用adb命令,获取当前界面(当前Task的栈顶)

android利用adb命令,获取当前界面(当前Task的栈顶)

作者: 轻轻笑声 | 来源:发表于2017-06-19 20:01 被阅读0次

开发项目中经常会遇到很多手机厂商制造的麻烦.如涉及权限,程序授权(受信任应用),或service自启动管理等.由于android手机种类繁多,厂商自制系统各自为王.弄得我们有时不得不针对固定的厂商或机型做定制开发.
本文就提供一种靠adb命令获取手机当前activity的方法!
1.首先 要配置adb环境变量 这里就不多说了,自己百度就好了,非常简单!
2.配置好环境变量后,就可以运用adb 命令了.
以OPPO r9S获取自启动管理界面为例:


1.png.jpg

将手机调好到指定界面后:打开cmd 输入
1) adb devices //查看链接设备
adb shell dumpsys activity top //获取栈顶activity

![Q%T]TN0RQ0X{@GP~TVZFG.png](https://img.haomeiwen.com/i3995903/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);
                        }

相关文章

网友评论

    本文标题:android利用adb命令,获取当前界面(当前Task的栈顶)

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