![图片[1]我的博客-记录我的生活点点滴滴如何将网址打包成一个APP我的博客-记录我的生活点点滴滴我的博客](https://www.52hxm.cn/wp-content/uploads/2025/05/android.png)
前置环境:
1、安装android studio
Android studio下载地址:https://developer.android.google.cn/?hl=zh-cn
中文语言包及配置方法:https://blog.csdn.net/m0_74246200/article/details/144339439
2、安装JAVA并配置好JAVA环境
JAVA环境配置教程:https://cloud.tencent.com/developer/article/2062285
******************************
1、新建一个Empty Views Activity项目
2、name为项目名称,package name为包名,language选kotlin
3、\app\src\main\AndroidManifest.xml添加网络权限,放在<application前面:
—————————–
<uses-permission android:name=”android.permission.INTERNET” />
—————————–
4、修改\app\src\main\res\layout\activity_main.xml内容如下:
—————————–
<?xml version=”1.0″ encoding=”utf-8″?>
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”match_parent”
android:layout_height=”match_parent”>
<WebView
android:id=”@+id/webView”
android:layout_width=”match_parent”
android:layout_height=”match_parent” />
<ProgressBar
android:id=”@+id/progressBar”
style=”?android:attr/progressBarStyleHorizontal”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_alignParentTop=”true”
android:max=”100″
android:progress=”0″
android:visibility=”visible” />
</RelativeLayout>
—————————–
5、修改\app\src\main\res\values\strings.xml里的APP名字
6、替换图标,修改\app\src\main\AndroidManifest.xml里的这两个图标配置文件:
android:icon=”@mipmap/new_icon”
android:roundIcon=”@mipmap/new_icon”
同时在名为new_icon.png的图标文件放到mipmap-*这5个目录里
7、修改\app\src\main\java\com\hxmw\hxm\MainActivity文件内容如下,
\com\hxmw\a52hxm\为包名路径:
—————————–
//包名为自己的包名
package com.hxmw.hxm
import android.annotation.SuppressLint
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.view.KeyEvent
import android.view.View
import android.webkit.* // 确保导入了所有WebView相关类
import android.widget.ProgressBar
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
private lateinit var webView: WebView
private lateinit var progressBar: ProgressBar
@SuppressLint(“SetJavaScriptEnabled”)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
progressBar = findViewById(R.id.progressBar)
webView = findViewById(R.id.webView)
// 配置WebView设置
val settings = webView.settings
settings.javaScriptEnabled = true
settings.domStorageEnabled = true
settings.allowContentAccess = true
settings.allowFileAccess = true
settings.useWideViewPort = true
settings.loadWithOverviewMode = true
settings.builtInZoomControls = true
settings.displayZoomControls = false
// 设置缓存模式(根据需要调整)
settings.cacheMode = WebSettings.LOAD_DEFAULT
// 启用混合内容(如果网站同时使用HTTP和HTTPS资源)
settings.mixedContentMode = WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE
// 设置WebViewClient处理URL加载和错误
webView.webViewClient = object : WebViewClient() {
// 处理URL加载
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
val url = request?.url.toString()
// 处理自定义协议(如bdnetdisk://)
if (!url.startsWith(“http”) && !url.startsWith(“https”)) {
try {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
if (intent.resolveActivity(packageManager) != null) {
startActivity(intent)
} else {
Toast.makeText(this@MainActivity, “无法打开此链接: $url”, Toast.LENGTH_SHORT).show()
}
return true
} catch (e: Exception) {
e.printStackTrace()
Toast.makeText(this@MainActivity, “打开链接时出错”, Toast.LENGTH_SHORT).show()
return true
}
}
// 普通HTTP/HTTPS链接继续由WebView加载
view?.loadUrl(url)
return true
}
// 处理加载错误
override fun onReceivedError(
view: WebView?,
request: WebResourceRequest?,
error: WebResourceError?
) {
super.onReceivedError(view, request, error)
progressBar.visibility = View.GONE
Toast.makeText(this@MainActivity, “加载页面时出错: ${error?.description}”, Toast.LENGTH_SHORT).show()
}
}
// 设置WebChromeClient监听加载进度
webView.webChromeClient = object : WebChromeClient() {
override fun onProgressChanged(view: WebView?, newProgress: Int) {
super.onProgressChanged(view, newProgress)
progressBar.progress = newProgress
if (newProgress == 100) {
progressBar.visibility = View.GONE
} else {
progressBar.visibility = View.VISIBLE
}
}
}
// 加载网页
webView.loadUrl(“https://xm.52hxm.com/”)
}
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
webView.goBack()
return true
}
return super.onKeyDown(keyCode, event)
}
}
—————————–
增加启动页教程:
1、\app\src\main\java\com\hxmw\hxm\目录下新增SplashActivity.kt文件,修改内容为如下,
\com\hxmw\a52hxm\为包名路径:
—————————–
//包名为自己的包名
package com.hxmw.a52hxm
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 延迟启动主Activity
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
finish() // 防止用户按返回键回到启动页
}
}
—————————–
2、\app\src\main\res\drawable目录下新增launch_screen.xml文件,修改内容如下:
—————————–
<?xml version=”1.0″ encoding=”utf-8″?>
<layer-list xmlns:android=”http://schemas.android.com/apk/res/android”>
<!– 背景颜色 –>
<item android:drawable=”@android:color/white” />
<!– 应用图标或品牌标识 –>
<item
android:gravity=”center”
android:drawable=”@mipmap/background”>
</item>
</layer-list>
—————————–
3、放置背景图片
\app\src\main\res目录下的5个mipmap-*开头的目录内放入名为background.PNG图片,尺寸400*400像素
4、\app\src\main\res\values目录新增styles.xml文件, 修改内容如下:
—————————–
<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
<style name=”LaunchTheme” parent=”Theme.AppCompat.NoActionBar”>
<item name=”android:windowBackground”>@drawable/launch_screen</item>
</style>
</resources>
—————————–
5、修改\app\src\main\AndroidManifest.xml文件,替换activity标签对里的内容为以下内容:
—————————–
<!– 启动页 Activity –>
<activity
android:name=”.SplashActivity”
android:theme=”@style/LaunchTheme”
android:exported=”true”
android:noHistory=”true”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
<!– 主 Activity –>
<activity
android:name=”.MainActivity”
android:exported=”true”>
</activity>
—————————–
参考APP:
——————————-
说明:
1、此方法是将网址生成安卓APP的方法
2、苹果APP因为需要签名证书,可以使用第三方打包,参考第三方:http://hsq12580.com/
暂无评论内容