本文介绍如何写一个入门的安卓apk应用, 以嵌套一个网页为例。
开发ide:Android studio
语言:Kotlin
tips: 最好别下载新版本的 Android studio ,因为新版的界面有所改动 遇到问题去网上搜 新手刚入门可能界面都找不到在哪里;其次更重要的是新版创建时 已经不能选java语言了 (不过IDE可以自动将我们复制过来的java代码转成kotlin)
步骤:file – new – new project
选择activity ,我们这里选择的是empty activity
SDK,最好选择和我们手机安卓版本对应的
android代码: 认真看注释的注意事项
代码最好不要全部复制粘贴! 非常容易出现找不到主类的问题!!(至少在最新版的Android Studio里面非常容易出现这个bug)
类名用IDE自己生成的 不要动(
即使类名一样 也不要复制)
可以复制class里面 即最外层大括号里面的代码
package com.example.webapp
import android.os.Bundle
import androidx.activity.ComponentActivity
import android.webkit.WebView
import android.webkit.WebViewClient
import android.webkit.WebResourceRequest
import android.webkit.WebResourceError
/**
* 注意事项:Kotlin 编写的
* 一、AndroidManifest.xml 里面要配置网络权限
* 1. <uses-permission android:name="android.permission.INTERNET" />
* 2. android:usesCleartextTraffic="true"
* 3. android:networkSecurityConfig="@xml/network_security_config"
* 二、 layout里面写布局xml文件
* 三、 如果AndroidManifest.xml里面定义了主类 但还是提示找不到 创建一个新工程吧 不折腾了
* 四、 虚拟设备可能上不了网 直接安装到手机里面尝试吧
* Build > Generate Signed Bundle / APK
* 选择APK:在弹出的对话框中,选择APK而不是Android App Bundle。然后点击Next。
* 创建新的签名密钥或使用现有的:如果你之前没有生成过签名密钥,你需要创建一个新的。
* 选择构建类型:选择一个构建变种(通常是release)
*/
class MainActivity : ComponentActivity() {
private lateinit var webView: WebView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.my_web)
webView = findViewById(R.id.webview)
// Enable JavaScript
webView.settings.javaScriptEnabled = true
// Optional: Enable DOM storage API
webView.settings.domStorageEnabled = true
webView.settings.apply {
useWideViewPort = true // 加载内容适用宽视图端口
setSupportZoom(true) // 允许缩放
builtInZoomControls = true // 启用内置缩放控件
displayZoomControls = false // 不显示缩放控件
}
// 新增设置项,确保滚动条启用
webView.scrollBarStyle = WebView.SCROLLBARS_INSIDE_OVERLAY
// Handle page navigation
webView.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(
view: WebView?,
request: WebResourceRequest?
): Boolean {
view?.loadUrl(request?.url.toString())
return true
}
override fun onReceivedError(
view: WebView?,
request: WebResourceRequest?,
error: WebResourceError?
) {
super.onReceivedError(view, request, error)
// 在这里处理错误,例如显示一个自定义错误页面
}
}
// Load a web page
webView.loadUrl("http://www.baidu.com")
}
// Go back in webview history
override fun onBackPressed() {
if (webView.canGoBack()) {
webView.goBack()
} else {
super.onBackPressed()
}
}
}
AndroidManifest.xml 文件: 同样不要直接复制替换,用来参考的 供大家手动去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" />
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Webapp"
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.Webapp">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
my_web.xml 文件:位于res/layout目录下 需要先新创建一个layout文件夹,这个可以直接复制
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
network_security_config.xml文件:位于res/xml 文件夹下
这个也是可以直接复制的
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
</base-config>
</network-security-config>
目录结构如下:
如果是java格式的结构 可能是这样的:
接着build成apk 安装到我们自己手机就可以运行了, 我们就完成了一个简易的app
app功能:展示百度首页
(build步骤在上面注释里面)
用Android studio的虚拟设备 可能会出现连不上网的问题 需要自己解决,对新手来说不友好,本文暂不阐述