Skip to content

Commit

Permalink
Add package receiver as well
Browse files Browse the repository at this point in the history
  • Loading branch information
yujincheng08 committed Dec 18, 2021
1 parent 9e808fa commit 87d3a1f
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 7 deletions.
10 changes: 10 additions & 0 deletions app/src/main/AndroidManifest.xml
Expand Up @@ -33,5 +33,15 @@
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>

<receiver
android:name=".PackageReceiver"
android:directBootAware="true"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_FULLY_REMOVED" />
</intent-filter>
</receiver>
</application>
</manifest>
5 changes: 4 additions & 1 deletion app/src/main/java/org/lsposed/wsa/helper/HomePage.kt
Expand Up @@ -13,8 +13,11 @@ import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.Delete
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.platform.LocalContext
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
Expand Down
11 changes: 11 additions & 0 deletions app/src/main/java/org/lsposed/wsa/helper/PackageReceiver.kt
@@ -0,0 +1,11 @@
package org.lsposed.wsa.helper

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent

class PackageReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
getWSAInstallReceiver(context)?.onReceive(context, intent)
}
}
23 changes: 17 additions & 6 deletions app/src/main/java/org/lsposed/wsa/helper/WSAUtils.kt
Expand Up @@ -15,40 +15,51 @@ fun getWSAInstallReceiver(context: Context) = runCatching {
cl.loadClass("com.microsoft.windows.redirection.AppsRedirectionHandler")
val ctor = handlerClass.getConstructor(Context::class.java)
ctor.newInstance(object : ContextWrapper(context) {
fun onRegister(receiver: BroadcastReceiver?, filter: IntentFilter): Intent? {
fun onRegister(receiver: BroadcastReceiver?, filter: IntentFilter) {
Log.d("LSPosed", "skip receiver")
if (filter.hasAction(Intent.ACTION_PACKAGE_ADDED) && receiver != null) {
installReceiver = receiver
Log.i("LSPosed", "got install receiver")
}
return null
}

override fun registerReceiver(
receiver: BroadcastReceiver?,
filter: IntentFilter
) = onRegister(receiver, filter)
) = run {
onRegister(receiver, filter)
super.registerReceiver(receiver, filter)
}

override fun registerReceiver(
receiver: BroadcastReceiver?,
filter: IntentFilter,
flags: Int
) = onRegister(receiver, filter)
) = run {
onRegister(receiver, filter)
super.registerReceiver(receiver, filter, flags)
}

override fun registerReceiver(
receiver: BroadcastReceiver?,
filter: IntentFilter,
broadcastPermission: String?,
scheduler: Handler?
) = onRegister(receiver, filter)
) = run {
onRegister(receiver, filter)
super.registerReceiver(receiver, filter, broadcastPermission, scheduler)
}

override fun registerReceiver(
receiver: BroadcastReceiver?,
filter: IntentFilter,
broadcastPermission: String?,
scheduler: Handler?,
flags: Int
) = onRegister(receiver, filter)
) = run {
onRegister(receiver, filter)
super.registerReceiver(receiver, filter, broadcastPermission, scheduler, flags)
}
})
installReceiver
}.getOrNull()

0 comments on commit 87d3a1f

Please sign in to comment.