Apk Update Code Added

This commit is contained in:
Mariya
2024-02-27 16:49:25 +05:30
parent 71d298cd69
commit 5cdc156f33
4 changed files with 27 additions and 14 deletions

View File

@@ -25,6 +25,7 @@
<application <application
android:name="com.example.hpostesting.HPOSTestingApplication" android:name="com.example.hpostesting.HPOSTestingApplication"
android:largeHeap="true"
android:allowBackup="true" android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules" android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules" android:fullBackupContent="@xml/backup_rules"

View File

@@ -30,6 +30,7 @@ import com.google.firebase.appdistribution.FirebaseAppDistribution
import com.google.firebase.appdistribution.FirebaseAppDistributionException import com.google.firebase.appdistribution.FirebaseAppDistributionException
import com.google.firebase.crashlytics.FirebaseCrashlytics import com.google.firebase.crashlytics.FirebaseCrashlytics
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import `in`.sminnovations.hpostesting.BuildConfig
import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.R
import `in`.sminnovations.hpostesting.databinding.ActivityDashboardBinding import `in`.sminnovations.hpostesting.databinding.ActivityDashboardBinding
import okhttp3.ResponseBody import okhttp3.ResponseBody
@@ -92,7 +93,18 @@ class DashboardActivity : AppCompatActivity(), IDataCollector {
is Result.Success -> { is Result.Success -> {
// Handle success // Handle success
val apkUrl = result.data val apkUrl = result.data
downloadApk(apkUrl) val responseBodyString = apkUrl.string()
val fileToWriteTo = File(this.getExternalFilesDir(null), "downloaded_file.apk")
apkUrl.byteStream().use { inputStream ->
FileOutputStream(fileToWriteTo).use { outputStream ->
inputStream.copyTo(outputStream)
}
}
Log.d(TAG, "Responsebody: $responseBodyString")
installApk(fileToWriteTo)
Log.e("ApI", "APK URL: $apkUrl") Log.e("ApI", "APK URL: $apkUrl")
Toast.makeText( Toast.makeText(
this, this,
@@ -167,7 +179,6 @@ class DashboardActivity : AppCompatActivity(), IDataCollector {
Log.d(TAG, "File download: $fileSizeDownloaded of $fileSize") Log.d(TAG, "File download: $fileSizeDownloaded of $fileSize")
} }
outputStream.flush() outputStream.flush()
installApk(file) // Call installApk directly with the file
} catch (e: Exception) { } catch (e: Exception) {
Log.e(TAG, "Error saving APK: ${e.message}") Log.e(TAG, "Error saving APK: ${e.message}")
} finally { } finally {
@@ -176,19 +187,20 @@ class DashboardActivity : AppCompatActivity(), IDataCollector {
} }
} }
private fun installApk(file: File) { private fun installApk(fileToWriteTo: File) {
val uri: Uri = FileProvider.getUriForFile( val apkUri = FileProvider.getUriForFile(
this, this,
"${applicationContext.packageName}.provider", // Update this with your FileProvider authority "${BuildConfig.APPLICATION_ID}.provider",
file fileToWriteTo
) )
val installIntent = Intent(Intent.ACTION_VIEW).apply {
data = uri val intent = Intent(Intent.ACTION_VIEW).apply {
flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or setDataAndType(apkUri, "application/vnd.android.package-archive")
Intent.FLAG_ACTIVITY_CLEAR_TOP flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_GRANT_READ_URI_PERMISSION
} }
startActivity(installIntent) startActivity(intent)
} }
override fun onDestroy() { override fun onDestroy() {

View File

@@ -1,3 +1,3 @@
<paths xmlns:android="http://schemas.android.com/apk/res/android"> <paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-files-path name="Update" path="." /> <external-files-path name="downloaded_file" path="." />
</paths> </paths>

View File

@@ -1,6 +1,6 @@
#Mon Jun 12 17:07:47 IST 2023 #Tue Feb 27 16:09:58 IST 2024
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists