利用封裝好的BaseActivity方法開啓JobIntentService
val url = "https://raw.githubusercontent.com/xuexiangjys/XUpdate/master/apk/xupdate_demo_1.0.2.apk"
updateApk(url,APK_DOWNLOAD_SUCCESSFUL)
//註冊apk下載成功廣播
registerReceiver(receiver, APK_DOWNLOAD_SUCCESSFUL)
JobIntentService類
import android.content.Context
import android.content.Intent
import androidx.core.app.JobIntentService
import androidx.localbroadcastmanager.content.LocalBroadcastManager
/**
* apk下載服務
*/
class HttpUpdateService : JobIntentService() {
private val jobId = 10001
/**
* 開啓服務
*/
fun enqueueWork(context: Context, work: Intent) {
enqueueWork(context, HttpUpdateService::class.java, jobId, work)
}
override fun onHandleWork(intent: Intent) {
intent.getStringExtra("url")?.let { url ->
intent.getStringExtra("apkName")?.let { apkName ->
intent.getStringExtra("actions")?.let { actions ->
if (HttpHelper.downloadFile(url, HttpHelper.createFilePath(apkName))) {
//發送apk下載成功廣播
LocalBroadcastManager.getInstance(this).sendBroadcast(Intent(actions))
}
}
}
}
}
}
接收到下載成功的廣播便可以進行下一步操作
private val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
intent?.let {
if (it.action == APK_DOWNLOAD_SUCCESSFUL){
//apk下載成功
showInstallationDialog(PERMISSION_REQUEST_CODE)
}
}
}
}
showInstallationDialog()方法是安裝apk的操作,具體代碼可見BaseActivity