1. 下面这段manifest代码,你可以扔到你的某个activity中去,然后跑一下这个app,看看效果
<intent-filter> <action android:name="android.intent.action.VIEW"/> <data android:mimeType="*/*"/> <data android:host="*"/> <data android:scheme=""/> </intent-filter>
2.分析:
(1)你看到的现象应该是,android framework 停止运行,google+停止运行之类的。
(2)为什么呢?下面是无根据的推敲,尚未有心思看源码,但是经过试验,大概差不多吧。
首先mimeType,host这两个全局匹配,在加上一个scheme=“”,系统解析的时候肯定是没处理好,只要这三个条件并存,必定会解析出错。
出错的入口:通过上面三个data中任一个startActivity都会crash,使用packageManager使用以上任一data作为filter来queryIntent也会崩,实际上就是只要packageManager去读取存在这个filter的包的信息的时候,就会抛出Parcel解析异常,类型是空指针。
有兴趣的猿们可以去看看源码的实现,利用这个bug配合root权限可能会对手机上所有app的正常功能造成影响,所以赶紧给google提bug啊。
BTW,谁扒出了真正原因,麻烦给我分享一下哈。
时间: 2024-11-08 15:37:30