ソースを参照

feat: assets statements (#304)

see https://developer.chrome.com/docs/capabilities/get-installed-related-apps?hl=en

Reviewed-on: https://gitea.angry.im/PeterCxy/OpenEUICC/pulls/304
Co-authored-by: septs <github@septs.pw>
Co-committed-by: septs <github@septs.pw>
septs 1 ヶ月 前
コミット
a75478dd31

+ 3 - 1
app-unpriv/build.gradle.kts

@@ -24,6 +24,8 @@ android {
         applicationId = "im.angry.easyeuicc"
         applicationId = "im.angry.easyeuicc"
         minSdk = 28
         minSdk = 28
         targetSdk = 35
         targetSdk = 35
+
+        emitAssetStatements("https://easyeuicc.org", "https://preview.easyeuicc.org")
     }
     }
 
 
     buildTypes {
     buildTypes {
@@ -46,4 +48,4 @@ android {
 
 
 dependencies {
 dependencies {
     implementation(project(":app-common"))
     implementation(project(":app-common"))
-}
+}

+ 5 - 0
app-unpriv/src/main/AndroidManifest.xml

@@ -13,6 +13,11 @@
         android:theme="@style/Theme.OpenEUICC"
         android:theme="@style/Theme.OpenEUICC"
         tools:targetApi="tiramisu">
         tools:targetApi="tiramisu">
 
 
+        <!-- https://web.dev/get-installed-related-apps/?hl=en -->
+        <meta-data
+            android:name="asset_statements"
+            android:resource="@string/asset_statements" />
+
         <activity
         <activity
             android:name="im.angry.openeuicc.ui.UnprivilegedMainActivity"
             android:name="im.angry.openeuicc.ui.UnprivilegedMainActivity"
             android:exported="true">
             android:exported="true">

+ 18 - 0
buildSrc/src/main/kotlin/im/angry/openeuicc/build/RelatedApps.kt

@@ -0,0 +1,18 @@
+package im.angry.openeuicc.build
+
+import com.android.build.api.dsl.VariantDimension
+import groovy.json.JsonOutput
+import groovy.json.StringEscapeUtils
+
+/**
+ * https://web.dev/get-installed-related-apps/?hl=en
+ */
+fun VariantDimension.emitAssetStatements(vararg sites: String) {
+    val relation = listOf("delegate_permission/common.handle_all_urls")
+    val statements = sites.map {
+        val target = mapOf("namespace" to "web", "site" to it)
+        mapOf("relation" to relation, "target" to target)
+    }
+    val output = JsonOutput.toJson(statements)
+    resValue(type = "string", name = "asset_statements", value = StringEscapeUtils.escapeJava(output))
+}