diff --git a/service/src/main/AndroidManifest.xml b/service/src/main/AndroidManifest.xml
index d4f2da9..5ca8d4a 100644
--- a/service/src/main/AndroidManifest.xml
+++ b/service/src/main/AndroidManifest.xml
@@ -7,16 +7,22 @@
+ android:process=":background" />
+
diff --git a/service/src/main/aidl/com/github/kr328/clash/service/IClashManager.aidl b/service/src/main/aidl/com/github/kr328/clash/service/IClashManager.aidl
index 4f9f9fe..29fab27 100644
--- a/service/src/main/aidl/com/github/kr328/clash/service/IClashManager.aidl
+++ b/service/src/main/aidl/com/github/kr328/clash/service/IClashManager.aidl
@@ -1,9 +1,13 @@
package com.github.kr328.clash.service;
+import com.github.kr328.clash.service.IClashProfileManager;
import com.github.kr328.clash.service.ipc.IPCParcelables;
import com.github.kr328.clash.core.model.Packet;
interface IClashManager {
+ // Profile
+ IClashProfileManager getProfileManager();
+
// Control
boolean setSelectProxy(String proxy, String selected);
ParcelableCompletedFuture startHealthCheck(String group);
diff --git a/service/src/main/java/com/github/kr328/clash/service/ClashManager.kt b/service/src/main/java/com/github/kr328/clash/service/ClashManager.kt
index 10d4b4b..d861a14 100644
--- a/service/src/main/java/com/github/kr328/clash/service/ClashManager.kt
+++ b/service/src/main/java/com/github/kr328/clash/service/ClashManager.kt
@@ -5,12 +5,17 @@ import androidx.core.content.edit
import com.github.kr328.clash.core.Clash
import com.github.kr328.clash.core.model.General
import com.github.kr328.clash.core.model.ProxyGroup
+import com.github.kr328.clash.service.data.ClashDatabase
import com.github.kr328.clash.service.ipc.ParcelableCompletedFuture
import com.github.kr328.clash.service.ipc.ParcelablePipe
-class ClashManager(context: Context) : IClashManager.Stub() {
+class ClashManager(private val context: Context) : IClashManager.Stub() {
private val settings = context.getSharedPreferences("service", Context.MODE_PRIVATE)
+ override fun getProfileManager(): IClashProfileManager {
+ return ClashProfileManager(context, ClashDatabase.getInstance(context))
+ }
+
override fun queryAllProxies(): Array {
return Clash.queryProxyGroups().toTypedArray()
}
diff --git a/service/src/main/java/com/github/kr328/clash/service/ClashManagerService.kt b/service/src/main/java/com/github/kr328/clash/service/ClashManagerService.kt
new file mode 100644
index 0000000..093928c
--- /dev/null
+++ b/service/src/main/java/com/github/kr328/clash/service/ClashManagerService.kt
@@ -0,0 +1,11 @@
+package com.github.kr328.clash.service
+
+import android.app.Service
+import android.content.Intent
+import android.os.IBinder
+
+class ClashManagerService : Service() {
+ override fun onBind(intent: Intent?): IBinder? {
+ return ClashManager(this)
+ }
+}
\ No newline at end of file
diff --git a/service/src/main/res/values/strings.xml b/service/src/main/res/values/strings.xml
index 165e200..deac4f0 100644
--- a/service/src/main/res/values/strings.xml
+++ b/service/src/main/res/values/strings.xml
@@ -12,4 +12,8 @@
"%1$s↑\t%2$s↓"
+
+ Clash Core Service
+ Tun Device Service
+ Clash Manager Service