无法连接到android 5.1上的本机本地套接字

无法连接到android 5.1上的本机本地套接字,android,sockets,android-ndk,android-networking,unix-socket,Android,Sockets,Android Ndk,Android Networking,Unix Socket,我有commad line工具,它发送广播和等待结果 服务器代码(省略错误处理): Java客户端代码: public class CommandReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { LocalSocket socket = new LocalSocket(); L

我有commad line工具,它发送广播和等待结果

服务器代码(省略错误处理):

Java客户端代码:

public class CommandReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {

            LocalSocket socket = new LocalSocket();
            LocalSocketAddress address = new LocalSocketAddress("SOCKET_NAME", LocalSocketAddress.Namespace.ABSTRACT);
            socket.connect(address);

            // Do something and send result asynchronously 
这一切都可以在android 5.1之前的版本上运行

在android 5.1 connect()上引发异常:

java.io.IOException:权限被拒绝

位于android.net.LocalSocketImpl.connectLocal(本机方法)

在android.net.LocalSocketImpl.connect上(LocalSocketImpl.java:290)

在android.net.LocalSocket.connect上(LocalSocket.java:130)

在日志中出现错误:

07-27 09:56:08.179:W:type=1400审核(0.0:3675):avc:denied{connectto}for path=00636F6D2E6B6173706572736B792E6B61736865C6C2E534F43B4542D36313833836313732313433373938373637 scontext=u:r:untrusted\u应用程序:s0 tcntext=u:r:shell:s0 tclass=unix\u流\u套接字许可=0

我找到了相对的安卓修复程序:

那么,自从安卓5.1之后,它就不再工作了? 我能做什么(也许以某种方式设置权限)?
或者是否有其他机制从本机命令行工具发送数据并等待结果?

使用管道而不是套接字:

在java进程中创建管道:

        mkfifo(cpath, 0);
        chmod(cpath, S_IRWXU|S_IROTH|S_IRGRP);
本机进程中的开放管道:

int serverFd = open(PIPE_NAME, O_RDONLY | O_NONBLOCK);
pollfd pollFd = {0};
pollFd.fd = serverFd.get();
pollFd.events = POLLIN | POLLRDHUP;

// send command
....

for(;;)
{
    int pollResult = poll(&pollFd, 1, timeout);
int serverFd = open(PIPE_NAME, O_RDONLY | O_NONBLOCK);
pollfd pollFd = {0};
pollFd.fd = serverFd.get();
pollFd.events = POLLIN | POLLRDHUP;

// send command
....

for(;;)
{
    int pollResult = poll(&pollFd, 1, timeout);