Skip to content
This repository has been archived by the owner on Jan 16, 2024. It is now read-only.

Commit

Permalink
feat: 内置Webview网页
Browse files Browse the repository at this point in the history
  • Loading branch information
jing332 committed Jan 11, 2024
1 parent 0ba4c8b commit 24f2fb5
Show file tree
Hide file tree
Showing 7 changed files with 238 additions and 181 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -169,9 +169,9 @@ dependencies {
implementation("com.google.accompanist:accompanist-systemuicontroller:${accompanistVersion}")
implementation("com.google.accompanist:accompanist-navigation-animation:${accompanistVersion}")
implementation("com.google.accompanist:accompanist-permissions:${accompanistVersion}")
//webview

implementation("androidx.webkit:webkit:1.9.0")
implementation("com.google.accompanist:accompanist-webview:${accompanistVersion}")
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")


implementation("androidx.constraintlayout:constraintlayout-compose:1.0.1")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,22 @@ import android.net.Uri
import android.os.Build
import android.os.Environment
import android.provider.Settings
import android.webkit.CookieManager
import android.webkit.CookieSyncManager
import android.webkit.WebStorage
import android.webkit.WebView
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowCircleUp
import androidx.compose.material.icons.filled.FilePresent
import androidx.compose.material.icons.filled.ScreenLockPortrait
import androidx.compose.material.icons.filled.SupervisorAccount
import androidx.compose.material3.Checkbox
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
Expand All @@ -35,10 +43,12 @@ import com.github.jing332.alistandroid.R
import com.github.jing332.alistandroid.config.AppConfig
import com.github.jing332.alistandroid.ui.MyTools.isIgnoringBatteryOptimizations
import com.github.jing332.alistandroid.ui.MyTools.killBattery
import com.github.jing332.alistandroid.util.ToastUtils.toast
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import com.google.accompanist.permissions.isGranted
import com.google.accompanist.permissions.rememberPermissionState

@Suppress("DEPRECATION")
@OptIn(ExperimentalPermissionsApi::class)
@Composable
fun SettingsScreen() {
Expand Down Expand Up @@ -151,5 +161,57 @@ fun SettingsScreen() {
icon = { Icon(Icons.Default.ScreenLockPortrait, contentDescription = null) }
)

DividerPreference {
Text(stringResource(id = R.string.web))
}

BasePreferenceWidget(
onClick = {
WebView(context).clearCache(true)
context.toast(R.string.cleared)
},
icon = { Icon(Icons.Default.FilePresent, null) },
title = { Text(stringResource(id = R.string.clear_web_cache)) },
subTitle = { Text(stringResource(id = R.string.clear_web_cache_desc)) }
)

var showClearDataMenu by remember { mutableStateOf(false) }
BasePreferenceWidget(
onClick = { showClearDataMenu = true },
icon = { Icon(Icons.Default.SupervisorAccount, null) },
title = { Text(stringResource(id = R.string.clear_web_data)) }, subTitle = {
Text(stringResource(id = R.string.clear_web_data_desc))
}, content = {
DropdownMenu(
expanded = showClearDataMenu,
onDismissRequest = { showClearDataMenu = false }) {
DropdownMenuItem(text = {
Text(
stringResource(R.string.confirm),
color = MaterialTheme.colorScheme.error,
fontWeight = androidx.compose.ui.text.font.FontWeight.Bold
)
}, onClick = {
showClearDataMenu = false

context.deleteDatabase("webview.db")
context.deleteDatabase("webviewCache.db")

CookieSyncManager.createInstance(context)
val cookieManager = CookieManager.getInstance()
cookieManager.removeSessionCookies(null)
cookieManager.removeAllCookie()
cookieManager.flush()

WebStorage.getInstance().deleteAllData()

context.toast(R.string.cleared)
})
DropdownMenuItem(
text = { Text(stringResource(id = R.string.cancel)) },
onClick = { showClearDataMenu = false })
}
}
)
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.github.jing332.alistandroid.ui.nav.web

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
Expand All @@ -14,7 +13,7 @@ fun WebScreen(modifier: Modifier = Modifier) {
Scaffold {
Column(modifier = modifier.padding(it)) {
val url = remember { "http://localhost:${AListConfigManager.config().scheme.httpPort}" }
AppWebView(url = url, modifier = modifier.fillMaxSize())
WebView(url = url)
}
}
}
Loading

0 comments on commit 24f2fb5

Please sign in to comment.