mirror of
https://github.com/MetaCubeX/ClashMetaForAndroid.git
synced 2026-05-09 18:11:26 +08:00
Support hiding app icon (#492)
This commit is contained in:
@@ -45,15 +45,23 @@
|
|||||||
android:launchMode="singleTop">
|
android:launchMode="singleTop">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
|
||||||
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
|
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES" />
|
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
<activity-alias
|
||||||
|
android:name=".MainActivityAlias"
|
||||||
|
android:exported="true"
|
||||||
|
android:targetActivity=".MainActivity">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity-alias>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".ExternalControlActivity"
|
android:name=".ExternalControlActivity"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
@@ -197,5 +205,14 @@
|
|||||||
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
|
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</receiver>
|
</receiver>
|
||||||
|
|
||||||
|
<receiver android:name=".DialerReceiver"
|
||||||
|
android:exported="true">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.provider.Telephony.SECRET_CODE" />
|
||||||
|
<!-- 252746382 is the name of Clash Meta in T9 -->
|
||||||
|
<data android:scheme="android_secret_code" android:host="252746382" />
|
||||||
|
</intent-filter>
|
||||||
|
</receiver>
|
||||||
</application>
|
</application>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.github.kr328.clash
|
package com.github.kr328.clash
|
||||||
|
|
||||||
|
import android.content.ComponentName
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import com.github.kr328.clash.common.util.componentName
|
import com.github.kr328.clash.common.util.componentName
|
||||||
import com.github.kr328.clash.design.AppSettingsDesign
|
import com.github.kr328.clash.design.AppSettingsDesign
|
||||||
@@ -17,6 +18,7 @@ class AppSettingsActivity : BaseActivity<AppSettingsDesign>(), Behavior {
|
|||||||
ServiceStore(this),
|
ServiceStore(this),
|
||||||
this,
|
this,
|
||||||
clashRunning,
|
clashRunning,
|
||||||
|
::onHideIconChange,
|
||||||
)
|
)
|
||||||
|
|
||||||
setContentDesign(design)
|
setContentDesign(design)
|
||||||
@@ -59,4 +61,17 @@ class AppSettingsActivity : BaseActivity<AppSettingsDesign>(), Behavior {
|
|||||||
PackageManager.DONT_KILL_APP,
|
PackageManager.DONT_KILL_APP,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun onHideIconChange(hide: Boolean) {
|
||||||
|
val newState = if (hide) {
|
||||||
|
PackageManager.COMPONENT_ENABLED_STATE_DISABLED
|
||||||
|
} else {
|
||||||
|
PackageManager.COMPONENT_ENABLED_STATE_ENABLED
|
||||||
|
}
|
||||||
|
packageManager.setComponentEnabledSetting(
|
||||||
|
ComponentName(this, mainActivityAlias),
|
||||||
|
newState,
|
||||||
|
PackageManager.DONT_KILL_APP
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
13
app/src/main/java/com/github/kr328/clash/DialerReceiver.kt
Normal file
13
app/src/main/java/com/github/kr328/clash/DialerReceiver.kt
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
package com.github.kr328.clash
|
||||||
|
|
||||||
|
import android.content.BroadcastReceiver
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
|
|
||||||
|
class DialerReceiver : BroadcastReceiver() {
|
||||||
|
override fun onReceive(context: Context, intent: Intent) {
|
||||||
|
val intent = Intent(context, MainActivity::class.java)
|
||||||
|
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
|
context.startActivity(intent)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -159,3 +159,5 @@ class MainActivity : BaseActivity<MainDesign>() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val mainActivityAlias = "${MainActivity::class.java.name}Alias"
|
||||||
@@ -19,6 +19,7 @@ class AppSettingsDesign(
|
|||||||
srvStore: ServiceStore,
|
srvStore: ServiceStore,
|
||||||
behavior: Behavior,
|
behavior: Behavior,
|
||||||
running: Boolean,
|
running: Boolean,
|
||||||
|
onHideIconChange: (hide: Boolean) -> Unit,
|
||||||
) : Design<AppSettingsDesign.Request>(context) {
|
) : Design<AppSettingsDesign.Request>(context) {
|
||||||
enum class Request {
|
enum class Request {
|
||||||
ReCreateAllActivities
|
ReCreateAllActivities
|
||||||
@@ -65,6 +66,17 @@ class AppSettingsDesign(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch(
|
||||||
|
value = uiStore::hideAppIcon,
|
||||||
|
icon = R.drawable.ic_baseline_hide,
|
||||||
|
title = R.string.hide_app_icon_title,
|
||||||
|
summary = R.string.hide_app_icon_desc,
|
||||||
|
) {
|
||||||
|
listener = OnChangedListener {
|
||||||
|
onHideIconChange(uiStore::hideAppIcon.get())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
category(R.string.service)
|
category(R.string.service)
|
||||||
|
|
||||||
switch(
|
switch(
|
||||||
|
|||||||
@@ -25,6 +25,11 @@ class UiStore(context: Context) {
|
|||||||
values = DarkMode.values()
|
values = DarkMode.values()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var hideAppIcon: Boolean by store.boolean(
|
||||||
|
key = "hide_app_icon",
|
||||||
|
defaultValue = false
|
||||||
|
)
|
||||||
|
|
||||||
var proxyExcludeNotSelectable by store.boolean(
|
var proxyExcludeNotSelectable by store.boolean(
|
||||||
key = "proxy_exclude_not_selectable",
|
key = "proxy_exclude_not_selectable",
|
||||||
defaultValue = false,
|
defaultValue = false,
|
||||||
|
|||||||
12
design/src/main/res/drawable/ic_baseline_hide.xml
Normal file
12
design/src/main/res/drawable/ic_baseline_hide.xml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:tint="?attr/colorControlNormal"
|
||||||
|
android:viewportWidth="1024"
|
||||||
|
android:viewportHeight="1024">
|
||||||
|
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="M825.9,134.2l51.7,51.7 -655.1,655.1 -51.7,-51.7 655.1,-655.1zM804.4,325.8c41.3,39.5 81.3,87.9 120,145.3a73.1,73.1 0,0 1,2.8 77.4l-2.8,4.4 -6.9,10.1C795.2,740.3 660,829 512,829c-58.4,0 -114.9,-13.8 -169.3,-41.4l55.1,-55.1c37.4,15.7 75.5,23.4 114.2,23.4 120.9,0 235.5,-75.1 345.1,-234l6.7,-9.8 -6.7,-9.8c-34.3,-49.7 -69,-91.2 -104.4,-124.7l51.7,-51.7zM512,195c51.4,0 101.3,10.7 149.7,32.1l-56.5,56.5A289.4,289.4 0,0 0,512 268.2c-120.9,0 -235.5,75.1 -345.1,234L160.2,512l6.7,9.8c29.5,42.8 59.4,79.5 89.7,110.3l-51.7,51.7c-36.1,-36.7 -71.3,-80.3 -105.4,-130.9a73.1,73.1 0,0 1,-2.8 -77.4l2.8,-4.4 6.9,-10.1C228.8,283.7 364,195 512,195zM664.8,465.4a161.7,161.7 0,0 1,-205.8 205.8l65.1,-65.1a88.6,88.6 0,0 0,75.6 -75.6l65.1,-65.1zM512,356.7c6.4,0 12.8,0.4 19,1.1l-179.5,179.6A161.7,161.7 0,0 1,512 356.7z" />
|
||||||
|
|
||||||
|
</vector>
|
||||||
@@ -37,6 +37,8 @@
|
|||||||
<string name="format_profile_activated">%s 已激活</string>
|
<string name="format_profile_activated">%s 已激活</string>
|
||||||
<string name="format_traffic_forwarded">%s 已转发</string>
|
<string name="format_traffic_forwarded">%s 已转发</string>
|
||||||
<string name="global_mode">全局模式</string>
|
<string name="global_mode">全局模式</string>
|
||||||
|
<string name="hide_app_icon_title">隐藏应用图标</string>
|
||||||
|
<string name="hide_app_icon_desc">可以在拨号盘输入 *#*#252746382#*#* 打开应用</string>
|
||||||
<string name="history">历史</string>
|
<string name="history">历史</string>
|
||||||
<string name="import_from_file">从文件导入</string>
|
<string name="import_from_file">从文件导入</string>
|
||||||
<string name="import_from_url">从 URL 导入</string>
|
<string name="import_from_url">从 URL 导入</string>
|
||||||
|
|||||||
@@ -341,4 +341,7 @@
|
|||||||
<string name="external_control_activity">External Control</string>
|
<string name="external_control_activity">External Control</string>
|
||||||
<string name="external_control_started">Clash.Meta service started</string>
|
<string name="external_control_started">Clash.Meta service started</string>
|
||||||
<string name="external_control_stopped">Clash.Meta service stopped</string>
|
<string name="external_control_stopped">Clash.Meta service stopped</string>
|
||||||
|
|
||||||
|
<string name="hide_app_icon_title">Hide App Icon</string>
|
||||||
|
<string name="hide_app_icon_desc">You can dial *#*#252746382#*#* to open this App</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user