OPPO R9采用了ColorOS3.0作为手机系统,为了给用户一个良好的体验,不让各种垃圾消息的推送影响视觉,在ColorOS3.0上默认都屏蔽了第三方应用的通知栏权限,如果应用需要在通知栏展示Push通知的话还需要用户自己手动开启该应用的通知栏权限。同时,为防止奇形怪状的Push通知带来视觉不统一,ColorOS3.0会对不规范的Push通知进行拦截,导致第三方应用推送的Push显示不出来。下面先来对比下OPPO R7s和OPPO R9通知栏权限的区别。(前面是R7s,后面是R9)


可以看到,R7手机上面所有的app默认都可以显示通知栏,而R9却不是这样,除了系统应用跟白名单应用之外,其他的第三方应用全部默认不显示通知栏。那为什么QQ跟QQ空间默认可以显示呢?我了解到这是因为OPPO加了白名单,可以默认显示通知栏的白名单。OPPO这里给加的白名单app主要是一些强社交类的app,比如QQ,QQ空间,微信,微博等都在白名单之内,所以默认是可以显示通知栏的,那如果不在白名单内的app想要显示push通知怎么办呢?除了用户手动在系统设置里面打开开关之外还有其他方法吗?下面我们就来从OPPO源码的角度来分析一下这个开关能不能用我们的代码把它打开,如果可以的话其他的app也就可以实现默认打开通知栏权限了。
1:在OPPO ColorOS3.0上第三方应用能不能通过代码实现默认打开通知栏?
准备工具:1.OPPO R9手机 2.odex->dex工具 smali/baksmali 3.dex2jar 4.Java Decompiler
思路:为了查看系统应用对应位置的源代码,必须先找到该应用所对应的APK,要想找APK得先找到包名,这里既然我们要搜索的这个