Android中UID机制和共享进程

在Android开发中,为了安全地让第三方应用调用特定组件,本文探讨了避免使用共享UID的风险,并提出通过设置android:exported和intent-filter来控制组件暴露。遇到因自定义控件导致的启动崩溃问题,作者提出了通过打开入口Activity传递参数的方式来解决,确保正确上下文的使用,从而避免了自定义控件初始化错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前一段做项目过程中遇到一个问题,需要第三方apk能够打开我的apk中的某个组件,

正常情况来说,第一个想到的就是共享uid, 只是,和第三方公司并不是很亲密,这种举动是很危险的,然后,我们知道一个程序中的入口activity都带有intent-filter,默认有filter的时候,相当于android:exported=”true”,这也就是为什么可以随意打开一个程序的入口activity

只有在需要被别人打开的activity清单注册的时候加上android:exported=”true”或者添加intent-filter即可。


本以为大功告成,但是,当打开的组件中有自定义控件的时候,会crash,追其缘由,发现,直接打开一个带有自定义控件的组件时,自定义组件还没有初始化好,或者说是因为context不对,导致的。那么如何解决这个问题呢?


我改变了直接打开组件的想法,而是只打开入口activity,在intent中添加参数from,在需要打开的程序的入口activity中获取这个参数,根据这个参数来判定,我需要打开什么组件,这样,使用的context就是正确的,自定义控件也自然没有问题啦!


希望对大家有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值