AIDL绑定失败

2021-06-30
#AppsFilter: interaction: ***BLOCKED 错误
在 Android 11 上有时绑定服务的时候出现如下问题:

AppsFilter: interaction: PackageSetting ... BLOCKED

这是因为 Android 11 增加了安全限制,需在客户端的AndroidManifest.xml清单文件中加入query权限申请,才能检测到手机上安装的三方应用包安装状态
解决办法:
第一种办法: 降低SDK版本 : 修改build.gradle,降低SDK版本为Android 29
第二种办法: 修改目标软件可见性 :
在客户端的AndroidManifest.xml中添加queries标签声明需要用到的应用包名

<manifest package="com.example.test">
    <queries>
        <package android:name="com.example.service" />
    </queries>
</manifest>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
1. 创建AIDL文件 在项目的src目录下创建一个aidl文件夹,然后在aidl文件夹中创建一个接口文件,命名为MyInterface.aidl。在该文件中定义需要绑定的接口方法。 ``` interface MyInterface { void sendMessage(String message); } ``` 2. 实现AIDL接口 在app模块中创建一个服务类MyService,该服务类需要继承自Service并且实现MyInterface接口。 ``` public class MyService extends Service { @Nullable @Override public IBinder onBind(Intent intent) { return new MyBinder(); } private class MyBinder extends MyInterface.Stub { @Override public void sendMessage(String message) throws RemoteException { // 实现需要绑定的接口方法 } } } ``` 3. 在AndroidManifest.xml中注册服务 在AndroidManifest.xml文件中注册MyService服务。 ``` <service android:name=".MyService" /> ``` 4. 在Activity中绑定服务并调用接口方法 在Activity中绑定MyService服务,并且在按钮点击事件中调用MyInterface接口方法。 ``` public class MainActivity extends AppCompatActivity { private MyInterface myInterface; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 绑定MyService服务 Intent intent = new Intent(this, MyService.class); bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE); } private ServiceConnection serviceConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName componentName, IBinder iBinder) { // 获取MyInterface接口实例 myInterface = MyInterface.Stub.asInterface(iBinder); } @Override public void onServiceDisconnected(ComponentName componentName) { myInterface = null; } }; public void sendMessage(View view) { // 调用MyInterface接口方法 try { myInterface.sendMessage("Hello World"); } catch (RemoteException e) { e.printStackTrace(); } } } ``` 5. 给按钮添加点击事件 在布局文件中给按钮添加点击事件,绑定到sendMessage方法。 ``` <Button android:id="@+id/btn_send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Send Message" android:onClick="sendMessage" /> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值