如题,拿Oppo 手机做个示例,小米 华为也是如此。

在编写Android应用的时候,我们经常会有这样的需求,我们想直接打开系统应用的某个页面。比如在Oppo R9 手机上我们想打开某个应用的通知管理界面如下图

点击QQ图标,跳转到如下界面

同时我们在terminal中 通过 adb logcat |grep “ActivityManager” 我们可以看到Activity的相关信息

I/ActivityManager( 902): START u0 {act=com.coloros.notificationmanager.app.detail cmp=com.coloros.notificationmanager/.AppDetailPreferenceActivity (has extras)} from uid 1000 from pid 31395 on display 0
D/ActivityManager( 902): Delay resumeKeyDispatchingLocked() to avoid deadlock.
I/ActivityManager( 902): [AppLaunch] Displayed Displayed com.coloros.notificationmanager/.AppDetailPreferenceActivity: +160ms
D/ActivityManager( 902): AP_PROF:AppLaunch_LaunchTime:com.coloros.notificationmanager/.AppDetailPreferenceActivity:160:27986714
D/ActivityManager( 902): ACT-IDLE_NOW_MSG from windowsVisible() for idle: ActivityRecord{293543ae u0 com.coloros.notificationmanager/.AppDetailPreferenceActivity t157}

通过日志我们看到了设置QQ通知管理的Activity的包名和类名分别是
com.coloros.notificationmanager/.AppDetailPreferenceActivity.但是启动这个Activity是需要附加Extras的,至少应用的包名是需要传递进去的,要不然凭什么知道这就是设置QQ的通知权限而不是微信的通知权限呢。动动脚趾头猜下 至少是传递了一个包名进去,但是具体的key我们是不得而知。怎么办!?我们想知道这个类到底传了哪些key-value,以及这个Activity是否能被外部应用吊起,那只能反编译源码,到AppDetailPreferenceActivity.java中查看到底传递了哪些key以及得到AndroidManifest.xml 查看声明的AppDetailPreferenceActivity exported 属性是否为false。

1.1既然是反编译,那首先我们要确定这个系统应用的APK到底在哪里,连上手机,打开terminal输入以下命令

adb shell pm path com.coloros.notificationmanager

输出如下

1.2 接下来的心情应该是兴高采烈,跃跃一试,迫不及待的想要把apk pull到本地,进行反编译,那么我可以很负责任的告诉你,你高兴的太早了,这样根本无法反编译出源代码。不信且看

adb pull /system/app/notification_center/notification_center.apk ~/oppo

1.3这样我们就把系统apk pull到本地了,先确认下apk中是否有dex文件

unzip notification_center.apk

1.4.然后我在解压后的文件夹想努力的找到classes.dex,最后震惊了,什么鬼,apk 怎么可以没有classes.dex文件,特么的是在逗我吗,真的不敢直视自己的才疏学浅, 反正事实就是这样子了,就是没有classes.dex,怎么着吧。既然是这样的话,那么能拿到真正的apk吗,答案当然是能。

到这里我需要隆重介绍三个利器Lordroid、enjarify以及Apktool
,Lordroid 它能将系统优化过的odex 解码成dex,就是利用它能够将得到可以被反编译的Apk、enjarify可以将apk反编译成jar、Apktool可以获取apk的资源文件。具体使用请自行解决,不做过多介绍了。

正确打开方式
2.1 把手机/system 拉取到电脑上

adb pull /system ~/system

这里有三个比较重要的文件或文件夹 build.pro、framework、priv-app。请注意!!!我们目标apk notification_center.apk不是说好的在 app文件夹里面吗,怎么没有拉取到呢。怎么办?再手动拉取一遍呗!

cd priv-app
rm -rf *
adb pull /system/app/notification-center .

这样notification-center文件夹就被拉取下来了

2.2接下来打开Lordroid主界面,cd Lordroid主目录

java -jar Launcher.jar

2.3点击browse 选择 ~/system(前面拉取Apk 的目录) 目录,如下提示找到priv-app 和framework目录

2.4点击Deodex now!

2.5至此Deodex 已经成功,我们到priv-app/notification-center 中已经生成了一个notification-center.apk,再解压看看是否有classes.dex

至此我们看到了classes.dex又重回apk的怀抱。可以按常规的方法去反编译,此处省略xxx字,请自行脑补。

3.1 最后我们得到了notification-center.apk的jar包,用JD-GUI打开,定位到AppDetailPreferenceActivity,查找Extra关键字

会发现传了”pkg_name” “app_name” “class_name”三个key。

3.2 那么写个demo 验证下吧

private void startOppoNotification() {
//Intent intent = new //Intent("com.coloros.notificationmanager.app.detail_ab//andon");Intent intent = new Intent();intent.setComponent(new ComponentName("com.coloros.notificationmanager", "com.coloros.notificationmanager.AppDetailPreferenceActivity"));intent.putExtra("pkg_name", "com.coohuaclient");intent.putExtra("app_name", "酷划锁屏");intent.putExtra("class_name", "com.coohuaclient.ui.activity.SplashActivity");intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);}

3.3效果如下

理论上讲有了这样的方法,我们基本上可以直达任何应用的可以被外部访问的界面了

如何打开小米,oppo,华为等手机的系统应用的指定页面相关推荐

  1. 云服务 华为p10 短信_苹果、小米、华为,手机云服务哪家强?

    相信随着这几年"云"的崛起,很多用户也用过不少形式不同的云,而在手机等移动设备上,不少厂商都会自带自家的云服务,最著名就如苹果的iCloud,还有小米云.华为云.魅族云.OPPO云 ...

  2. 华为折叠手机用系统鸿蒙,华为推出新一代折叠屏手机,升级鸿蒙系统引人期待...

    今天,人们跟手机交流的时间越来越多.不过,屏幕尺寸的限制,导致体验大受限.比如看视频,在小屏上效果并不理想,很多细节无法感受.正因为如此,很多人对拥有更大屏幕的折叠屏手机充满期待. 2月22日,华为发 ...

  3. 华为发布手机鸿蒙系统,承认华为鸿蒙很难?OPPO高管“嘲讽”鸿蒙,有何意图?...

    自从华为宣布鸿蒙系统6月发布正式版后,鸿蒙这几天稳居热搜.对于华为而言,随着手机出货量的骤降,单纯通过华为手机扩展鸿蒙用户群并不现实,因此,华为目前大力邀约各大厂商适配鸿蒙.华为表示,欢迎国内厂商一起 ...

  4. 华为5G手机+鸿蒙系统,还能这么玩儿?

    大家好,我是老王~ ​昨日刷手机的时候看到一位博主晒出了一款华为全新的5G机型入网规格,其中展示了该机的基本参数. 从图片可以看出,新机将搭载一块6.76英寸OLED屏幕拥有8个CPU内核,CPU主频 ...

  5. 记录Android Studio连接华为(nova)手机鸿蒙系统踩过的坑

    目录 安装Android studio 安装Google USE Driver 查看华为手机的安卓版本 设置开发者模式 安装华为手机助手 重启Android studio 总结 安装Android s ...

  6. 华为鸿蒙系统支持华为些手机,鸿蒙系统支持哪些手机型号?华为首批鸿蒙系统手机名单一览...

    鸿蒙系统支持哪些手机型号?许多人之前就一直在关注的鸿蒙系统的升级越发临近了而有些用户可能还不知道自己的收集能不能够升级成鸿蒙系统.现在就让11773小编带大家看看,华为首批鸿蒙系统手机名单一览. 华为 ...

  7. 手机浏览器跳转微信指定页面及跳转微信公众号一键关注

    这篇文章主要介绍了如何在手机浏览器wap网页中点击链接跳转到微信界面,需要的朋友可以参考下 先说第一种,最简单的唤起微信协议,weixin://主流浏览器都支持,app加个浏览器功能就可以使用weix ...

  8. 手机浏览器跳转微信指定页面加好友及跳转微信公众号一键关注

    近期有发现越来越多的广告行业的同仁在寻找如何提升在公众号/个人微信吸粉的通道,因为成本暴涨,各个广告渠道又不是很稳定,所以很多人都在咨询如何降低成本,在微信的广告渠道是有限的并且非常贵,所以只能通过外 ...

  9. 华为推送没有跳转到指定页面

    //华为推送     implementation 'com.huawei.android.hms:push:2.6.3.301' 解决方法:     创建一个HWPushTranslateActiv ...

最新文章

  1. mvc php session,PHP Session入门教程
  2. 2020最详细安装Ubuntu指南
  3. Django从理论到实战(part4)--创建我们的第一个页面
  4. 68 cookie在登录中的作用
  5. vc6开发一个抓包软件_开发一个软件多少钱?3种软件开发公司报价
  6. 带你认识Flink容错机制的两大方面:作业执行和守护进程
  7. 网络协议:TCP流量控制
  8. video 标签内 音量_HTML5 视频(Video)元素使用详解
  9. 台式计算机的速度,USB3.0有多快?平民级最简单测试告诉你
  10. pyqt之qprocess使用【详细教程】
  11. 【算法】小团的车辆调度(美团2021校招题)
  12. JS实现动画特效2(缓动函数封装、导航栏筋斗云效果)
  13. PHPStudy 安装amqp扩展
  14. 计算机科学主题 一亩三分地 每日答题 题库
  15. iframe基本使用
  16. Java远程调用BPS流程实现流程运行简单示例
  17. 入侵特斯拉——智能汽车安全性分析
  18. 连接mysql数据库报错Cannot create PoolableConnectionFactory
  19. RF- BuiltIn库-should关键字
  20. 流媒体相关技术了解入门

热门文章

  1. HDUOJ 2859 Phalanx
  2. 网页简单整合Skype
  3. Guitar Pro8.0吉他打谱作曲中文版有哪些新功能?
  4. Jetson TX1 /TX2 对比介绍
  5. Visual Studio 2019 下Python的开发环境搭建
  6. 《Head First HTML5 javascript》第7章 表单
  7. 卢卡斯定理扩展卢卡斯
  8. 方舟服务器显示等待发布,《明日方舟》开服既炸服的这波操作《方舟生存进化》永远也学不会...
  9. PoisonGAN: Generative Poisoning Attacks Against Federated Learning in Edge Computing Systems 阅读报告
  10. 【测试用例】文本框测试用例