前一段做项目过程中遇到一个问题,需要第三方apk能够打开我的apk中的某个组件,
正常情况来说,第一个想到的就是共享uid, 只是,和第三方公司并不是很亲密,这种举动是很危险的,然后,我们知道一个程序中的入口activity都带有intent-filter,默认有filter的时候,相当于android:exported=”true”,这也就是为什么可以随意打开一个程序的入口activity
只有在需要被别人打开的activity清单注册的时候加上android:exported=”true”或者添加intent-filter即可。
本以为大功告成,但是,当打开的组件中有自定义控件的时候,会crash,追其缘由,发现,直接打开一个带有自定义控件的组件时,自定义组件还没有初始化好,或者说是因为context不对,导致的。那么如何解决这个问题呢?
我改变了直接打开组件的想法,而是只打开入口activity,在intent中添加参数from,在需要打开的程序的入口activity中获取这个参数,根据这个参数来判定,我需要打开什么组件,这样,使用的context就是正确的,自定义控件也自然没有问题啦!
希望对大家有帮助。