首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接口返回false BindService

接口返回false BindService
EN

Stack Overflow用户
提问于 2021-04-02 21:37:19
回答 1查看 112关注 0票数 0

当我用compileSdkVersion 30运行我的代码时,30不工作,但在29代码中工作

代码语言:javascript
复制
Intent intent = new Intent();
intent.setPackage("com.androidlearn.securityman");

ServiceConnection serviceConnection = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
        Log.e("","");
        Toast.makeText(context,"onServiceConnected",Toast.LENGTH_LONG).show();
        listener.onSuccess(IPaymentInterface.Stub.asInterface(service));
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
        Toast.makeText(context,"onServiceDisconnected",Toast.LENGTH_LONG).show();
        Log.e("","");
        listener.onFailure("connection failed");

    }
};
context.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);

}

在API30中,bindService返回false并且serviceConnection不响应监听程序

如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2021-09-03 11:34:36

这可能与安卓11中引入的包可见性设置有关。当你有两个应用程序时:带有你要公开的服务的服务器和想要绑定该服务的客户端-客户端需要在其清单中声明它可以使用服务包,例如:

代码语言:javascript
复制
<manifest package="com.example.game">
    <queries>
        <package android:name="com.example.store" />
        <package android:name="com.example.services" />
    </queries>
    ...
</manifest>

否则,binding将返回false,并且在系统范围的Logcat中,您将看到如下内容:

代码语言:javascript
复制
I/AppFilter: Interaction: PackageSetting {<client.app.package/PID> -> <server.app.package/PID>} Blocked
W/ActivityManager: Unable to start service Intent { act=<action> pkg=<server.app.package>} U=0: not found

因为如果没有此Manifest声明,服务器应用程序服务对于客户端应用程序是不可见的。如果您想检查意图数据是否正确,仍然可以从adb启动它。

更多信息:https://developer.android.com/training/package-visibility/declaring

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66920154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档