项目中需要用到监听后台静默安装的App是否已经安装完成,静默安装参考:Android 后台静默安装App,在Android8.0之前在AndroidManifest中注册就能直接监听到广播,但是8.0之后需要在代码中动态注册才行。
private lateinit var mPackageReceiver:PackageReceiver
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
...
//应用安装卸载监听
mPackageReceiver = PackageReceiver()
val intentFilterInstall = IntentFilter()
intentFilterInstall.addAction(Intent.ACTION_PACKAGE_ADDED)
intentFilterInstall.addAction(Intent.ACTION_PACKAGE_REMOVED)
intentFilterInstall.addAction(Intent.ACTION_PACKAGE_REPLACED)
intentFilterInstall.addDataScheme("package")
registerReceiver(mPackageReceiver,intentFilterInstall)
}
记得在onDestroy中取消注册。
override fun onDestroy() {
super.onDestroy()
unregisterReceiver(mPackageReceiver)
}
import android.content.Intent
import android.content.BroadcastReceiver
import android.content.Context
/**
* 监听应用安装
*/
class PackageReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent) {
val packageName = intent.dataString //安装、卸载、重装的包的包名
when(intent.action){
// 安装
"android.intent.action.PACKAGE_ADDED" ->{}
// 重装
"android.intent.action.PACKAGE_REPLACED" ->{}
// 卸载
"android.intent.action.PACKAGE_REMOVED" ->{}
}
}
}