【问题标题】:return false BindService in api 30在 api 30 中返回 false BindService
【发布时间】:2021-04-02 13:37:18
【问题描述】:

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

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);

}

在 api 30 bindService 返回 false 并且 serviceConnection 不响应侦听器

如何解决这个问题?

【问题讨论】:

  • 在Android 11上如何使用前台服务有一些不同...你可以从那里开始。
  • 我只使用 binder ipc 而不是前台服务
  • 当您调用“bindService”时,“上下文”是否有效且有效?如果您尝试从已停止/已完成的 Activity 绑定到 Service,它将返回 FALSE。
  • 是的,活动正在运行。问题只是在 api 30 及以下版本没有任何问题

标签: android android-intent serviceconnection bindservice


【解决方案1】:

这可能与 Android 11 中引入的包可见性设置有关。当您有 2 个应用时:server 与您要公开的服务和 client 想要绑定该服务 - 客户端需要在其 Manifest 中声明它可以使用该服务包,例如:

<manifest package="com.example.game">
    <queries>
        <package android:name="com.example.store" />
        <package android:name="com.example.services" />
    </queries>
    ...
</manifest>

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 2019-09-06
    • 2021-02-18
    • 1970-01-01
    相关资源
    最近更新 更多