I am trying to install apk with the following method and it is working fine with regular APKs, but there are some APKs which has OBB file also. I am not sure how to install APKs with OBB.
@Throws(IOException::class)
fun installPackage(url: String): Boolean {
val apkName: String = url.substring(url.lastIndexOf("/") + 1)
val fileInputStream = FileInputStream(File(APK_DOWNLOAD_PATH + apkName))
val packageInstaller = mContext.packageManager.packageInstaller
val params = PackageInstaller.SessionParams(
PackageInstaller.SessionParams.MODE_FULL_INSTALL
)
val sessionId = packageInstaller.createSession(params)
val session = packageInstaller.openSession(sessionId)
val out = session.openWrite(mContext.resources.getString(R.string.app_name), 0, -1)
val buffer = ByteArray(65536)
var c: Int
while (fileInputStream.read(buffer).also { c = it } != -1) {
out.write(buffer, 0, c)
}
session.fsync(out)
fileInputStream.close()
out.close()
session.commit(createIntentSender(mContext, sessionId, apkName)!!)
return true
}
I tried to download the OBB file to Android/Obb/ directory using following code:
var obbPath = Environment.getExternalStorageDirectory().absolutePath + "/Android/Obb/";
request_for_url.setDestinationInExternalPublicDir(
obbPath, "$obbName"
)
var queueId = downloadManager!!.enqueue(request_for_url)
but it is throwing the following error:
java.lang.IllegalStateException: Not one of standard directories: /storage/emulated/0/Android/Obb/
Thanks in Advance.