Skip to content

Commit bb6a24f

Browse files
committed
start service as a foreground service
1 parent ea52c67 commit bb6a24f

File tree

9 files changed

+44
-5
lines changed

9 files changed

+44
-5
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
<uses-permission
4040
android:name="android.permission.PACKAGE_USAGE_STATS"
4141
tools:ignore="ProtectedPermissions" />
42+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
4243

4344
<uses-feature
4445
android:name="android.hardware.camera"
@@ -131,7 +132,10 @@
131132
android:name="android.support.FILE_PROVIDER_PATHS"
132133
android:resource="@xml/file_paths" />
133134
</provider>
134-
<service android:name=".datamanager.MyDownloadService"
135-
android:exported="false" />
135+
<service
136+
android:name=".datamanager.MyDownloadService"
137+
android:foregroundServiceType="dataSync"
138+
android:permission="android.permission.FOREGROUND_SERVICE"
139+
android:exported="false"/>
136140
</application>
137141
</manifest>

app/src/main/AndroidManifest.xml.lite

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
<uses-permission
4040
android:name="android.permission.PACKAGE_USAGE_STATS"
4141
tools:ignore="ProtectedPermissions" />
42+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
4243

4344
<uses-feature
4445
android:name="android.hardware.camera"
@@ -131,7 +132,10 @@
131132
android:name="android.support.FILE_PROVIDER_PATHS"
132133
android:resource="@xml/file_paths" />
133134
</provider>
134-
<service android:name=".datamanager.MyDownloadService"
135-
android:exported="false" />
135+
<service
136+
android:name=".datamanager.MyDownloadService"
137+
android:foregroundServiceType="dataSync"
138+
android:permission="android.permission.FOREGROUND_SERVICE"
139+
android:exported="false"/>
136140
</application>
137141
</manifest>

app/src/main/java/org/ole/planet/myplanet/datamanager/MyDownloadService.kt

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
11
package org.ole.planet.myplanet.datamanager
22

3+
import android.app.NotificationChannel
34
import android.app.NotificationManager
45
import android.app.Service
56
import android.content.Context
67
import android.content.Intent
78
import android.content.SharedPreferences
89
import android.os.IBinder
910
import androidx.core.app.NotificationCompat
11+
import androidx.core.content.ContextCompat
1012
import androidx.localbroadcastmanager.content.LocalBroadcastManager
1113
import io.realm.Realm
1214
import kotlinx.coroutines.CoroutineScope
1315
import kotlinx.coroutines.Dispatchers
1416
import kotlinx.coroutines.launch
1517
import okhttp3.ResponseBody
1618
import org.ole.planet.myplanet.MainApplication.Companion.createLog
19+
import org.ole.planet.myplanet.R
1720
import org.ole.planet.myplanet.model.Download
1821
import org.ole.planet.myplanet.model.RealmMyLibrary
1922
import org.ole.planet.myplanet.utilities.FileUtils.availableExternalMemorySize
@@ -48,6 +51,8 @@ class MyDownloadService : Service() {
4851
preferences = getSharedPreferences(PREFS_NAME, MODE_PRIVATE)
4952
notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
5053

54+
startForegroundServiceWithNotification()
55+
5156
val urlsKey = intent?.getStringExtra("urls_key") ?: "url_list_key"
5257
val urlSet = preferences.getStringSet(urlsKey, emptySet()) ?: emptySet()
5358

@@ -69,6 +74,20 @@ class MyDownloadService : Service() {
6974
return START_STICKY
7075
}
7176

77+
private fun startForegroundServiceWithNotification() {
78+
val channelId = "DownloadChannel"
79+
val channel = NotificationChannel(channelId, "Download Service", NotificationManager.IMPORTANCE_LOW)
80+
notificationManager?.createNotificationChannel(channel)
81+
82+
notificationBuilder = NotificationCompat.Builder(this, channelId)
83+
.setContentTitle(getString(R.string.downloading_files))
84+
.setContentText(getString(R.string.preparing_download))
85+
.setSmallIcon(R.drawable.ic_download)
86+
.setProgress(100, 0, true)
87+
88+
startForeground(1, notificationBuilder!!.build())
89+
}
90+
7291
private fun initDownload(url: String, fromSync: Boolean) {
7392
val retrofitInterface = ApiClient.client?.create(ApiInterface::class.java)
7493
try {
@@ -256,7 +275,7 @@ class MyDownloadService : Service() {
256275
putExtra("urls_key", urlsKey)
257276
putExtra("fromSync", fromSync)
258277
}
259-
context.startService(intent)
278+
ContextCompat.startForegroundService(context, intent)
260279
}
261280
}
262281
}

app/src/main/res/values-ar/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1242,5 +1242,7 @@
12421242
<string name="show_additional_fields">عرض الحقول الإضافية</string>
12431243
<string name="hide_additional_fields">إخفاء الحقول الإضافية</string>
12441244
<string name="age">العمر</string>
1245+
<string name="preparing_download">جارٍ تحضير التنزيل…</string>
1246+
<string name="downloading_files">جارٍ تنزيل الملفات</string>
12451247

12461248
</resources>

app/src/main/res/values-es/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1242,5 +1242,7 @@
12421242
<string name="show_additional_fields">mostrar campos adicionales</string>
12431243
<string name="hide_additional_fields">ocultar campos adicionales</string>
12441244
<string name="age">Edad</string>
1245+
<string name="preparing_download">Preparando la descarga…</string>
1246+
<string name="downloading_files">Descargando archivos</string>
12451247

12461248
</resources>

app/src/main/res/values-fr/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1242,5 +1242,7 @@
12421242
<string name="show_additional_fields">afficher les champs supplémentaires</string>
12431243
<string name="hide_additional_fields">masquer les champs supplémentaires</string>
12441244
<string name="age">Âge</string>
1245+
<string name="preparing_download">Préparation du téléchargement…</string>
1246+
<string name="downloading_files">Téléchargement des fichiers</string>
12451247

12461248
</resources>

app/src/main/res/values-ne/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1242,5 +1242,7 @@
12421242
<string name="show_additional_fields">थप क्षेत्रहरू देखाउनुहोस्</string>
12431243
<string name="hide_additional_fields">थप क्षेत्रहरू लुकाउनुहोस्</string>
12441244
<string name="age">उमेर</string>
1245+
<string name="preparing_download">डाउनलोडको तयारी गर्दै…</string>
1246+
<string name="downloading_files">फाइलहरू डाउनलोड हुँदैछन्</string>
12451247

12461248
</resources>

app/src/main/res/values-so/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1242,5 +1242,7 @@
12421242
<string name="show_additional_fields">muuji beeraha dheeraadka ah</string>
12431243
<string name="hide_additional_fields">qari beeraha dheeraadka ah</string>
12441244
<string name="age">Da\'da</string>
1245+
<string name="preparing_download">Diyaarinaya soo dejinta…</string>
1246+
<string name="downloading_files">Faylasha ayaa la soo dejinayaa</string>
12451247

12461248
</resources>

app/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1242,5 +1242,7 @@
12421242
<string name="show_additional_fields">show additional fields</string>
12431243
<string name="hide_additional_fields">hide additional fields</string>
12441244
<string name="age">Age</string>
1245+
<string name="preparing_download">Preparing download…</string>
1246+
<string name="downloading_files">Downloading files</string>
12451247

12461248
</resources>

0 commit comments

Comments
 (0)