mirror of
https://github.com/MatsuriDayo/NekoBoxForAndroid.git
synced 2025-12-18 22:20:06 +08:00
update
This commit is contained in:
parent
dfb81814d1
commit
24ecd8c1a9
@ -180,5 +180,6 @@ object Action {
|
||||
const val SERVICE = "io.nekohasekai.sagernet.SERVICE"
|
||||
const val CLOSE = "io.nekohasekai.sagernet.CLOSE"
|
||||
const val RELOAD = "io.nekohasekai.sagernet.RELOAD"
|
||||
const val SWITCH_WAKE_LOCK = "io.nekohasekai.sagernet.SWITCH_WAKELOCK"
|
||||
// const val SWITCH_WAKE_LOCK = "io.nekohasekai.sagernet.SWITCH_WAKELOCK"
|
||||
const val RESET_UPSTREAM_CONNECTIONS = "moe.nb4a.RESET_UPSTREAM_CONNECTIONS"
|
||||
}
|
||||
|
||||
@ -44,11 +44,18 @@ class BaseService {
|
||||
var proxy: ProxyInstance? = null
|
||||
var notification: ServiceNotification? = null
|
||||
|
||||
val receiver = broadcastReceiver { _, intent ->
|
||||
val receiver = broadcastReceiver { ctx, intent ->
|
||||
when (intent.action) {
|
||||
Intent.ACTION_SHUTDOWN -> service.persistStats()
|
||||
Action.RELOAD -> service.reload()
|
||||
Action.SWITCH_WAKE_LOCK -> runOnDefaultDispatcher { service.switchWakeLock() }
|
||||
// Action.SWITCH_WAKE_LOCK -> runOnDefaultDispatcher { service.switchWakeLock() }
|
||||
Action.RESET_UPSTREAM_CONNECTIONS -> runOnDefaultDispatcher {
|
||||
Libcore.resetAllConnections(true)
|
||||
runOnMainDispatcher {
|
||||
Toast.makeText(ctx, "Reset upstream connections done", Toast.LENGTH_SHORT)
|
||||
.show()
|
||||
}
|
||||
}
|
||||
else -> service.stopRunner()
|
||||
}
|
||||
}
|
||||
@ -311,7 +318,8 @@ class BaseService {
|
||||
addAction(Action.RELOAD)
|
||||
addAction(Intent.ACTION_SHUTDOWN)
|
||||
addAction(Action.CLOSE)
|
||||
addAction(Action.SWITCH_WAKE_LOCK)
|
||||
// addAction(Action.SWITCH_WAKE_LOCK)
|
||||
addAction(Action.RESET_UPSTREAM_CONNECTIONS)
|
||||
}, "$packageName.SERVICE", null)
|
||||
data.closeReceiverRegistered = true
|
||||
}
|
||||
|
||||
@ -93,7 +93,7 @@ class ServiceNotification(
|
||||
}
|
||||
|
||||
fun postNotificationWakeLockStatus(acquired: Boolean) {
|
||||
updateActions(acquired)
|
||||
updateActions()
|
||||
builder.priority =
|
||||
if (acquired) NotificationCompat.PRIORITY_HIGH else NotificationCompat.PRIORITY_LOW
|
||||
update()
|
||||
@ -113,7 +113,7 @@ class ServiceNotification(
|
||||
|
||||
init {
|
||||
service as Context
|
||||
updateActions(false)
|
||||
updateActions()
|
||||
|
||||
Theme.apply(app)
|
||||
Theme.apply(service)
|
||||
@ -127,41 +127,43 @@ class ServiceNotification(
|
||||
show()
|
||||
}
|
||||
|
||||
private fun updateActions(wakeLockAcquired: Boolean) {
|
||||
private fun updateActions() {
|
||||
service as Context
|
||||
|
||||
builder.clearActions()
|
||||
|
||||
val closeAction = NotificationCompat.Action.Builder(
|
||||
0, service.getText(R.string.stop), PendingIntent.getBroadcast(
|
||||
service, 0, Intent(Action.CLOSE).setPackage(service.packageName), flags
|
||||
)
|
||||
).apply {
|
||||
setShowsUserInterface(false)
|
||||
}.build()
|
||||
).setShowsUserInterface(false).build()
|
||||
builder.addAction(closeAction)
|
||||
|
||||
val switchAction = NotificationCompat.Action.Builder(
|
||||
0, service.getString(R.string.action_switch), PendingIntent.getActivity(
|
||||
service, 0, Intent(service, SwitchActivity::class.java), flags
|
||||
)
|
||||
).apply {
|
||||
setShowsUserInterface(false)
|
||||
}.build()
|
||||
).setShowsUserInterface(false).build()
|
||||
builder.addAction(switchAction)
|
||||
|
||||
val wakeLockAction = NotificationCompat.Action.Builder(
|
||||
0,
|
||||
service.getText(if (!wakeLockAcquired) R.string.acquire_wake_lock else R.string.release_wake_lock),
|
||||
val resetUpstreamAction = NotificationCompat.Action.Builder(
|
||||
0, service.getString(R.string.reset_connections),
|
||||
PendingIntent.getBroadcast(
|
||||
service,
|
||||
0,
|
||||
Intent(Action.SWITCH_WAKE_LOCK).setPackage(service.packageName),
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) PendingIntent.FLAG_IMMUTABLE else 0
|
||||
service, 0, Intent(Action.RESET_UPSTREAM_CONNECTIONS), flags
|
||||
)
|
||||
).apply {
|
||||
setShowsUserInterface(false)
|
||||
}.build()
|
||||
builder.addAction(wakeLockAction)
|
||||
).setShowsUserInterface(false).build()
|
||||
builder.addAction(resetUpstreamAction)
|
||||
|
||||
// val wakeLockAction = NotificationCompat.Action.Builder(
|
||||
// 0,
|
||||
// service.getText(if (!wakeLockAcquired) R.string.acquire_wake_lock else R.string.release_wake_lock),
|
||||
// PendingIntent.getBroadcast(
|
||||
// service,
|
||||
// 0,
|
||||
// Intent(Action.SWITCH_WAKE_LOCK).setPackage(service.packageName),
|
||||
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) PendingIntent.FLAG_IMMUTABLE else 0
|
||||
// )
|
||||
// ).setShowsUserInterface(false).build()
|
||||
// builder.addAction(wakeLockAction)
|
||||
}
|
||||
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
|
||||
@ -24,7 +24,7 @@ abstract class SagerDatabase : RoomDatabase() {
|
||||
companion object {
|
||||
@OptIn(DelicateCoroutinesApi::class)
|
||||
@Suppress("EXPERIMENTAL_API_USAGE")
|
||||
private val instance by lazy {
|
||||
val instance by lazy {
|
||||
SagerNet.application.getDatabasePath(Key.DB_PROFILE).parentFile?.mkdirs()
|
||||
Room.databaseBuilder(SagerNet.application, SagerDatabase::class.java, Key.DB_PROFILE)
|
||||
.addMigrations(*SagerDatabase_Migrations.build())
|
||||
|
||||
@ -13,7 +13,7 @@ import kotlinx.coroutines.launch
|
||||
@GenerateRoomMigrations
|
||||
abstract class PublicDatabase : RoomDatabase() {
|
||||
companion object {
|
||||
private val instance by lazy {
|
||||
val instance by lazy {
|
||||
SagerNet.application.getDatabasePath(Key.DB_PROFILE).parentFile?.mkdirs()
|
||||
Room.databaseBuilder(SagerNet.application, PublicDatabase::class.java, Key.DB_PUBLIC)
|
||||
.allowMainThreadQueries()
|
||||
|
||||
@ -400,7 +400,7 @@ object RawUpdater : GroupUpdater() {
|
||||
// wireguard
|
||||
try {
|
||||
proxies.addAll(parseWireGuard(text).map {
|
||||
if (fileName.isNotBlank()) it.name = fileName
|
||||
if (fileName.isNotBlank()) it.name = fileName.removeSuffix(".conf")
|
||||
it
|
||||
})
|
||||
return proxies
|
||||
|
||||
@ -29,6 +29,8 @@ import io.nekohasekai.sagernet.R
|
||||
import io.nekohasekai.sagernet.SagerNet
|
||||
import io.nekohasekai.sagernet.bg.Executable
|
||||
import io.nekohasekai.sagernet.database.DataStore
|
||||
import io.nekohasekai.sagernet.database.SagerDatabase
|
||||
import io.nekohasekai.sagernet.database.preference.PublicDatabase
|
||||
import io.nekohasekai.sagernet.ui.MainActivity
|
||||
import io.nekohasekai.sagernet.ui.ThemedActivity
|
||||
import kotlinx.coroutines.*
|
||||
@ -242,6 +244,8 @@ fun Fragment.needRestart() {
|
||||
val ctx = requireContext()
|
||||
runOnDefaultDispatcher {
|
||||
delay(500)
|
||||
SagerDatabase.instance.close()
|
||||
PublicDatabase.instance.close()
|
||||
Executable.killAll(true)
|
||||
ProcessPhoenix.triggerRebirth(ctx, Intent(ctx, MainActivity::class.java))
|
||||
}
|
||||
|
||||
@ -16,7 +16,6 @@ abstract class TempDatabase : RoomDatabase() {
|
||||
private val instance by lazy {
|
||||
Room.inMemoryDatabaseBuilder(SagerNet.application, TempDatabase::class.java)
|
||||
.allowMainThreadQueries()
|
||||
.enableMultiInstanceInvalidation()
|
||||
.fallbackToDestructiveMigration()
|
||||
.setQueryExecutor { GlobalScope.launch { it.run() } }
|
||||
.build()
|
||||
|
||||
@ -468,4 +468,5 @@
|
||||
<string name="shadowtls_version">ShadowTLS 版本</string>
|
||||
<string name="share_subscription">分享订阅</string>
|
||||
<string name="show_group_in_notification">在通知中显示组名</string>
|
||||
<string name="reset_connections">重置连接</string>
|
||||
</resources>
|
||||
@ -509,5 +509,6 @@ Anyone can write advanced plugins, which can control NekoBox. please download an
|
||||
<string name="shadowtls_version">ShadowTLS Version</string>
|
||||
<string name="share_subscription">Share Subscription</string>
|
||||
<string name="show_group_in_notification">Show group name in in notification</string>
|
||||
<string name="reset_connections">Reset Connections</string>
|
||||
|
||||
</resources>
|
||||
@ -66,6 +66,7 @@ func VersionBox() string {
|
||||
func ResetAllConnections(system bool) {
|
||||
if system {
|
||||
conntrack.Close()
|
||||
log.Println("Reset system connections done")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user