无法使用 Android 应用程序连接到套接字
Cannot connect to socket with Android App
我花了 1 天多的时间尝试从 Android App 连接到 SocketIO,但不能。虽然我可以通过笔记本电脑和我的物理设备(使用<uses-permission android:name="android.permission.INTERNET"/>
)中的浏览器访问本地link,但每次启动应用程序后我都无法通过Android App连接到Socket。
这是我在 gradle
:
中添加的依赖项
dependencies{
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.2'
testImplementation 'junit:junit:4.+'
implementation ('io.socket:socket.io-client:2.0.0') {
exclude group: 'org.json', module: 'json'
}
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
这是我在 MainActivity.java
中的代码:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import io.socket.client.IO;
import io.socket.client.Socket;
import java.net.URISyntaxException;
public class MainActivity extends AppCompatActivity {
private Socket mSocket;
{
try {
mSocket = IO.socket("http://192.168.1.2:3000/");
} catch (URISyntaxException e) {
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSocket.connect();
}
}
我该怎么办?
您正在使用 http url 进行连接
在较新的 android 版本中,http 流量默认被系统
阻止
要允许 http,请编辑您的 AndroidManifest.xml 并添加
android:usesCleartextTraffic=“真”到这样的应用程序标签
<application android:usesCleartextTraffic="true">
</application>
我花了 1 天多的时间尝试从 Android App 连接到 SocketIO,但不能。虽然我可以通过笔记本电脑和我的物理设备(使用<uses-permission android:name="android.permission.INTERNET"/>
)中的浏览器访问本地link,但每次启动应用程序后我都无法通过Android App连接到Socket。
这是我在 gradle
:
dependencies{
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.2'
testImplementation 'junit:junit:4.+'
implementation ('io.socket:socket.io-client:2.0.0') {
exclude group: 'org.json', module: 'json'
}
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
这是我在 MainActivity.java
中的代码:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import io.socket.client.IO;
import io.socket.client.Socket;
import java.net.URISyntaxException;
public class MainActivity extends AppCompatActivity {
private Socket mSocket;
{
try {
mSocket = IO.socket("http://192.168.1.2:3000/");
} catch (URISyntaxException e) {
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSocket.connect();
}
}
我该怎么办?
您正在使用 http url 进行连接 在较新的 android 版本中,http 流量默认被系统
阻止要允许 http,请编辑您的 AndroidManifest.xml 并添加 android:usesCleartextTraffic=“真”到这样的应用程序标签
<application android:usesCleartextTraffic="true">
</application>