学习进度条
今日所花时间:一小时
今日代码量:100行
博客量:一篇
了解到的知识点:如何将已经在web端成功的简单项目,部署到手机端 在终端解决8080端口被占用的问题
要解决端口8080被占用的问题,可以按照以下步骤操作:
- 查找占用端口的进程
使用以下命令查找占用8080端口的进程:
Windows:
netstat -ano | findstr :8080
这将列出使用8080端口的进程ID (PID)。 - 终止占用端口的进程
找到PID后,使用以下命令终止进程:
Windows:
taskkill /PID/F
将替换为实际的进程ID。 - 更改应用程序端口
如果不想终止进程,可以更改应用程序的端口。在Spring Boot项目中,修改application.properties或application.yml文件:
application.properties:
server.port=8081 - 重启应用程序
更改端口后,重启应用程序即可。
将web端项目部署到手机端
将周五课堂极限测试写好的web项目放到手机端
web端详细代码在上一篇博客中
下载AndroidStudio
创建EmptyViewsActivity项目
在MainActivity中书写如下代码
package com.example.myapplication;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this); // 启用 EdgeToEdge(确保在 setContentView 之前)
setContentView(R.layout.activity_main); // 只调用一次 setContentView
// 初始化 WebView
WebView webView = findViewById(R.id.webview);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true); // 启用 JavaScript
webSettings.setDomStorageEnabled(true); // 启用 DOM 存储
webSettings.setCacheMode(WebSettings.LOAD_DEFAULT); // 启用缓存
// 设置 WebViewClient 处理页面加载事件
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
Log.e("WebViewError", "Error loading page: " + error.getDescription());
Toast.makeText(MainActivity.this, "加载失败,请检查网络连接", Toast.LENGTH_LONG).show();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.d("WebViewDebug", "Page loaded: " + url);
}
});
// 加载本地 Spring Boot 后端地址(模拟器用 10.0.2.2,真机用电脑的局域网 IP)
String serverUrl = "http://192.168.210.118:8080";
webView.loadUrl(serverUrl);
// 处理 EdgeToEdge 的 WindowInsets
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:usesCleartextTraffic="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.MyApplication"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
按照上述操作运行前后端程序能够用WebView在Android应用中嵌入Web内容,然后在AndroidStudio的虚拟设备上实现对应功能。

浙公网安备 33010602011771号