You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨包访问Android GpsService遇LocalBinder方法权限问题求助

解决跨包访问Service LocalBinder方法的权限问题

这问题我之前开发Android服务时也碰到过,本质就是方法的访问权限设置不对导致的!

你看你packageShared里的LocalBinder类中的getService()方法,没有加任何访问修饰符——在Java里,这种默认的权限是「包私有(package-private)」,意思是只有同一个包(也就是packageShared)里的类才能调用这个方法,跨包的packageClient自然就会被拒绝访问,这就是你看到错误的原因。而同一个包内的类能正常运行,也正好验证了这一点。

修复方案很简单:给getService()加上public修饰符

修改packageShared里的LocalBinder代码:

public class LocalBinder extends Binder {
    // 添加public修饰符,允许跨包访问
    public GpsService getService() {
        return GpsService.this;
    }
}

修改之后,packageClient里的binder.getService()调用就能正常通过编译了,因为现在这个方法对外公开了,其他包的类可以合法访问它。

内容的提问来源于stack exchange,提问作者Carlos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:36:27