move utils to common

This commit is contained in:
Kr328 committed 2020-04-13 11:12:28 +08:00
1 parent a7b28692ea
commit 761f11fa5f
34 files changed
+79 -58

No files matched your search

@@ -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
@@ -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
@@ -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
@@ -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.*
@@ -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
@@ -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.*
@@ -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()
}
}
@@ -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
@@ -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
@@ -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() {
@@ -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
@@ -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 {
@@ -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 {
@@ -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 {
@@ -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)
@@ -1,4 +1,4 @@
package com.github.kr328.clash.core
package com.github.kr328.clash.common
object Constants {
const val TAG = "ClashForAndroid"
@@ -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.*
@@ -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.*
@@ -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
@@ -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
@@ -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
@@ -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 {
@@ -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) =
@@ -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
@@ -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
@@ -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
+6 -1
View File
@@ -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">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
</intent-filter>
</receiver>
</application>
</manifest>
@@ -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
@@ -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
@@ -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"
}
@@ -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<Long, PendingIntent>()
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<AlarmManager>() ?: return
@@ -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
}
@@ -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
@@ -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