Add android quick tile
This commit is contained in:
@@ -52,7 +52,25 @@
|
|||||||
<data android:scheme="hiddify"/>
|
<data android:scheme="hiddify"/>
|
||||||
<data android:host="install-sub"/>
|
<data android:host="install-sub"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES" />
|
||||||
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
<service
|
||||||
|
android:name=".bg.TileService"
|
||||||
|
android:directBootAware="true"
|
||||||
|
android:exported="true"
|
||||||
|
android:icon="@drawable/ic_stat_logo"
|
||||||
|
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"
|
||||||
|
tools:targetApi="n">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.service.quicksettings.action.QS_TILE" />
|
||||||
|
</intent-filter>
|
||||||
|
<meta-data
|
||||||
|
android:name="android.service.quicksettings.TOGGLEABLE_TILE"
|
||||||
|
android:value="true" />
|
||||||
|
</service>
|
||||||
<service
|
<service
|
||||||
android:name=".bg.VPNService"
|
android:name=".bg.VPNService"
|
||||||
android:exported="false"
|
android:exported="false"
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package com.hiddify.hiddify.bg
|
||||||
|
|
||||||
|
import android.service.quicksettings.Tile
|
||||||
|
import android.service.quicksettings.TileService
|
||||||
|
import androidx.annotation.RequiresApi
|
||||||
|
import com.hiddify.hiddify.constant.Status
|
||||||
|
|
||||||
|
@RequiresApi(24)
|
||||||
|
class TileService : TileService(), ServiceConnection.Callback {
|
||||||
|
|
||||||
|
private val connection = ServiceConnection(this, this)
|
||||||
|
|
||||||
|
override fun onServiceStatusChanged(status: Status) {
|
||||||
|
qsTile?.apply {
|
||||||
|
state = when (status) {
|
||||||
|
Status.Started -> Tile.STATE_ACTIVE
|
||||||
|
Status.Stopped -> Tile.STATE_INACTIVE
|
||||||
|
else -> Tile.STATE_UNAVAILABLE
|
||||||
|
}
|
||||||
|
updateTile()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onStartListening() {
|
||||||
|
super.onStartListening()
|
||||||
|
connection.connect()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onStopListening() {
|
||||||
|
connection.disconnect()
|
||||||
|
super.onStopListening()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onClick() {
|
||||||
|
when (connection.status) {
|
||||||
|
Status.Stopped -> {
|
||||||
|
BoxService.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
Status.Started -> {
|
||||||
|
BoxService.stop()
|
||||||
|
}
|
||||||
|
|
||||||
|
else -> {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user