diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index cdc215c..5de30ad 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -22,5 +22,8 @@
         <provider android:name="PartnerBookmarksProvider"
             android:authorities="com.android.partnerbookmarks"
             android:exported="true" />
+        <provider android:name="PartnerHomepageProvider"
+            android:authorities="com.android.partnerbrowsercustomizations"
+            android:exported="true" />
     </application>
 </manifest>
diff --git a/res/values-mcc204-mnc04/strings.xml b/res/values-mcc204-mnc04/strings.xml
new file mode 100644
index 0000000..6e0c028
--- /dev/null
+++ b/res/values-mcc204-mnc04/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="homepage_uri" translatable="false">https://www.vodafone.nl</string>
+    <string name="bookmarks_folder_name" translatable="false">Vodafone Favorieten</string>
+    <string-array name="bookmarks">
+        <item>Vodafone</item>
+        <item>https://www.vodafone.nl</item>
+        <item>My Vodafone</item>
+        <item>https://www.vodafone.nl/my</item>
+    </string-array>
+</resources>
diff --git a/res/values-mcc204-mnc08/strings.xml b/res/values-mcc204-mnc08/strings.xml
new file mode 100644
index 0000000..07666bb
--- /dev/null
+++ b/res/values-mcc204-mnc08/strings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="homepage_uri" translatable="false">http://www.kpnvandaag.nl</string>
+</resources>
diff --git a/res/values-mcc204-mnc12/strings.xml b/res/values-mcc204-mnc12/strings.xml
new file mode 100644
index 0000000..3f2b0ad
--- /dev/null
+++ b/res/values-mcc204-mnc12/strings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="homepage_uri" translatable="false">http://telfort.nl</string>
+</resources>
diff --git a/res/values-mcc208-mnc01/strings.xml b/res/values-mcc208-mnc01/strings.xml
new file mode 100644
index 0000000..804469d
--- /dev/null
+++ b/res/values-mcc208-mnc01/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="homepage_uri" translatable="false">https://www.orange.fr/portail</string>
+    <string name="bookmarks_folder_name" translatable="false">Orange Favoris</string>
+    <string-array name="bookmarks">
+        <item>Orange</item>
+        <item>http://www.orange.fr/</item>
+        <item>Actualités</item>
+        <item>https://actu.orange.fr/</item>
+        <item>Météo</item>
+        <item>https://meteo.orange.fr/</item>
+        <item>Jeux</item>
+        <item>http://jeux.mob1.orange.fr/</item>
+        <item>Sports</item>
+        <item>https://sports.orange.fr/</item>
+    </string-array>
+</resources>
diff --git a/res/values-mcc214-mnc01/strings.xml b/res/values-mcc214-mnc01/strings.xml
new file mode 100644
index 0000000..5777d3b
--- /dev/null
+++ b/res/values-mcc214-mnc01/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="homepage_uri" translatable="false">https://start.vodafone.com/ssp/homepage/ES?source=embed</string>
+    <string name="bookmarks_folder_name" translatable="false">Favoritos Vodafone</string>
+    <string-array name="bookmarks">
+        <item>Mi Vodafone</item>
+        <item>http://m.vodafone.es</item>
+        <item>Contenidos</item>
+        <item>https://offers.vodafone.com/es</item>
+        <item>V by Vodafone</item>
+        <item>https://eshop.v.vodafone.com/es</item>
+    </string-array>
+</resources>
diff --git a/res/values-mcc214-mnc03/strings.xml b/res/values-mcc214-mnc03/strings.xml
new file mode 100644
index 0000000..668f666
--- /dev/null
+++ b/res/values-mcc214-mnc03/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="homepage_uri" translatable="false">https://www.orange.es/?internal_medium=settings</string>
+    <string name="bookmarks_folder_name" translatable="false">Favoritos Orange</string>
+    <string-array name="bookmarks">
+        <item>Orange</item>
+        <item>https://www.orange.es/?internal_medium=settings</item>
+        <item>TV y Cine</item>
+        <item>http://m.orange.es/tv</item>
+        <item>Videojuegos</item>
+        <item>http://juegos.orange.es</item>
+    </string-array>
+</resources>
diff --git a/res/values-mcc222-mnc10/strings.xml b/res/values-mcc222-mnc10/strings.xml
new file mode 100644
index 0000000..699b8ce
--- /dev/null
+++ b/res/values-mcc222-mnc10/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="homepage_uri" translatable="false">https://m.vodafone.it/pages/home</string>
+    <string name="bookmarks_folder_name" translatable="false">Favoritos Vodafone</string>
+    <string-array name="bookmarks">
+        <item>My Vodafone</item>
+        <item>http://my190.vodafone.it</item>
+        <item>Apps</item>
+        <item>http://m.vodafone.it/pages/apps</item>
+        <item>Vodafone</item>
+        <item>http://m.vodafone.it</item>
+    </string-array>
+</resources>
diff --git a/res/values-mcc234-mnc15/strings.xml b/res/values-mcc234-mnc15/strings.xml
new file mode 100644
index 0000000..448886a
--- /dev/null
+++ b/res/values-mcc234-mnc15/strings.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="homepage_uri" translatable="false">https://start.vodafone.com/ssp/homepage/UK?source=embed</string>
+    <string name="bookmarks_folder_name" translatable="false">Favourites Vodafone</string>
+    <string-array name="bookmarks">
+        <item>Vodafone</item>
+        <item>https://www.vodafone.co.uk</item>
+    </string-array>
+</resources>
diff --git a/res/values-mcc262-mnc02/strings.xml b/res/values-mcc262-mnc02/strings.xml
new file mode 100644
index 0000000..59ebab9
--- /dev/null
+++ b/res/values-mcc262-mnc02/strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="homepage_uri" translatable="false">http://live.vodafone.de/dr/cc</string>
+    <string name="bookmarks_folder_name" translatable="false">Vodafone Favoriten</string>
+    <string-array name="bookmarks">
+        <item>News</item>
+        <item>http://vflive.de/news</item>
+        <item>MusicDownloads</item>
+        <item>http://vflive.de/music</item>
+        <item>Spiele</item>
+        <item>http://vflive.de/games</item>
+        <item>Logos &amp; Designs</item>
+        <item>http://vflive.de/picturedownload</item>
+        <item>Vodafone Webseite</item>
+        <item>http://m.vodafone.de</item>
+        <item>Vodafone</item>
+        <item>https://start.vodafone.com/ssp/homepage/DE?source=embed</item>
+    </string-array>
+</resources>
diff --git a/res/values-mcc262-mnc09/strings.xml b/res/values-mcc262-mnc09/strings.xml
new file mode 100644
index 0000000..59ebab9
--- /dev/null
+++ b/res/values-mcc262-mnc09/strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="homepage_uri" translatable="false">http://live.vodafone.de/dr/cc</string>
+    <string name="bookmarks_folder_name" translatable="false">Vodafone Favoriten</string>
+    <string-array name="bookmarks">
+        <item>News</item>
+        <item>http://vflive.de/news</item>
+        <item>MusicDownloads</item>
+        <item>http://vflive.de/music</item>
+        <item>Spiele</item>
+        <item>http://vflive.de/games</item>
+        <item>Logos &amp; Designs</item>
+        <item>http://vflive.de/picturedownload</item>
+        <item>Vodafone Webseite</item>
+        <item>http://m.vodafone.de</item>
+        <item>Vodafone</item>
+        <item>https://start.vodafone.com/ssp/homepage/DE?source=embed</item>
+    </string-array>
+</resources>
diff --git a/res/values-mcc272-mnc01/strings.xml b/res/values-mcc272-mnc01/strings.xml
new file mode 100644
index 0000000..d873815
--- /dev/null
+++ b/res/values-mcc272-mnc01/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="homepage_uri" translatable="false">http://start.vodafone.com/ssp/homepage/IE</string>
+    <string name="bookmarks_folder_name" translatable="false">Favorites Vodafone</string>
+    <string-array name="bookmarks">
+        <item>My Vodafone</item>
+        <item>https://www.vodafone.ie/myv/services/login/index.jsp?redirect=/myv/index.jsp</item>
+        <item>Vodafone</item>
+        <item>https://start.vodafone.com</item>
+        <item>Vodafone Ireland</item>
+        <item>https://www.vodafone.ie</item>
+    </string-array>
+</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f614a2f..23bb086 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -15,6 +15,7 @@
 -->
 
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="homepage_uri" translatable="false">http://www.android.com/</string>
     <string name="bookmarks_folder_name" translatable="false">Partner Bookmarks</string>
     <string-array name="bookmarks" />
 </resources>
diff --git a/src/com/android/providers/partnerbookmarks/PartnerHomepageProvider.java b/src/com/android/providers/partnerbookmarks/PartnerHomepageProvider.java
new file mode 100644
index 0000000..fbd60a5
--- /dev/null
+++ b/src/com/android/providers/partnerbookmarks/PartnerHomepageProvider.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ * Copyright 2020-2022 Fairphone B.V.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.providers.partnerbookmarks;
+
+import android.content.ContentProvider;
+import android.content.ContentValues;
+import android.content.UriMatcher;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.net.Uri;
+import android.util.Log;
+
+public class PartnerHomepageProvider extends ContentProvider {
+    private static final String TAG = "PartnerHomepageProvider";
+    // Keep "http://www.android.com/" as fall-back.
+    // Other strings in this class must remain as it is.
+    private static String mHomepageUri = "http://www.android.com/";
+    private static final int URI_MATCH_HOMEPAGE = 0;
+    private static final int URI_MATCH_DISABLE_INCOGNITO_MODE = 1;
+    private static final int URI_MATCH_DISABLE_BOOKMARKS_EDITING = 2;
+    private static final UriMatcher URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
+
+    static {
+        URI_MATCHER.addURI(
+                "com.android.partnerbrowsercustomizations", "homepage", URI_MATCH_HOMEPAGE);
+    }
+
+    private boolean prepareHomepageUri() {
+        Resources res = getContext().getResources();
+        try {
+            mHomepageUri = res.getString(R.string.homepage_uri);
+        } catch (android.content.res.Resources.NotFoundException e) {
+            Log.e(TAG, "prepareHomepageUri failed to fetch resources; bailing out");
+            e.printStackTrace();
+            return false;
+        }
+
+        return true;
+    }
+
+    @Override
+    public boolean onCreate() {
+        prepareHomepageUri();
+        Log.d(TAG, "onCreate mHomepageUri=" + mHomepageUri);
+        return true;
+    }
+
+    @Override
+    public void onConfigurationChanged(Configuration newConfig) {
+        prepareHomepageUri();
+        Log.d(TAG, "onConfigurationChanged mHomepageUri=" + mHomepageUri);
+    }
+
+    @Override
+    public String getType(Uri uri) {
+        switch (URI_MATCHER.match(uri)) {
+            case URI_MATCH_HOMEPAGE:
+                return "vnd.android.cursor.item/partnerhomepage";
+            case URI_MATCH_DISABLE_INCOGNITO_MODE:
+                return "vnd.android.cursor.item/partnerdisableincognitomode";
+            case URI_MATCH_DISABLE_BOOKMARKS_EDITING:
+                return "vnd.android.cursor.item/partnerdisablebookmarksediting";
+            default:
+                return null;
+        }
+    }
+
+    @Override
+    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
+            String sortOrder) {
+        switch (URI_MATCHER.match(uri)) {
+            case URI_MATCH_HOMEPAGE: {
+                MatrixCursor cursor = new MatrixCursor(new String[]{"homepage"}, 1);
+                cursor.addRow(new Object[]{mHomepageUri});
+                return cursor;
+            }
+            case URI_MATCH_DISABLE_INCOGNITO_MODE: {
+                MatrixCursor cursor =
+                        new MatrixCursor(new String[]{"disableincognitomode"}, 1);
+                cursor.addRow(new Object[]{1});
+                return cursor;
+            }
+            case URI_MATCH_DISABLE_BOOKMARKS_EDITING: {
+                MatrixCursor cursor =
+                        new MatrixCursor(new String[]{"disablebookmarksediting"}, 1);
+                cursor.addRow(new Object[]{1});
+                return cursor;
+            }
+            default:
+                return null;
+        }
+    }
+
+    @Override
+    public Uri insert(Uri uri, ContentValues values) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int delete(Uri uri, String selection, String[] selectionArgs) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
+        throw new UnsupportedOperationException();
+    }
+}
