diff --git a/app/src/main/java/com/github/kr328/clash/BaseActivity.kt b/app/src/main/java/com/github/kr328/clash/BaseActivity.kt index 7cf6e7a..fe3a0f0 100644 --- a/app/src/main/java/com/github/kr328/clash/BaseActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/BaseActivity.kt @@ -15,7 +15,7 @@ import androidx.appcompat.widget.Toolbar import androidx.coordinatorlayout.widget.CoordinatorLayout import com.github.kr328.clash.preference.UiSettings import com.github.kr328.clash.remote.Broadcasts -import com.github.kr328.clash.service.util.createLanguageConfigurationContext +import com.github.kr328.clash.common.util.createLanguageConfigurationContext import com.google.android.material.snackbar.Snackbar import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.MainScope diff --git a/app/src/main/java/com/github/kr328/clash/CreateProfileActivity.kt b/app/src/main/java/com/github/kr328/clash/CreateProfileActivity.kt index 66e9466..c4546bf 100644 --- a/app/src/main/java/com/github/kr328/clash/CreateProfileActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/CreateProfileActivity.kt @@ -13,7 +13,7 @@ import android.view.View import android.view.ViewGroup import android.widget.BaseAdapter import android.widget.TextView -import com.github.kr328.clash.service.util.intent +import com.github.kr328.clash.common.util.intent import kotlinx.android.synthetic.main.activity_create_profile.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch diff --git a/app/src/main/java/com/github/kr328/clash/LogViewerActivity.kt b/app/src/main/java/com/github/kr328/clash/LogViewerActivity.kt index 4c0bf01..eb4c6e4 100644 --- a/app/src/main/java/com/github/kr328/clash/LogViewerActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/LogViewerActivity.kt @@ -11,7 +11,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.github.kr328.clash.adapter.LiveLogAdapter import com.github.kr328.clash.adapter.LogAdapter import com.github.kr328.clash.core.event.LogEvent -import com.github.kr328.clash.service.util.intent +import com.github.kr328.clash.common.util.intent import kotlinx.android.synthetic.main.activity_log_viewer.* import kotlinx.coroutines.* import kotlinx.coroutines.sync.Mutex diff --git a/app/src/main/java/com/github/kr328/clash/LogcatService.kt b/app/src/main/java/com/github/kr328/clash/LogcatService.kt index 4b84548..f69457e 100644 --- a/app/src/main/java/com/github/kr328/clash/LogcatService.kt +++ b/app/src/main/java/com/github/kr328/clash/LogcatService.kt @@ -16,15 +16,15 @@ import androidx.collection.CircularArray import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import com.github.kr328.clash.core.event.LogEvent -import com.github.kr328.clash.core.utils.Log +import com.github.kr328.clash.common.utils.Log import com.github.kr328.clash.model.LogFile import com.github.kr328.clash.preference.UiSettings import com.github.kr328.clash.service.ClashManagerService import com.github.kr328.clash.service.IClashManager import com.github.kr328.clash.service.ipc.IStreamCallback import com.github.kr328.clash.service.ipc.ParcelableContainer -import com.github.kr328.clash.service.util.createLanguageConfigurationContext -import com.github.kr328.clash.service.util.intent +import com.github.kr328.clash.common.util.createLanguageConfigurationContext +import com.github.kr328.clash.common.util.intent import com.github.kr328.clash.utils.format import com.github.kr328.clash.utils.logsDir import kotlinx.coroutines.* diff --git a/app/src/main/java/com/github/kr328/clash/LogsActivity.kt b/app/src/main/java/com/github/kr328/clash/LogsActivity.kt index 7707142..038a2b3 100644 --- a/app/src/main/java/com/github/kr328/clash/LogsActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/LogsActivity.kt @@ -14,8 +14,8 @@ import com.github.kr328.clash.adapter.LogFileAdapter import com.github.kr328.clash.design.common.Category import com.github.kr328.clash.design.view.CommonUiLayout import com.github.kr328.clash.model.LogFile -import com.github.kr328.clash.service.util.intent -import com.github.kr328.clash.service.util.startForegroundServiceCompat +import com.github.kr328.clash.common.util.intent +import com.github.kr328.clash.common.util.startForegroundServiceCompat import com.github.kr328.clash.utils.format import com.github.kr328.clash.utils.logsDir import com.google.android.material.bottomsheet.BottomSheetDialog diff --git a/app/src/main/java/com/github/kr328/clash/MainActivity.kt b/app/src/main/java/com/github/kr328/clash/MainActivity.kt index 4502a62..8cc1276 100644 --- a/app/src/main/java/com/github/kr328/clash/MainActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/MainActivity.kt @@ -9,10 +9,10 @@ import android.view.ViewGroup import android.widget.TextView import androidx.appcompat.app.AlertDialog import com.github.kr328.clash.core.model.General -import com.github.kr328.clash.core.utils.asBytesString +import com.github.kr328.clash.common.utils.asBytesString import com.github.kr328.clash.remote.withClash import com.github.kr328.clash.remote.withProfile -import com.github.kr328.clash.service.util.intent +import com.github.kr328.clash.common.util.intent import com.github.kr328.clash.utils.startClashService import com.github.kr328.clash.utils.stopClashService import kotlinx.android.synthetic.main.activity_main.* diff --git a/app/src/main/java/com/github/kr328/clash/OnBootReceiver.kt b/app/src/main/java/com/github/kr328/clash/OnBootReceiver.kt index f10a529..e3d2626 100644 --- a/app/src/main/java/com/github/kr328/clash/OnBootReceiver.kt +++ b/app/src/main/java/com/github/kr328/clash/OnBootReceiver.kt @@ -5,8 +5,9 @@ import android.content.Context import android.content.Intent import com.github.kr328.clash.common.ids.Intents import com.github.kr328.clash.service.ProfileBackgroundService -import com.github.kr328.clash.service.util.componentName -import com.github.kr328.clash.service.util.startForegroundServiceCompat +import com.github.kr328.clash.common.util.componentName +import com.github.kr328.clash.common.util.startForegroundServiceCompat +import com.github.kr328.clash.service.Constants import com.github.kr328.clash.utils.startClashService class OnBootReceiver : BroadcastReceiver() { @@ -14,10 +15,7 @@ class OnBootReceiver : BroadcastReceiver() { if (intent?.action != Intent.ACTION_BOOT_COMPLETED || context == null) return - context.startClashService() - context.startForegroundServiceCompat( - Intent(Intents.INTENT_ACTION_PROFILE_SETUP) - .setComponent(ProfileBackgroundService::class.componentName) - ) + if (context.cacheDir.resolve(Constants.CLASH_SERVICE_RUNNING_FILE).exists()) + context.startClashService() } } \ No newline at end of file diff --git a/app/src/main/java/com/github/kr328/clash/ProfileEditActivity.kt b/app/src/main/java/com/github/kr328/clash/ProfileEditActivity.kt index 631372b..c3d3d9a 100644 --- a/app/src/main/java/com/github/kr328/clash/ProfileEditActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/ProfileEditActivity.kt @@ -8,7 +8,7 @@ import android.text.Html import android.view.View import android.webkit.MimeTypeMap import androidx.appcompat.app.AlertDialog -import com.github.kr328.clash.core.utils.Log +import com.github.kr328.clash.common.utils.Log import com.github.kr328.clash.design.common.TextInput import com.github.kr328.clash.remote.withProfile import com.github.kr328.clash.service.data.ProfileEntity diff --git a/app/src/main/java/com/github/kr328/clash/ProfilesActivity.kt b/app/src/main/java/com/github/kr328/clash/ProfilesActivity.kt index 35f1bd8..d9b96c0 100644 --- a/app/src/main/java/com/github/kr328/clash/ProfilesActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/ProfilesActivity.kt @@ -10,9 +10,9 @@ import com.github.kr328.clash.common.ids.Intents import com.github.kr328.clash.service.ProfileBackgroundService import com.github.kr328.clash.service.data.ProfileEntity import com.github.kr328.clash.service.transact.ProfileRequest -import com.github.kr328.clash.service.util.componentName -import com.github.kr328.clash.service.util.intent -import com.github.kr328.clash.service.util.startForegroundServiceCompat +import com.github.kr328.clash.common.util.componentName +import com.github.kr328.clash.common.util.intent +import com.github.kr328.clash.common.util.startForegroundServiceCompat import com.github.kr328.clash.weight.ProfilesMenu import kotlinx.android.synthetic.main.activity_profiles.* import kotlinx.coroutines.Job diff --git a/app/src/main/java/com/github/kr328/clash/SettingsActivity.kt b/app/src/main/java/com/github/kr328/clash/SettingsActivity.kt index fc86e64..3c284d9 100644 --- a/app/src/main/java/com/github/kr328/clash/SettingsActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/SettingsActivity.kt @@ -1,7 +1,7 @@ package com.github.kr328.clash import android.os.Bundle -import com.github.kr328.clash.service.util.intent +import com.github.kr328.clash.common.util.intent import kotlinx.android.synthetic.main.activity_settings.* class SettingsActivity : BaseActivity() { diff --git a/app/src/main/java/com/github/kr328/clash/remote/Remote.kt b/app/src/main/java/com/github/kr328/clash/remote/Remote.kt index 843d616..d8c5493 100644 --- a/app/src/main/java/com/github/kr328/clash/remote/Remote.kt +++ b/app/src/main/java/com/github/kr328/clash/remote/Remote.kt @@ -18,7 +18,7 @@ import com.github.kr328.clash.service.ClashManagerService import com.github.kr328.clash.service.IClashManager import com.github.kr328.clash.service.IProfileService import com.github.kr328.clash.service.ProfileService -import com.github.kr328.clash.service.util.intent +import com.github.kr328.clash.common.util.intent import com.microsoft.appcenter.crashes.Crashes import kotlinx.coroutines.* import kotlinx.coroutines.channels.Channel diff --git a/app/src/main/java/com/github/kr328/clash/remote/RemoteUtils.kt b/app/src/main/java/com/github/kr328/clash/remote/RemoteUtils.kt index 118db9d..2b5a565 100644 --- a/app/src/main/java/com/github/kr328/clash/remote/RemoteUtils.kt +++ b/app/src/main/java/com/github/kr328/clash/remote/RemoteUtils.kt @@ -6,7 +6,7 @@ import android.net.Uri import com.github.kr328.clash.ApkBrokenActivity import com.github.kr328.clash.service.Constants import com.github.kr328.clash.service.ServiceStatusProvider -import com.github.kr328.clash.service.util.intent +import com.github.kr328.clash.common.util.intent object RemoteUtils { fun detectClashRunning(context: Context): Boolean { diff --git a/app/src/main/java/com/github/kr328/clash/settings/BehaviorFragment.kt b/app/src/main/java/com/github/kr328/clash/settings/BehaviorFragment.kt index 537d942..8051376 100644 --- a/app/src/main/java/com/github/kr328/clash/settings/BehaviorFragment.kt +++ b/app/src/main/java/com/github/kr328/clash/settings/BehaviorFragment.kt @@ -6,7 +6,7 @@ import com.github.kr328.clash.OnBootReceiver import com.github.kr328.clash.R import com.github.kr328.clash.remote.Broadcasts import com.github.kr328.clash.service.settings.ServiceSettings -import com.github.kr328.clash.service.util.componentName +import com.github.kr328.clash.common.util.componentName class BehaviorFragment : BaseSettingFragment() { companion object { diff --git a/app/src/main/java/com/github/kr328/clash/settings/NetworkFragment.kt b/app/src/main/java/com/github/kr328/clash/settings/NetworkFragment.kt index 0d40f57..8fbf7f2 100644 --- a/app/src/main/java/com/github/kr328/clash/settings/NetworkFragment.kt +++ b/app/src/main/java/com/github/kr328/clash/settings/NetworkFragment.kt @@ -6,7 +6,7 @@ import com.github.kr328.clash.R import com.github.kr328.clash.preference.UiSettings import com.github.kr328.clash.remote.Broadcasts import com.github.kr328.clash.service.settings.ServiceSettings -import com.github.kr328.clash.service.util.intent +import com.github.kr328.clash.common.util.intent class NetworkFragment : BaseSettingFragment() { companion object { diff --git a/app/src/main/java/com/github/kr328/clash/utils/ServiceUtils.kt b/app/src/main/java/com/github/kr328/clash/utils/ServiceUtils.kt index edada0c..07b8d90 100644 --- a/app/src/main/java/com/github/kr328/clash/utils/ServiceUtils.kt +++ b/app/src/main/java/com/github/kr328/clash/utils/ServiceUtils.kt @@ -7,9 +7,9 @@ import com.github.kr328.clash.preference.UiSettings import com.github.kr328.clash.service.ClashService import com.github.kr328.clash.common.ids.Intents import com.github.kr328.clash.service.TunService -import com.github.kr328.clash.service.util.intent +import com.github.kr328.clash.common.util.intent import com.github.kr328.clash.service.util.sendBroadcastSelf -import com.github.kr328.clash.service.util.startForegroundServiceCompat +import com.github.kr328.clash.common.util.startForegroundServiceCompat fun Context.startClashService(): Intent? { val startTun = UiSettings(this).get(UiSettings.ENABLE_VPN) diff --git a/core/src/main/java/com/github/kr328/clash/core/Constants.kt b/common/src/main/java/com/github/kr328/clash/common/Constants.kt similarity index 60% rename from core/src/main/java/com/github/kr328/clash/core/Constants.kt rename to common/src/main/java/com/github/kr328/clash/common/Constants.kt index e12fd69..da8b05c 100644 --- a/core/src/main/java/com/github/kr328/clash/core/Constants.kt +++ b/common/src/main/java/com/github/kr328/clash/common/Constants.kt @@ -1,4 +1,4 @@ -package com.github.kr328.clash.core +package com.github.kr328.clash.common object Constants { const val TAG = "ClashForAndroid" diff --git a/core/src/main/java/com/github/kr328/clash/core/serialization/MergedParcels.kt b/common/src/main/java/com/github/kr328/clash/common/serialization/MergedParcels.kt similarity index 99% rename from core/src/main/java/com/github/kr328/clash/core/serialization/MergedParcels.kt rename to common/src/main/java/com/github/kr328/clash/common/serialization/MergedParcels.kt index b50989b..5250ac5 100644 --- a/core/src/main/java/com/github/kr328/clash/core/serialization/MergedParcels.kt +++ b/common/src/main/java/com/github/kr328/clash/common/serialization/MergedParcels.kt @@ -1,4 +1,4 @@ -package com.github.kr328.clash.core.serialization +package com.github.kr328.clash.common.serialization import android.os.Parcel import kotlinx.serialization.* diff --git a/core/src/main/java/com/github/kr328/clash/core/serialization/Parcels.kt b/common/src/main/java/com/github/kr328/clash/common/serialization/Parcels.kt similarity index 99% rename from core/src/main/java/com/github/kr328/clash/core/serialization/Parcels.kt rename to common/src/main/java/com/github/kr328/clash/common/serialization/Parcels.kt index d235f56..bfa2a29 100644 --- a/core/src/main/java/com/github/kr328/clash/core/serialization/Parcels.kt +++ b/common/src/main/java/com/github/kr328/clash/common/serialization/Parcels.kt @@ -1,4 +1,4 @@ -package com.github.kr328.clash.core.serialization +package com.github.kr328.clash.common.serialization import android.os.Parcel import kotlinx.serialization.* diff --git a/service/src/main/java/com/github/kr328/clash/service/util/ComponentUtils.kt b/common/src/main/java/com/github/kr328/clash/common/util/ComponentUtils.kt similarity index 88% rename from service/src/main/java/com/github/kr328/clash/service/util/ComponentUtils.kt rename to common/src/main/java/com/github/kr328/clash/common/util/ComponentUtils.kt index 0b8cf2b..4d9c396 100644 --- a/service/src/main/java/com/github/kr328/clash/service/util/ComponentUtils.kt +++ b/common/src/main/java/com/github/kr328/clash/common/util/ComponentUtils.kt @@ -1,4 +1,4 @@ -package com.github.kr328.clash.service.util +package com.github.kr328.clash.common.util import android.content.ComponentName import android.content.Intent diff --git a/service/src/main/java/com/github/kr328/clash/service/util/LanguageUtils.kt b/common/src/main/java/com/github/kr328/clash/common/util/LanguageUtils.kt similarity index 91% rename from service/src/main/java/com/github/kr328/clash/service/util/LanguageUtils.kt rename to common/src/main/java/com/github/kr328/clash/common/util/LanguageUtils.kt index 1441547..f362c9e 100644 --- a/service/src/main/java/com/github/kr328/clash/service/util/LanguageUtils.kt +++ b/common/src/main/java/com/github/kr328/clash/common/util/LanguageUtils.kt @@ -1,4 +1,4 @@ -package com.github.kr328.clash.service.util +package com.github.kr328.clash.common.util import android.content.Context import android.content.res.Configuration diff --git a/service/src/main/java/com/github/kr328/clash/service/util/ServiceUtils.kt b/common/src/main/java/com/github/kr328/clash/common/util/ServiceUtils.kt similarity index 86% rename from service/src/main/java/com/github/kr328/clash/service/util/ServiceUtils.kt rename to common/src/main/java/com/github/kr328/clash/common/util/ServiceUtils.kt index fc2157c..9236edb 100644 --- a/service/src/main/java/com/github/kr328/clash/service/util/ServiceUtils.kt +++ b/common/src/main/java/com/github/kr328/clash/common/util/ServiceUtils.kt @@ -1,4 +1,4 @@ -package com.github.kr328.clash.service.util +package com.github.kr328.clash.common.util import android.content.Context import android.content.Intent diff --git a/core/src/main/java/com/github/kr328/clash/core/utils/ByteFormatter.kt b/common/src/main/java/com/github/kr328/clash/common/utils/ByteFormatter.kt similarity index 94% rename from core/src/main/java/com/github/kr328/clash/core/utils/ByteFormatter.kt rename to common/src/main/java/com/github/kr328/clash/common/utils/ByteFormatter.kt index 4e332e1..2842b18 100644 --- a/core/src/main/java/com/github/kr328/clash/core/utils/ByteFormatter.kt +++ b/common/src/main/java/com/github/kr328/clash/common/utils/ByteFormatter.kt @@ -1,4 +1,4 @@ -package com.github.kr328.clash.core.utils +package com.github.kr328.clash.common.utils object ByteFormatter { fun byteToString(bytes: Long): String { diff --git a/core/src/main/java/com/github/kr328/clash/core/utils/Log.kt b/common/src/main/java/com/github/kr328/clash/common/utils/Log.kt similarity index 85% rename from core/src/main/java/com/github/kr328/clash/core/utils/Log.kt rename to common/src/main/java/com/github/kr328/clash/common/utils/Log.kt index 654235e..73b53e4 100644 --- a/core/src/main/java/com/github/kr328/clash/core/utils/Log.kt +++ b/common/src/main/java/com/github/kr328/clash/common/utils/Log.kt @@ -1,6 +1,6 @@ -package com.github.kr328.clash.core.utils +package com.github.kr328.clash.common.utils -import com.github.kr328.clash.core.Constants.TAG +import com.github.kr328.clash.common.Constants.TAG object Log { fun i(message: String, throwable: Throwable? = null) = diff --git a/core/src/main/java/com/github/kr328/clash/core/event/LogEvent.kt b/core/src/main/java/com/github/kr328/clash/core/event/LogEvent.kt index b3dc2b2..d452a6c 100644 --- a/core/src/main/java/com/github/kr328/clash/core/event/LogEvent.kt +++ b/core/src/main/java/com/github/kr328/clash/core/event/LogEvent.kt @@ -2,7 +2,7 @@ package com.github.kr328.clash.core.event import android.os.Parcel import android.os.Parcelable -import com.github.kr328.clash.core.serialization.Parcels +import com.github.kr328.clash.common.serialization.Parcels import kotlinx.serialization.Serializable @Serializable diff --git a/core/src/main/java/com/github/kr328/clash/core/model/General.kt b/core/src/main/java/com/github/kr328/clash/core/model/General.kt index 947247c..d638a0a 100644 --- a/core/src/main/java/com/github/kr328/clash/core/model/General.kt +++ b/core/src/main/java/com/github/kr328/clash/core/model/General.kt @@ -2,7 +2,7 @@ package com.github.kr328.clash.core.model import android.os.Parcel import android.os.Parcelable -import com.github.kr328.clash.core.serialization.Parcels +import com.github.kr328.clash.common.serialization.Parcels import kotlinx.serialization.* @Serializable diff --git a/core/src/main/java/com/github/kr328/clash/core/model/ProxyGroupList.kt b/core/src/main/java/com/github/kr328/clash/core/model/ProxyGroupList.kt index 194af0d..7d68a94 100644 --- a/core/src/main/java/com/github/kr328/clash/core/model/ProxyGroupList.kt +++ b/core/src/main/java/com/github/kr328/clash/core/model/ProxyGroupList.kt @@ -2,7 +2,7 @@ package com.github.kr328.clash.core.model import android.os.Parcel import android.os.Parcelable -import com.github.kr328.clash.core.serialization.MergedParcels +import com.github.kr328.clash.common.serialization.MergedParcels import kotlinx.serialization.Serializable @Serializable diff --git a/service/src/main/AndroidManifest.xml b/service/src/main/AndroidManifest.xml index a6cc7a4..a6d0c2c 100644 --- a/service/src/main/AndroidManifest.xml +++ b/service/src/main/AndroidManifest.xml @@ -67,6 +67,11 @@ android:name=".ProfileReceiver" android:exported="false" android:process=":background" - android:permission="${applicationId}.permission.RECEIVE_BROADCASTS" /> + android:permission="${applicationId}.permission.RECEIVE_BROADCASTS"> + + + + + diff --git a/service/src/main/java/com/github/kr328/clash/service/BaseService.kt b/service/src/main/java/com/github/kr328/clash/service/BaseService.kt index 5e450d1..671bafb 100644 --- a/service/src/main/java/com/github/kr328/clash/service/BaseService.kt +++ b/service/src/main/java/com/github/kr328/clash/service/BaseService.kt @@ -4,7 +4,7 @@ import android.app.Service import android.content.Context import com.github.kr328.clash.core.Clash import com.github.kr328.clash.service.settings.ServiceSettings -import com.github.kr328.clash.service.util.createLanguageConfigurationContext +import com.github.kr328.clash.common.util.createLanguageConfigurationContext import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.MainScope import kotlinx.coroutines.cancel diff --git a/service/src/main/java/com/github/kr328/clash/service/ClashNotification.kt b/service/src/main/java/com/github/kr328/clash/service/ClashNotification.kt index 6fc1e0c..3e09b4d 100644 --- a/service/src/main/java/com/github/kr328/clash/service/ClashNotification.kt +++ b/service/src/main/java/com/github/kr328/clash/service/ClashNotification.kt @@ -6,8 +6,8 @@ import android.os.Build import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import com.github.kr328.clash.core.Clash -import com.github.kr328.clash.core.utils.asBytesString -import com.github.kr328.clash.core.utils.asSpeedString +import com.github.kr328.clash.common.utils.asBytesString +import com.github.kr328.clash.common.utils.asSpeedString import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext diff --git a/service/src/main/java/com/github/kr328/clash/service/Constants.kt b/service/src/main/java/com/github/kr328/clash/service/Constants.kt index c99d94b..6c8b144 100644 --- a/service/src/main/java/com/github/kr328/clash/service/Constants.kt +++ b/service/src/main/java/com/github/kr328/clash/service/Constants.kt @@ -8,4 +8,6 @@ object Constants { const val PROFILE_PROVIDER_SUFFIX = ".profiles" const val STATUS_PROVIDER_SUFFIX = ".status" const val SETTING_PROVIDER_SUFFIX = ".settings" + + const val CLASH_SERVICE_RUNNING_FILE = "clash_running" } \ No newline at end of file diff --git a/service/src/main/java/com/github/kr328/clash/service/ProfileReceiver.kt b/service/src/main/java/com/github/kr328/clash/service/ProfileReceiver.kt index c52bc52..3c8e67c 100644 --- a/service/src/main/java/com/github/kr328/clash/service/ProfileReceiver.kt +++ b/service/src/main/java/com/github/kr328/clash/service/ProfileReceiver.kt @@ -10,9 +10,9 @@ import com.github.kr328.clash.common.ids.Intents import com.github.kr328.clash.common.ids.PendingIds import com.github.kr328.clash.service.data.ProfileDao import com.github.kr328.clash.service.model.toProfileMetadata -import com.github.kr328.clash.service.util.componentName -import com.github.kr328.clash.service.util.intent -import com.github.kr328.clash.service.util.startForegroundServiceCompat +import com.github.kr328.clash.common.util.componentName +import com.github.kr328.clash.common.util.intent +import com.github.kr328.clash.common.util.startForegroundServiceCompat class ProfileReceiver : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { @@ -25,14 +25,7 @@ class ProfileReceiver : BroadcastReceiver() { context.startForegroundServiceCompat(intent) } Intent.ACTION_BOOT_COMPLETED, Intent.ACTION_MY_PACKAGE_REPLACED -> { - if (initialized) - return - initialized = true - - context.startForegroundServiceCompat( - ProfileBackgroundService::class.intent - .setAction(Intents.INTENT_ACTION_PROFILE_SETUP) - ) + tryInitialize(context) } } } @@ -41,6 +34,18 @@ class ProfileReceiver : BroadcastReceiver() { private val requested = mutableMapOf() private var initialized = false + @Synchronized + fun tryInitialize(context: Context) { + if ( initialized ) + return + initialized = true + + context.startForegroundServiceCompat( + ProfileBackgroundService::class.intent + .setAction(Intents.INTENT_ACTION_PROFILE_SETUP) + ) + } + suspend fun requestNextUpdate(context: Context, id: Long) { val metadata = ProfileDao.queryById(id)?.toProfileMetadata(context) ?: return val service = context.getSystemService() ?: return diff --git a/service/src/main/java/com/github/kr328/clash/service/ServiceStatusProvider.kt b/service/src/main/java/com/github/kr328/clash/service/ServiceStatusProvider.kt index c55015b..8f02479 100644 --- a/service/src/main/java/com/github/kr328/clash/service/ServiceStatusProvider.kt +++ b/service/src/main/java/com/github/kr328/clash/service/ServiceStatusProvider.kt @@ -5,12 +5,23 @@ import android.content.ContentValues import android.database.Cursor import android.net.Uri import android.os.Bundle +import com.github.kr328.clash.common.Global class ServiceStatusProvider : ContentProvider() { companion object { const val METHOD_PING_CLASH_SERVICE = "pingClashService" var serviceRunning: Boolean = false + set(value) { + field = value + + Global.application.cacheDir.resolve(Constants.CLASH_SERVICE_RUNNING_FILE).apply { + if (value) + createNewFile() + else + delete() + } + } var currentProfile: String? = null } diff --git a/service/src/main/java/com/github/kr328/clash/service/clash/module/DynamicNotificationModule.kt b/service/src/main/java/com/github/kr328/clash/service/clash/module/DynamicNotificationModule.kt index e6be95f..d38060d 100644 --- a/service/src/main/java/com/github/kr328/clash/service/clash/module/DynamicNotificationModule.kt +++ b/service/src/main/java/com/github/kr328/clash/service/clash/module/DynamicNotificationModule.kt @@ -9,8 +9,8 @@ import com.github.kr328.clash.common.ids.Intents import com.github.kr328.clash.common.ids.NotificationChannels import com.github.kr328.clash.common.ids.NotificationIds import com.github.kr328.clash.core.Clash -import com.github.kr328.clash.core.utils.asBytesString -import com.github.kr328.clash.core.utils.asSpeedString +import com.github.kr328.clash.common.utils.asBytesString +import com.github.kr328.clash.common.utils.asSpeedString import com.github.kr328.clash.service.R import com.github.kr328.clash.service.ServiceStatusProvider import kotlinx.coroutines.Dispatchers diff --git a/service/src/main/java/com/github/kr328/clash/service/data/DatabaseMigrations.kt b/service/src/main/java/com/github/kr328/clash/service/data/DatabaseMigrations.kt index a758230..9bcaaf7 100644 --- a/service/src/main/java/com/github/kr328/clash/service/data/DatabaseMigrations.kt +++ b/service/src/main/java/com/github/kr328/clash/service/data/DatabaseMigrations.kt @@ -8,7 +8,7 @@ import androidx.core.database.getStringOrNull import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase import com.github.kr328.clash.common.Global -import com.github.kr328.clash.core.utils.Log +import com.github.kr328.clash.common.utils.Log import com.github.kr328.clash.service.Constants import com.github.kr328.clash.service.settings.ServiceSettings import com.github.kr328.clash.service.util.resolveBaseDir