diff --git a/gogio/androidbuild.go b/gogio/androidbuild.go
index 870dada..e65a04f 100644
--- a/gogio/androidbuild.go
+++ b/gogio/androidbuild.go
@@ -48,6 +48,7 @@ type manifestData struct {
Features []string
IconSnip string
AppName string
+ HasService bool
}
const (
@@ -67,6 +68,7 @@ const (
- #40000000
`
+ foregroundPermission = "android.permission.FOREGROUND_SERVICE"
)
func init() {
@@ -448,6 +450,7 @@ func exeAndroid(tmpDir string, tools *androidTools, bi *buildInfo, extraJars, pe
Features: features,
IconSnip: iconSnip,
AppName: appName,
+ HasService: stringsContains(perms, "foreground"),
}
tmpl, err := template.New("test").Parse(
`
@@ -470,6 +473,17 @@ func exeAndroid(tmpDir string, tools *androidTools, bi *buildInfo, extraJars, pe
+ {{if .HasService}}
+
+
+
+
+
+ {{end}}
`)
var manifestBuffer bytes.Buffer
@@ -869,6 +883,15 @@ func getPermissions(ps []string) ([]string, []string) {
return permissions, features
}
+func stringsContains(strings []string, str string) bool {
+ for _, s := range strings {
+ if str == s {
+ return true
+ }
+ }
+ return false
+}
+
func latestPlatform(sdk string) (string, error) {
allPlats, err := filepath.Glob(filepath.Join(sdk, "platforms", "android-*"))
if err != nil {
diff --git a/gogio/permission.go b/gogio/permission.go
index c3227ac..f72b0b2 100644
--- a/gogio/permission.go
+++ b/gogio/permission.go
@@ -22,6 +22,9 @@ var AndroidPermissions = map[string][]string{
"wakelock": {
"android.permission.WAKE_LOCK",
},
+ "foreground": {
+ "android.permission.FOREGROUND_SERVICE",
+ },
}
var AndroidFeatures = map[string][]string{