AIDL模拟支付宝时,API30测试,bindService返回false,mThirdPayAction为null?
在AIDL模拟支付宝的案例里,一模一样按视频走的代码,然后在模拟器(API 版本19)、(API 版本26)、真机上(安卓9)测试,都成功跳转之模拟支付的界面
但是在API30上,点充值后没反应,不跳转到模拟的支付宝界面 ,
查看了一下log,只打出了一个 MainActivity: 绑定Alipay.....
如下图:

附代码:
/**
* 绑定Alipay服务
*/
private void bindAlipayService() {
Intent intent = new Intent();
intent.setAction("com.mylibhyz.alipay.THIRD_PAY");
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setPackage("com.mylibhyz.alipay");
mAlipayConnection = new AlipayConnection();
mIsBindAlipay = bindService(intent, mAlipayConnection, BIND_AUTO_CREATE);
Log.d(TAG, "绑定Alipay.....");
}
private class AlipayConnection implements ServiceConnection {
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
Log.d(TAG, "onServiceConnected绑定.....");
mThirdPayAction = ThirdPayAction.Stub.asInterface(iBinder);
}
@Override
public void onServiceDisconnected(ComponentName componentName) {
Log.d(TAG, "onServiceDisconnected解绑.....");
}
别的log都没有打出来
然后我在上面的bindAlipayService()方法里面打了断点debug了一下:

然后mIsBindAlipay 返回值为false

然后,我在点击事件里面加了个log,然后发现 mThirdPayAction = ThirdPayAction.Stub.asInterface(iBinder); 中的mThirdPayAction为null:

但是,以上问题在API 26 上没有出现 ,该打的log都打出来了,也跳转成功了:

但在API30上就是不行
所以 是不是因为安卓版本更新后有服务限制呢?
还是某些权限的问题?
在https://developer.android.com/about/versions/10/privacy/changes里面我好像也没找见明确的限制?[疑惑]
求助qwq
API30(Android11)及以上的版本,需要在AndroidManifest.xml中配置queries标签,才能拉起远程服务并调用远程服务中的方法。
例如:
服务端AndroidManifest.xml的service配置如下:
那么客户端AndroidManifest.xml中,在manifest节点下需要配置对应的queries:
具体可参考Android开发者官网https://developer.android.google.cn/training/basics/intents/package-visibility
Android的每个新版本都会有一些特性,心好累
intent.setAction("com.mylibhyz.alipay.THIRD_PAY");
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setPackage("com.mylibhyz.alipay");
你这个对得上你注册服务的地方吗?我觉得跟版本没什么关系,而是你在模拟器上可以,在你的手机上不可以。那你做个对比测试好了。再找一台android手机测试一下。
你自己过滤了MainActivity,当然只是MainActivity的log啦
你现在是执行了,绑定服务,但是呢,返回是null的,那就去看被绑定那边的服务,onBind有没有走到。
都 不要过滤了吧,应用过滤也别要了。
抓一份全的log。补充一下代码。