Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content

feat: improve F-Droid and Google Play deep link handling

Fahim M. Choudhury requested to merge 8712-improve-fdroid-link-handling into main

Description

This merge request improves the deep link handling for F-Droid and Google Play URLs within App Lounge.

Screen record

fdroid-link-handling

Technical details

Previously, the app would intercept all links to f-droid.org, preventing users from browsing the F-Droid website directly. This change modifies the intent-filter in AndroidManifest.xml to be more specific, ensuring that App Lounge only opens links to individual application pages, not the entire domain.

The following changes have been made:

  • The intent-filter for f-droid.org now uses a pathPattern that requires the URL to contain /packages/ followed by a valid package name format (e.g., com.example.app).
  • The intent-filter for play.google.com now uses a pathPrefix to only handle /store/apps/details links.
  • This allows users to browse the F-Droid website and other non-app pages on the Google Play Store without being redirected to App Lounge.
Handling links when both App Lounge and F-Droid are installed

App Lounge, being a system app, has the default handler of these autoVerified links. So, in case where both App Lounge and F-Droid are installed, App Lounge gets the chance to open the link.

However, users can disable this setting by going to Settings > Apps > App Lounge > Open by default and disable the 'Open supported links' switch.

image image image

Next, if they want to enable F-Droid to handle this links, the procedure is the same as above with F-Droid's setting and adding handlers using 'Add link' option.

image image image

Tests

  • On /e/OS Browser, search for "fdroid about".
  • Find the result which contains f-droid.org/about. (You can long press the link on the search result to verify)
  • Click on the search result.
  • Verify that the link opens in the Browser and doesn't navigate you to App Lounge.
  • Now Search for a specific app, e.g. "fdroid thunderbird".
  • Click on the F-Droid link from search results.
  • Verify that the link opens in App Lounge

Follow same procedure to verify Google Play Store apps and links.

Alternatively, you can test this functionality using the following adb commands.

Click to expand

Expected to open in App Lounge:

F-Droid:

# App link with locale
adb shell am start -a android.intent.action.VIEW -d "https://f-droid.org/en/packages/com.klee.sapio/"

# App link without locale
adb shell am start -a android.intent.action.VIEW -d "https://f-droid.org/packages/com.klee.sapio/"

Google Play:

# Standard app link
adb shell am start -a android.intent.action.VIEW -d "https://play.google.com/store/apps/details?id=com.whatsapp"

# Shortened app link
adb shell am start -a android.intent.action.VIEW -d "https://play.app.goo.gl/?link=https://play.google.com/store/apps/details?id=com.whatsapp"

Expected to open in a Web Browser:

F-Droid:

# F-Droid homepage
adb shell am start -a android.intent.action.VIEW -d "https://f-droid.org/"

# F-Droid packages list page
adb shell am start -a android.intent.action.VIEW -d "https://f-droid.org/en/packages/"

Google Play:

# Google Play store homepage
adb shell am start -a android.intent.action.VIEW -d "https://play.google.com/store"

# Google Play store 'apps' section
adb shell am start -a android.intent.action.VIEW -d "https://play.google.com/store/apps"

Issues

e/backlog#8712

10 commandments of code review

👪 ❤️ https://gitlab.e.foundation/groups/e/-/wikis/contribute/development-processes/code-review-guidelines

Edited by Fahim M. Choudhury

Merge request reports

Loading