【问题标题】:DatagramSocket - java.lang.NullPointerException [Android] [duplicate]DatagramSocket - java.lang.NullPointerException [Android] [重复]
【发布时间】:2017-10-28 19:00:23
【问题描述】:

我创建了一个类TFTPClient,它允许用户连接到服务器并能够通过类方法发出某些请求。我已经在 Android Studio 之外创建并测试了它,但是当我传输和编译我的代码时出现错误。该错误是在MainActivity.java中引起的,但不是在创建类对象时引起的,而是在调用某些方法时引起的

TFTPClient c = new TFTPClient(); //Works fine

try {
    c.sendAndReceive(); //Get the error
} catch (UnknownHostException e) {
    e.printStackTrace();
}

这里是 sendAndReceive 方法代码

public void sendAndReceive() throws UnknownHostException {
    int sendPort;
    sendPort = SERVER_RECV_PORT; //(60700)
    int clientConnectionPort = -1;
    InetAddress serverAddress = InetAddress.getByName("172.17.49.153");

    try {
        clientConnectionPort = sendRequest(serverAddress, sendPort, "all");
    }
    catch (IOException e) {
        //System.out.println("error");
    }
    receive(serverAddress, clientConnectionPort);
}

【问题讨论】:

    标签: java android datagram


    【解决方案1】:

    您确定申请了互联网许可吗?根据Finley Smith 的说法,在旧版本的android 中,它不允许您在未经许可的情况下访问互联网。 您可以通过将这行代码放在 AndroidManifest 文件中来添加 Internet 权限:

    <uses-permission android:name="android.permission.INTERNET" />
    

    另外,您能否从 LogCat 发送错误消息,以便下次提供更多信息,谢谢!

    【讨论】:

    • 你错了。 You still need the internet permission。即使是最新的文档也说明了这一点。 The docs on the internet permission says it isn't deprecated 表示它仍然是必需的。不推荐在更高版本中使用的权限,但不会删除以保持向后兼容性。无论哪种方式,您都需要互联网许可,不管是什么版本
    • 如果我们知道究竟是什么错误仍然是最好的。
    • 当您有足够的声誉时,您可以通过评论来做到这一点。同时,确保即使来源指向 Google Play 而不是 Android 操作系统本身,您也不要过分依赖答案。现在这是一个带有错误信息的答案,这个问题是重复的和离题的,因为它没有 MCVE。而不是本质上添加一个美化的评论作为答案,其中有一部分是错误的
    • 以后我会记住这一点的,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-10-11
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多