当客户端安装主机后,android aidl无法绑定到服务

我有一个aidl服务正常工作,直到安装客户端之前安装主机,但正如我在标题中提到的那样,当主机没有安装时我安装了客户端,之后我安装了主机我得到了一个SecurityException在bindService()上

Intent serviceIntent = new Intent(AidlService.class.getName());
if (!mContext.getPackageManager().queryIntentServices(serviceIntent,0).isEmpty()) {
    mContext.bindService(serviceIntent,mServiceConn,Context.BIND_AUTO_CREATE);
}

Caused by: java.lang.SecurityException: Not allowed to bind to service Intent { act=com.mypackage.AidlService}

我还测试了一些使用aidl的应用程序,他们遇到了同样的问题!

UPDATE

我发现问题是经许可的,
由于我的服务使用自定义权限,当客户端在主机之前安装它无法理解权限时,所以当我安装主机并尝试绑定到它时,android无法使用该权限,因此它会引发安全性异常!

android:permission="com.mypackage.AidlService.BIND"

<permission android:name="com.mypackage.AidlService.BIND"
            android:label="@string/perName"
            android:description="@string/perDesc"
            android:protectionLevel="normal" />

有什么想法来解决这个问题吗?

解决方法

根据 Android Custom Permission Fails Based on App Install Order

你应该使用android:protectionLevel =“signature”而不是正常在权限标记

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...