diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index dd98e72..b628522 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -79,8 +79,8 @@ jobs:
- name: Start API Server & Upload
env:
COMMIT_MESSAGE: |+
- ${{ github.event.head_commit.message }}\n
- [See commit detail here](${{ github.event.head_commit.url }})
+
${{ github.event.head_commit.message }}
+ See commit details here
COMMIT_URL: ${{ github.event.head_commit.url }}
run: |
ESCAPED=`python3 -c 'import json,os,urllib.parse; msg = json.dumps(os.environ["COMMIT_MESSAGE"]); print(urllib.parse.quote(msg if len(msg) <= 1024 else json.dumps(os.environ["COMMIT_URL"])))'`
@@ -91,6 +91,6 @@ jobs:
mv ./$RELEASE_SIGNED_PWD/app-release.apk ./$RELEASE_SIGNED_PWD.apk && rm -rf ./$RELEASE_SIGNED_PWD
../binaries/telegram-bot-api --api-id=${{ secrets.TELEGRAM_API_APP_ID }} --api-hash=${{ secrets.TELEGRAM_API_HASH }} --local 2>&1 > /dev/null &
export token=${{ secrets.TELEGRAM_BOT_KEY }}
- curl -v "http://127.0.0.1:8081/bot$token/sendMediaGroup?chat_id=-1002216379163&media=%5B%7B%22type%22%3A%22document%22%2C%22media%22%3A%22attach%3A%2F%2FreleaseTest%22%7D%2C%7B%22type%22%3A%22document%22%2C%22media%22%3A%22attach%3A%2F%2FreleaseSigned%22%2C%22parse_mode%22%3A%22MarkdownV2%22%2C%22caption%22%3A${ESCAPED}%7D%5D" \
+ curl -v "http://127.0.0.1:8081/bot$token/sendMediaGroup?chat_id=-1002216379163&media=%5B%7B%22type%22%3A%22document%22%2C%22media%22%3A%22attach%3A%2F%2FreleaseTest%22%7D%2C%7B%22type%22%3A%22document%22%2C%22media%22%3A%22attach%3A%2F%2FreleaseSigned%22%2C%22parse_mode%22%3A%22HTML%22%2C%22caption%22%3A${ESCAPED}%7D%5D" \
-F releaseTest="@$RELEASE_TEST_PWD.apk" \
-F releaseSigned="@$RELEASE_SIGNED_PWD.apk"
diff --git a/app/src/main/java/com/bintianqi/owndroid/PkgSelector.kt b/app/src/main/java/com/bintianqi/owndroid/PkgSelector.kt
index 052433f..9ff180b 100644
--- a/app/src/main/java/com/bintianqi/owndroid/PkgSelector.kt
+++ b/app/src/main/java/com/bintianqi/owndroid/PkgSelector.kt
@@ -42,6 +42,8 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.draw.clip
+import androidx.compose.ui.focus.FocusRequester
+import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.painterResource
@@ -76,6 +78,7 @@ fun PackageSelector(navCtrl: NavHostController, pkgName: MutableState) {
var hideProgress by remember { mutableStateOf(true) }
var system by remember { mutableStateOf(false) }
var search by remember { mutableStateOf("") }
+ var searchMode by remember { mutableStateOf(false) }
val scrollState = rememberLazyListState()
val focusMgr = LocalFocusManager.current
val co = rememberCoroutineScope()
@@ -99,49 +102,65 @@ fun PackageSelector(navCtrl: NavHostController, pkgName: MutableState) {
topBar = {
TopAppBar(
actions = {
- Icon(
- painter = painterResource(R.drawable.filter_alt_fill0),
- contentDescription = "filter",
- modifier = Modifier
- .padding(horizontal = 4.dp)
- .clip(RoundedCornerShape(50))
- .clickable {
- system = !system
- Toast.makeText(context, if(system) R.string.show_system_app else R.string.show_user_app, Toast.LENGTH_SHORT).show()
- }
- .padding(5.dp)
- )
- Icon(
- painter = painterResource(R.drawable.refresh_fill0),
- contentDescription = "refresh",
- modifier = Modifier
- .padding(horizontal = 4.dp)
- .clip(RoundedCornerShape(50))
- .clickable {
- co.launch { getPkgList() }
- }
- .padding(5.dp)
- )
+ if(!searchMode) {
+ Icon(
+ painter = painterResource(R.drawable.search_fill0),
+ contentDescription = "search",
+ modifier = Modifier
+ .padding(horizontal = 4.dp)
+ .clip(RoundedCornerShape(50))
+ .clickable { searchMode = true }
+ .padding(5.dp)
+ )
+ Icon(
+ painter = painterResource(R.drawable.filter_alt_fill0),
+ contentDescription = "filter",
+ modifier = Modifier
+ .padding(horizontal = 4.dp)
+ .clip(RoundedCornerShape(50))
+ .clickable {
+ system = !system
+ Toast.makeText(context, if(system) R.string.show_system_app else R.string.show_user_app, Toast.LENGTH_SHORT).show()
+ }
+ .padding(5.dp)
+ )
+ Icon(
+ painter = painterResource(R.drawable.refresh_fill0),
+ contentDescription = "refresh",
+ modifier = Modifier
+ .padding(horizontal = 4.dp)
+ .clip(RoundedCornerShape(50))
+ .clickable { co.launch { getPkgList() } }
+ .padding(5.dp)
+ )
+ }
},
title = {
- OutlinedTextField(
- value = search,
- onValueChange = { search = it },
- keyboardOptions = KeyboardOptions(imeAction = ImeAction.Search),
- keyboardActions = KeyboardActions { focusMgr.clearFocus() },
- placeholder = { Text(stringResource(R.string.search)) },
- trailingIcon = {
- Icon(
- painter = painterResource(R.drawable.close_fill0),
- contentDescription = "clear search",
- modifier = Modifier.clickable {
- search = ""
- focusMgr.clearFocus()
- }
- )
- },
- modifier = Modifier.padding(vertical = 8.dp)
- )
+ if(searchMode) {
+ val fr = FocusRequester()
+ LaunchedEffect(Unit) { fr.requestFocus() }
+ OutlinedTextField(
+ value = search,
+ onValueChange = { search = it },
+ keyboardOptions = KeyboardOptions(imeAction = ImeAction.Search),
+ keyboardActions = KeyboardActions { focusMgr.clearFocus() },
+ placeholder = { Text(stringResource(R.string.search)) },
+ trailingIcon = {
+ Icon(
+ painter = painterResource(R.drawable.close_fill0),
+ contentDescription = "clear search",
+ modifier = Modifier.clickable {
+ focusMgr.clearFocus()
+ search = ""
+ searchMode = false
+ }
+ )
+ },
+ modifier = Modifier.fillMaxWidth().focusRequester(fr)
+ )
+ } else {
+ Text(stringResource(R.string.pkg_selector))
+ }
},
navigationIcon = { NavIcon{ navCtrl.navigateUp() } },
colors = TopAppBarDefaults.topAppBarColors(containerColor = colorScheme.background)
@@ -186,11 +205,16 @@ fun PackageSelector(navCtrl: NavHostController, pkgName: MutableState) {
@Composable
private fun PackageItem(pkg: PkgInfo, navCtrl: NavHostController, pkgName: MutableState) {
+ val focusMgr = LocalFocusManager.current
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier
.fillMaxWidth()
- .clickable{ pkgName.value = pkg.pkgName; navCtrl.navigateUp() }
+ .clickable{
+ pkgName.value = pkg.pkgName
+ focusMgr.clearFocus()
+ navCtrl.navigateUp()
+ }
.padding(vertical = 6.dp)
) {
Spacer(Modifier.padding(start = 15.dp))
diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/ApplicationManage.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/ApplicationManage.kt
index 445b9bf..4f4bdcc 100644
--- a/app/src/main/java/com/bintianqi/owndroid/dpm/ApplicationManage.kt
+++ b/app/src/main/java/com/bintianqi/owndroid/dpm/ApplicationManage.kt
@@ -142,7 +142,10 @@ fun ApplicationManage(navCtrl:NavHostController, pkgName: MutableState,
Icon(painter = painterResource(R.drawable.checklist_fill0), contentDescription = null,
modifier = Modifier
.clip(RoundedCornerShape(50))
- .clickable(onClick = {navCtrl.navigate("PackageSelector")})
+ .clickable(onClick = {
+ focusMgr.clearFocus()
+ navCtrl.navigate("PackageSelector")
+ })
.padding(3.dp))
},
singleLine = true
diff --git a/app/src/main/res/drawable/search_fill0.xml b/app/src/main/res/drawable/search_fill0.xml
new file mode 100644
index 0000000..0812e9f
--- /dev/null
+++ b/app/src/main/res/drawable/search_fill0.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index c68a681..b6a415e 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -298,7 +298,6 @@
Yükleniyor
Kullanıcı uygulamalarını göster
Sistem uygulamalarını göster
- İzin seçici
Askıya al
Gizle
Mevcut olmayan uygulamalar gizlidir
@@ -512,7 +511,6 @@
Confirm password
Başlangıçta kimlik bilgilerini sorma
Giriş gerektir
- En az 4 haneli şifre gerektir
Jeton ile şifreyi sıfırla
Gereken şifre karmaşıklığı
Yeni şifre ayarlanmasını iste
@@ -594,7 +592,6 @@
Nearby Wi-Fi devices
Telefonla arama yap
Answer phone calls
- Read phone numbers
Telefon durumunu oku
Use SIP
UWB ranging
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 8f32ba1..4e691d9 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -293,7 +293,6 @@
加载中
显示用户应用
显示系统应用
- 权限选择器
挂起
隐藏
如果隐藏,有可能是没安装
@@ -504,7 +503,6 @@
确认密码
启动(boot)时不要求密码
不允许其他设备管理员重置密码直至用户输入一次密码
- 需要4位密码
使用令牌重置密码
密码复杂度要求
要求设置新密码
@@ -586,7 +584,6 @@
附近的Wi-Fi设备
打电话
接电话
- 读取手机号码
读取手机状态
使用SIP
超宽频
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f063c9b..6ea5950 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -306,7 +306,6 @@
Loading
Show user apps
Show system apps
- Permission picker
Suspend
Hide
Non-existent apps is hidden
@@ -518,7 +517,6 @@
Confirm password
Do not ask credentials on boot
Require entry
- Require at least 4 digit password
Reset password with token
Required password complexity
Request to set a new password
@@ -600,7 +598,6 @@
Nearby Wi-Fi devices
Call phone
Answer phone calls
- Read phone numbers
Read phone state
Use SIP
UWB ranging