Loading lib/aidl/foundation/e/splitinstall/ISplitInstallService.aidl +3 −1 Original line number Diff line number Diff line package foundation.e.splitinstall; import foundation.e.splitinstall.ISplitInstallServiceCallback; /** * Interface towards the SplitInstallService. */ Loading @@ -12,5 +14,5 @@ interface ISplitInstallService { * for. * @param modulePath: the path of the split module apk we want to install. */ oneway void installSplitModule(in String packageName, in String modulePath); oneway void installSplitModule(in String packageName, in String modulePath, in ISplitInstallServiceCallback callback); } lib/aidl/foundation/e/splitinstall/ISplitInstallServiceCallback.aidl 0 → 100644 +5 −0 Original line number Diff line number Diff line package foundation.e.splitinstall; interface ISplitInstallServiceCallback { void onFinished(int session); } service/java/foundation/e/splitinstall/service/SplitInstallBinder.kt +26 −4 Original line number Diff line number Diff line Loading @@ -22,17 +22,22 @@ import android.content.Intent import android.content.pm.PackageInstaller import android.util.Log import foundation.e.splitinstall.ISplitInstallService import foundation.e.splitinstall.ISplitInstallServiceCallback import java.io.File class SplitInstallBinder( val applicationContext: Context ) : ISplitInstallService.Stub() { private var callbacks: ISplitInstallServiceCallback? = null companion object { const val TAG = SplitInstallService.TAG } override fun installSplitModule(packageName: String, modulePath: String) { override fun installSplitModule(packageName: String, modulePath: String, callbacks: ISplitInstallServiceCallback) { this.callbacks = callbacks Log.i(TAG, "installing $modulePath") val packageManager = applicationContext.packageManager Loading @@ -45,6 +50,7 @@ class SplitInstallBinder( val sessionId = packageInstaller.createSession(params) val session = packageInstaller.openSession(sessionId) packageInstaller.registerSessionCallback(pmCallbacks) try { syncFile(session, File(modulePath)) Loading @@ -53,9 +59,10 @@ class SplitInstallBinder( callbackIntent.action = SplitInstallBroadcastReceiver.MODULE_INSTALLED_INTENT_ACTION val flags = PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE val servicePendingIntent = val pendingIntent = PendingIntent.getBroadcast(applicationContext, sessionId, callbackIntent, flags) session.commit(servicePendingIntent.intentSender) session.commit(pendingIntent.intentSender) } catch (e: Exception) { session.abandon() throw e Loading @@ -72,4 +79,19 @@ class SplitInstallBinder( inputStream.close() outputStream.close() } private val pmCallbacks = object : PackageInstaller.SessionCallback() { override fun onActiveChanged(sessionId: Int, active: Boolean) { } override fun onBadgingChanged(sessionId: Int) { } override fun onCreated(sessionId: Int) { } override fun onFinished(sessionId: Int, success: Boolean) { Log.i(TAG, "onFinished"); callbacks?.onFinished(sessionId) } override fun onProgressChanged(sessionId: Int, progress: Float) { } } } service/java/foundation/e/splitinstall/service/SplitInstallService.kt +6 −0 Original line number Diff line number Diff line Loading @@ -38,7 +38,13 @@ class SplitInstallService : Service() { const val TAG = "SplitInstallSysService" } override fun onCreate() { super.onCreate() Log.i(TAG, "onCreate"); } override fun onBind(intent: Intent?): IBinder? { Log.i(TAG, "onBind") return SplitInstallBinder(applicationContext) } } Loading
lib/aidl/foundation/e/splitinstall/ISplitInstallService.aidl +3 −1 Original line number Diff line number Diff line package foundation.e.splitinstall; import foundation.e.splitinstall.ISplitInstallServiceCallback; /** * Interface towards the SplitInstallService. */ Loading @@ -12,5 +14,5 @@ interface ISplitInstallService { * for. * @param modulePath: the path of the split module apk we want to install. */ oneway void installSplitModule(in String packageName, in String modulePath); oneway void installSplitModule(in String packageName, in String modulePath, in ISplitInstallServiceCallback callback); }
lib/aidl/foundation/e/splitinstall/ISplitInstallServiceCallback.aidl 0 → 100644 +5 −0 Original line number Diff line number Diff line package foundation.e.splitinstall; interface ISplitInstallServiceCallback { void onFinished(int session); }
service/java/foundation/e/splitinstall/service/SplitInstallBinder.kt +26 −4 Original line number Diff line number Diff line Loading @@ -22,17 +22,22 @@ import android.content.Intent import android.content.pm.PackageInstaller import android.util.Log import foundation.e.splitinstall.ISplitInstallService import foundation.e.splitinstall.ISplitInstallServiceCallback import java.io.File class SplitInstallBinder( val applicationContext: Context ) : ISplitInstallService.Stub() { private var callbacks: ISplitInstallServiceCallback? = null companion object { const val TAG = SplitInstallService.TAG } override fun installSplitModule(packageName: String, modulePath: String) { override fun installSplitModule(packageName: String, modulePath: String, callbacks: ISplitInstallServiceCallback) { this.callbacks = callbacks Log.i(TAG, "installing $modulePath") val packageManager = applicationContext.packageManager Loading @@ -45,6 +50,7 @@ class SplitInstallBinder( val sessionId = packageInstaller.createSession(params) val session = packageInstaller.openSession(sessionId) packageInstaller.registerSessionCallback(pmCallbacks) try { syncFile(session, File(modulePath)) Loading @@ -53,9 +59,10 @@ class SplitInstallBinder( callbackIntent.action = SplitInstallBroadcastReceiver.MODULE_INSTALLED_INTENT_ACTION val flags = PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE val servicePendingIntent = val pendingIntent = PendingIntent.getBroadcast(applicationContext, sessionId, callbackIntent, flags) session.commit(servicePendingIntent.intentSender) session.commit(pendingIntent.intentSender) } catch (e: Exception) { session.abandon() throw e Loading @@ -72,4 +79,19 @@ class SplitInstallBinder( inputStream.close() outputStream.close() } private val pmCallbacks = object : PackageInstaller.SessionCallback() { override fun onActiveChanged(sessionId: Int, active: Boolean) { } override fun onBadgingChanged(sessionId: Int) { } override fun onCreated(sessionId: Int) { } override fun onFinished(sessionId: Int, success: Boolean) { Log.i(TAG, "onFinished"); callbacks?.onFinished(sessionId) } override fun onProgressChanged(sessionId: Int, progress: Float) { } } }
service/java/foundation/e/splitinstall/service/SplitInstallService.kt +6 −0 Original line number Diff line number Diff line Loading @@ -38,7 +38,13 @@ class SplitInstallService : Service() { const val TAG = "SplitInstallSysService" } override fun onCreate() { super.onCreate() Log.i(TAG, "onCreate"); } override fun onBind(intent: Intent?): IBinder? { Log.i(TAG, "onBind") return SplitInstallBinder(applicationContext) } }