DuckDuckGo Android App

Overview

DuckDuckGo Android

Welcome to our android application. We are excited to engage the community in development, see CONTRIBUTING.md.

We are hiring!

DuckDuckGo is growing fast and we continue to expand our fully distributed team. We embrace diverse perspectives, and seek out passionate, self-motivated people, committed to our shared vision of raising the standard of trust online. If you are a senior software engineer capable in either iOS or Android, visit our careers page to find out more about our openings!

Building the Project

We use git submodules and so when you are checking out the app, you'll need to ensure the submodules are initialized properly. You can use the --recursive flag when cloning the project to do this.

git clone --recursive https://github.com/duckduckgo/android.git

Alternatively, if you already have the project checked out, you can initialize the submodules manually.

git submodule update --init

Terminology

We have taken steps to update our terminology and remove words with problematic racial connotations, most notably the change to main branches, allow lists, and blocklists. Closed issues or PRs may contain deprecated terminology that should not be used going forward.

Contribute

Please refer to contributing.

Discuss

Contact us at https://duckduckgo.com/feedback if you have feedback, questions or want to chat. You can also use the feedback form embedded within our Mobile App - to do so please navigate to Settings and select "Leave Feedback".

License

DuckDuckGo android is distributed under the Apache 2.0 license.

Comments
  • Domains visited get leaked to DDG servers

    Domains visited get leaked to DDG servers

    https://github.com/duckduckgo/Android/blob/ed91c9e551d2a9e1559199f110bd94c076784c71/app/src/main/java/com/duckduckgo/app/global/UriExtension.kt#L60

    This seems to be leaking all(?) the domains that users visit to your servers.

    opened by Tritonio 96
  • Import/Export bookmarks

    Import/Export bookmarks

    You have bookmarks so please add a basic import/export to them. Would make starting from scratch a lot smoother to be able to import from a file like a standard browser if we choose to.

    feature request Discussion 
    opened by IOI-655321 56
  • [Feature] Bookmarks Improvement

    [Feature] Bookmarks Improvement

    Task/Issue URL: #1438 #1439 #1440

    PR related to the feature proposal mentioned in discussion #1442

    Description

    • Users can create a bookmark folder from the edit bookmark screen.
    • Edit Bookmark shows the correct Bookmark Location, From BrowserFragment

    Steps to test this PR

    1. Add a bookmark
    2. Edit the bookmark from the menu or from the snackbar
    3. Select the Location
    4. New bookmark folder can be created.
    5. After creating a new bookmark folder, select the bookmark folder
    6. Save : bookmark saved inside the new bookmark folder.
    hacktoberfest-accepted 
    opened by 4shutosh 25
  • issue #914  bottom-anchored content and  canvas drawing fixed

    issue #914 bottom-anchored content and canvas drawing fixed

    Task/Issue URL: https://github.com/duckduckgo/Android/issues/914

    Description

    There were two issues: (1.)When we visit Reddit or Twitter they show bottom-anchored content which got partially hidden. (2.)Website like https://sketch.io/sketchpad/ contains canvas was not working properly, because someone added the AppBar hide functionality to fix the above issue, which was not the correct approach.

    Steps to test this PR

    (1) .First issue fix can be tested by visiting Twitter and Reddit without login. (2.) We can test the second issue fix by visiting https://sketch.io/sketchpad/ and drawing something on canvas.

    Feature 1

    • [ ]
    • [ ]

    First issue UI changes

    Before

    After

    Second issue UI changes

    Before

    After

    opened by AndroidPoet 24
  • Favicons get swapped!

    Favicons get swapped!

    Describe the bug Favicons get swapped. This seems close to the issue #975.

    How to Reproduce Steps to reproduce the behavior:

    1. Go to 'Bookmarks'
    2. See error

    Although in #975 seeming @aitorvs has provided a patch, but I'm seeing this bug is still existing.

    Expected behavior Favicons should show correctly.

    Smartphone

    • DDG App Version: 5.80.0
    • OS: Android 6
    bug Under investigation 
    opened by oldphones68 21
  • Downloads fail on some websites

    Downloads fail on some websites

    Describe the bug On some websites, downloads are failing (even when all protections are disabled).

    How to Reproduce Steps to reproduce the behavior:

    1. Go to https://media.interieur.gouv.fr/deplacement-covid-19/
    2. Fill the form and tap on "Générer mon attestation"
    3. The browser prompts to download the file (left screenshot).
    4. Tap "Continuer", the download fails (right screenshot).

    imageimage

    Expected behavior The file should be downloaded to the device, I checked with Chrome to confirm that it works.

    Smartphone (please complete the following information):

    • DDG App Version: 5.68.0 (56800) from F-Droid
    • Device: Samsung Galaxy A51 5G
    • OS: Android 10

    I observed the same issue on other websites in the past, but I cannot remember which ones. Hopefully this can be addressed in one of the upcoming versions. :)

    Thanks.

    bug 
    opened by uraza 19
  • ViewBinding migration (replacing kotlin synthetics)

    ViewBinding migration (replacing kotlin synthetics)

    Description

    We are currently migrating to ViewBinding since Kotlin synthetics have been deprecated.

    This is a great opportunity for contributors to help our Android team.

    We are accepting contributions to remove kotlin synthetics usages and replace them by using ViewBinding.

    Inside our codebase, we have already migrated a bunch of classes that you can use as a reference:

    • Fragments: InitialFeedbackFragment, ShareOpenEndedFeedbackFragment, etc.
    • Dialogs: DaxDialog
    • RecyclerView.ViewHolder: AppIconsAdapter,SearchSuggestionViewHolder, BookmarkSuggestionViewHolder,
    • CustomView: TabSwitcherButton

    How to work on this issue

    But there are still some pending migrations.

    • Fragments: EmailAutofillTooltipFragment, SavedSiteDialogFragment, DefaultBrowserPage, WelcomePage, BrowserTabFragment, DownloadConfirmationFragment
    • Dialogs: FireDialog
    • Adapaters: BookmarksAdapter, FavoritesAdapter, BookmarkFolersAdapter, FavoritesQuickAccessAdapter, etc...
    • CustomView: TrackerNetworkLeaderboardPillView

    Just leave us a comment that you would like to work on the issue and what classes you will migrate. That will avoid conflicts with other contributions migrating the same classes.

    Thanks!

    opened by cmonfortep 17
  • Enable swipe-to-refresh for browser tabs

    Enable swipe-to-refresh for browser tabs

    • Including SwipeRefreshLayout dependencies & adapted fragment

    • Minor fix for DuckDuckGoWebView to work with SwipeRefreshLayout

    Resolves: #33

    Description: Based on PR by @malmstein #750. Fixes the weird swipe behavior in conjunction with the custom WebView (was too sensitive and did not block WebView scrolling/tapping during refresh swipe). Some concerns and open issues:

    • Refresh triggered by swipe does not change or block the toolbar refresh button. Can be added if required. I left it out for now as there's no behavior so far on that button (can be tapped multiple times).
    • Had some problems with the swipe refresh indicator's edge/shadow showing at the toolbar when one releases early. Solved this with l. 858 BrowserTabFragment - there's probably a nicer way to do this? Sorry I'm not really much of an Android dev.
    • Could not find a way to handle a scrollable area (e.g. textarea) at the top of the page, not sure if this a blocker? Here's an example https://jsfiddle.net/4koayw5g/show - Chrome seems to handle this. WebView does not seem to support telling us whether we are scrolling some element on the page.
    opened by Usiel 17
  • Open search results in external browser

    Open search results in external browser

    Now there are two options in Use External Browser: Never - results and sites are opened directly in app Always - results are redirected to default browser

    Please add something between: Just sites - search results are displayed in app, but sites are opened in default browser.

    This solution works perfectly with "flying" browsers line flyperlink, because you can open many results one by one, and then browse them later.

    invalid 
    opened by ZeRoZeRoRaZ 17
  • Add widget to home screen button doesn't work

    Add widget to home screen button doesn't work

    Describe the bug The pop up at the bottom of screen asks to add search widget to home screen. On clicking the blue button, it doesn't respond.

    How to Reproduce Steps to reproduce the behavior:

    1. Freshly install the app or clear all data (user + cache)
    2. Do the first ddg search
    3. Do first url visit on other tab
    4. Click fire button and when new tab is open the pop up appears
    5. Click on the blue button 'ADD WIDGET'
    6. See the button doesn't respond, but the 'DISMISS' button works

    Expected behavior It should have added a search widget on the home screen

    Smartphone (please complete the following information):

    • DDG App Version: ....
    • Device: ...
    • OS: ...
    • Screenshots:
    bug needs triage 
    opened by ghost 16
  • Issue with tabs and bookmarks

    Issue with tabs and bookmarks

    App version 5.12.0 Device make and model Micromax/Yuphoria - YU5010A Android version 5.1.1 Steps to reproduce the bug See the screencast (GIF) ddg Expected behavior Should be able to use tabs and add bookmarks Actual behavior I am unable to add bookmarks or use tabs. You can see the attached screenshot, Add Bookmark is greyed out and if I try to open a new tab it just open it within the current view. Also if I close the app and re-open it, I lose the page I had opened before. I've tried reinstalling the app but it still doesn't work properly.

    bug 
    opened by ashucg 16
  • Update autofill to 6.1.0

    Update autofill to 6.1.0

    Task/Issue URL: https://app.asana.com/0/1203655296097093/1203655296097093 Autofill Release: https://github.com/duckduckgo/duckduckgo-autofill/releases/tag/6.1.0

    Description

    Updates Autofill to version 6.1.0.

    Autofill 6.1.0 release notes

    What's Changed

    • Fix types for ID by @GioSensation in https://github.com/duckduckgo/duckduckgo-autofill/pull/239
    • Email Protection sign-up tooltip by @alistairjcbrown in https://github.com/duckduckgo/duckduckgo-autofill/pull/240
    • Autofill pixels by @sixers in https://github.com/duckduckgo/duckduckgo-autofill/pull/242
    • More minor fixes by @GioSensation in https://github.com/duckduckgo/duckduckgo-autofill/pull/244

    Full Changelog: https://github.com/duckduckgo/duckduckgo-autofill/compare/6.0.0...6.0.1

    Steps to test

    This release has been tested during autofill development. For smoke test steps see this task.

    opened by daxmobile 0
  • ADS: Widgets migration

    ADS: Widgets migration

    Task/Issue URL: https://app.asana.com/0/0/1203411647299667/f

    Description

    Migrate widgets to new styles

    Steps to test this PR

    • Install from this branch
    • Add widget to your home screen
    • Check widgets match new designs

    UI changes

    | Before | After | | ------ | ----- | Screenshot_20221230_163631_One UI Home|Screenshot_20221230_163636_One UI Home|

    opened by nalcalag 1
  • Missing dark mode for websites

    Missing dark mode for websites

    Describe the bug

    The browser is minimal, privacy friendly and buttery smooth. One of the main reasons I am unable to use it as my default browser is the lack of dark mode in websites. Just like in other browsers, why doesn't duckduckgo have an option to force dark mode in all websites? For the very few websites that supports dark mode, there's a flash of white screen while loading it or going back which is very annoying. Am I missing something or there's some technical reasons behind it? Also, can this feature be implemented in the future?

    After researching for someime regarding the issue, I found that the devs are willing to do so but hesitant to force it as it might behave unexpectedly for the websites which doesn't support it. However, dark mode in websites for Duckduckgo is one of the most demanded featue request and there are many people like me who can't use duckduckgo just because of this. Like common guys it's going to be 2023 in less than a week from now and there's still no dark mode support for websites.

    The perfect solution according to me would be to give an experimental or labs tab under which users have the option to force dark mode for all websites instead of just closing duckduckgo and searching on chrome/opera or any browser.

    How to Reproduce

    1. Open Duckduckgo.
    2. Search for anything.
    3. Click on the desired website (which doesn't have native dark mode).

    Expected behavior

    Users must be given an option to force use dark mode for all websites.

    Environment

    - DDG App Version:5.145.3
    - Device: Samsung Galaxy M12 (Indian variant)
    - OS: Android 12
    
    bug needs triage 
    opened by Tillo7 0
  • Fix ExceptionRulesDebugReceiverRegister risk to clear the exclusion list rules

    Fix ExceptionRulesDebugReceiverRegister risk to clear the exclusion list rules

    Task/Issue URL: https://app.asana.com/0/488551667048375/1203536459696139/f

    Description

    Fix bug where the receiver may clear the exception rules on VPN start

    Steps to test this PR

    Code review. Reproing may be difficult or involved modifying code to test it, as this would happen only when the DB table is not yet populated

    opened by aitorvs 1
  • Scroll stop when browsing images

    Scroll stop when browsing images

    Expected behaviour:

    When scrolling through images , the first tap should stop the scroll only.

    Current behaviour:

    When scrolling through images, the first tap stops the scroll and opens the tapped image.

    Edit:

    Formatting.

    opened by kahhong 0
Releases(5.145.5)
  • 5.145.5(Jan 4, 2023)

  • 5.145.4(Dec 19, 2022)

  • 5.145.3(Dec 15, 2022)

  • 5.145.1(Dec 12, 2022)

  • 5.145.0(Dec 8, 2022)

  • 5.144.0(Nov 25, 2022)

    What's new in this release?

    We've updated our privacy dashboard to make it easier for everyone to see who we caught trying to track you."

    Join our fully distributed team and help raise the standard of trust online — from anywhere! https://duckduckgo.com/hiring

    Have feedback?

    You can always reach us at https://duckduckgo.com/feedback.

    Source code(tar.gz)
    Source code(zip)
    duckduckgo-5.144.0-play-release.apk(37.11 MB)
  • 5.143.1(Nov 11, 2022)

    What's new in this release?

    • We’ve removed the waitlist for App Tracking Protection, making the beta open to all Android users!
    • App Tracking Protection helps block 3rd-party trackers lurking in your apps, even when you’re not using them.
    • Start blocking 3rd-party trackers in your Android apps today: open the app Menu > Settings > App Tracking Protection, then simply follow the onscreen instructions to get started.

    Join our fully distributed team and help raise the standard of trust online — from anywhere! https://duckduckgo.com/hiring

    Have feedback?

    You can always reach us at https://duckduckgo.com/feedback.

    Source code(tar.gz)
    Source code(zip)
    duckduckgo-5.143.1-play-release.apk(36.71 MB)
  • 5.143.0(Nov 11, 2022)

  • 5.142.2(Nov 5, 2022)

  • 5.142.1(Nov 4, 2022)

  • 5.142.0(Nov 3, 2022)

  • 5.141.0(Oct 24, 2022)

  • 5.140.0(Oct 19, 2022)

  • 5.139.2(Oct 18, 2022)

    What's new in this release?

    • When websites ask for camera and mic permissions, you can now use these features on sites you visit.
    • We've also improved how you manage the permissions you've already granted, giving you global controls over permissions for individual websites and the ability to restrict whether websites can ask for permissions at all.
    • We've expanded our Web Tracking Protections to support automatic expiration of 1st party cookies set by scripts.

    Join our fully distributed team and help raise the standard of trust online — from anywhere! https://duckduckgo.com/hiring

    Have feedback?

    You can always reach us at https://duckduckgo.com/feedback.

    Source code(tar.gz)
    Source code(zip)
    duckduckgo-5.139.2-play-release.apk(36.44 MB)
  • 5.139.1(Oct 17, 2022)

    What's new in this release?

    • When websites ask for camera and mic permissions, you can now use these features on sites you visit.
    • We've also improved how you manage the permissions you've already granted, giving you global controls over permissions for individual websites and the ability to restrict whether websites can ask for permissions at all.
    • We've expanded our Web Tracking Protections to support automatic expiration of 1st party cookies set by scripts.

    Join our fully distributed team and help raise the standard of trust online — from anywhere! https://duckduckgo.com/hiring

    Have feedback?

    You can always reach us at https://duckduckgo.com/feedback.

    Source code(tar.gz)
    Source code(zip)
    duckduckgo-5.139.1-play-release.apk(36.44 MB)
  • 5.139.0(Oct 17, 2022)

    What's new in this release?

    • When websites ask for camera and mic permissions, you can now use these features on sites you visit.
    • We've also improved how you manage the permissions you've already granted, giving you global controls over permissions for individual websites and the ability to restrict whether websites can ask for permissions at all.
    • We've expanded our Web Tracking Protections to support automatic expiration of 1st party cookies set by scripts.

    Join our fully distributed team and help raise the standard of trust online — from anywhere! https://duckduckgo.com/hiring

    Have feedback?

    You can always reach us at https://duckduckgo.com/feedback.

    Source code(tar.gz)
    Source code(zip)
    duckduckgo-5.139.0-play-release.apk(36.44 MB)
  • 5.138.1(Oct 2, 2022)

  • 5.138.0(Sep 29, 2022)

  • 5.137.5(Sep 27, 2022)

  • 5.137.4(Sep 23, 2022)

  • 5.137.2(Sep 19, 2022)

  • 5.137.1(Sep 14, 2022)

  • 5.136.0(Sep 6, 2022)

    What's new in this release?

    Now DuckDuckGo can try to automatically detect cookie consent pop-ups and set your cookie preferences to minimize cookies. Head over to settings to enable Manage Cookie Pop-ups.

    Join our fully distributed team and help raise the standard of trust online — from anywhere! https://duckduckgo.com/hiring

    Have feedback?

    You can always reach us at https://duckduckgo.com/feedback.

    Source code(tar.gz)
    Source code(zip)
    duckduckgo-5.136.0-play-release.apk(35.83 MB)
  • 5.135.0(Aug 31, 2022)

  • 5.134.0(Aug 22, 2022)

    What's new in this release?

    • We’ve removed the waitlist for DuckDuckGo Email Protection, making the beta open for everyone to try!
    • Email Protection beta is a free email forwarding service that removes multiple types of hidden email trackers and lets you create a personal @duck.com address and unlimited unique private email addresses. Plus, there's no need to switch email inboxes.
    • Signing up is easy: open the app Menu > Settings > Email Protection to get started.

    Join our fully distributed team and help raise the standard of trust online — from anywhere! https://duckduckgo.com/hiring

    Have feedback?

    You can always reach us at https://duckduckgo.com/feedback.

    Source code(tar.gz)
    Source code(zip)
    duckduckgo-5.134.0-play-release.apk(35.69 MB)
  • 5.133.0(Aug 17, 2022)

  • 5.132.2(Aug 15, 2022)

    What's new in this release?

    We've expanded our 3rd-Party Tracker Loading Protection to block more tracking requests. We also updated the Privacy Dashboard — you can now see additional information about which 3rd-party requests were blocked from loading, which other 3rd-party requests loaded, and the reasons for both when available.

    Join our fully distributed team and help raise the standard of trust online — from anywhere! https://duckduckgo.com/hiring

    Have feedback?

    You can always reach us at https://duckduckgo.com/feedback.

    Source code(tar.gz)
    Source code(zip)
    duckduckgo-5.132.2-play-release.apk(35.28 MB)
  • 5.132.1(Aug 9, 2022)

    What's new in this release?

    We've expanded our 3rd-Party Tracker Loading Protection to block more tracking requests. We also updated the Privacy Dashboard — you can now see additional information about which 3rd-party requests were blocked from loading, which other 3rd-party requests loaded, and the reasons for both when available.

    Join our fully distributed team and help raise the standard of trust online — from anywhere! https://duckduckgo.com/hiring

    Have feedback?

    You can always reach us at https://duckduckgo.com/feedback.

    Source code(tar.gz)
    Source code(zip)
    duckduckgo-5.132.1-play-release.apk(35.28 MB)
  • 5.132.0(Aug 8, 2022)

    What's new in this release?

    We've expanded our 3rd-Party Tracker Loading Protection to block more tracking requests. We also updated the Privacy Dashboard — you can now see additional information about which 3rd-party requests were blocked from loading, which other 3rd-party requests loaded, and the reasons for both when available.

    Join our fully distributed team and help raise the standard of trust online — from anywhere! https://duckduckgo.com/hiring

    Have feedback?

    You can always reach us at https://duckduckgo.com/feedback.

    Source code(tar.gz)
    Source code(zip)
    duckduckgo-5.132.0-play-release.apk(35.28 MB)
  • 5.131.1(Aug 2, 2022)

Owner
DuckDuckGo
At DuckDuckGo, we're raising the standard of trust online. We believe a more trusted Internet starts with simple and accessible privacy for everyone.
DuckDuckGo
Arjun Naik 1 Apr 16, 2022
Ride-Sharing Uber Lyft Android App - Learn to build a ride-sharing Android Taxi Clone App like Uber, Lyft - Open-Source Project By MindOrks

Ride-Sharing Uber Lyft Android App - Learn to build a ride-sharing Android Taxi Clone App like Uber, Lyft - Open-Source Project By MindOrks

MindOrks 1.2k Dec 29, 2022
Android-basics-kotlin-tip-time-app - Tip Time app from Android Basics in Kotlin

Tip Time Tip Time app from Android Basics in Kotlin at developers.google.com. It

Ramon Lima e Meira 0 Jan 2, 2022
Environmental-Monitoring-Android-App - This Android App is used to monitor environmental parameters data from remote sensors

Environmental-Monitoring-Android-App - This Android App is used to monitor environmental parameters data from remote sensors. Parameters includes but not limited to temperature, humidity, air quality, level of Ionizing radiation, ...

Francisco Pascal Elias TAMBASAFIDY 0 Jan 4, 2022
Library to change Android launcher App Icon and App Name programmatically !

AppIconNameChanger Change Android App launcher Icon and App Name programmatically ! Download Demo APK from HERE Kindly use the following links to use

Prabhakar Thota 587 Dec 29, 2022
HideDroid is an Android app that allows the per-app anonymization of collected personal data according to a privacy level chosen by the user.

HideDroid An Android App for preserving user privacy HideDroid is an Android app that allows the per-app anonymization of collected personal data acco

null 100 Dec 12, 2022
Water tracker app helps you with daily reminder to drink water. This app is just a trial to test and improve my android development skills.

?? About Me I am a self-thaught developer learning web and android development. This app is just a trial to test and improve my android development sk

Sinan Sonmez (Chaush) 28 Dec 17, 2022
Visual Studio App Center Sample App for Android

Visual Studio App Center Sample App for Android The Android application in this repository and its corresponding tutorials will help you quickly and e

Yourhomeplan 1 Oct 13, 2021
Android app for Ribbit, Broker API Reference App

Ribbit Reference Implementation (Android) The reference implementation for designing the Android user interface of a broker-dealer trading application

Alpaca 12 Nov 24, 2022
Android-Java-App - Notepad app with user and password. SQL Lite

DVNote2 App Android-Java-App Notepad app with user and password Application made in Android Studio with Java language and SQLite database. How does it

DViga 1 Nov 6, 2021
Android Bitcoin market app base on Jetpack Compose and MVI. The app displays current bitcoin market price and history price k-line charts.

compose-bitcoin Android Bitcoin market app base on Jetpack Compose and MVVM & MVI. Features Current bitcoin market price. K-line charts of history pri

Chen Pan 3 May 20, 2022
App for lesson 8 of the Android App Development in Kotlin course on Udacity

Connect to the Internet - Mars Real Estate This is the toy app for Lesson 8 of t

Michael Pessoni 1 Dec 28, 2021
Android Camper parking app written in kotlin for assignment 2 of Mobile App Development

Technical Report Splash view Application shows a splash screen when opened. The

Alvaro Sanchez Domingo 1 Sep 9, 2022
null 1 Jan 7, 2022
Quiz-App - An Android app which have some basic questions

Quiz-App An Android app which have some basic questions Start page Questions pag

Gururaj KL 3 Apr 21, 2022
A Task Management and Habit-building App, representating my journey in Android as well as my first Kotlin App. 🤗 ✨

A Task Management and Habit-building App, representating my journey in Android as well as my first Kotlin App. ?? ✨

Sarthak Musmade 8 May 8, 2022
An Android app for Dokuz Eylul University students can make use of multiple school websites in this one app

An Android app for Dokuz Eylul University students can make use of multiple school websites in this one app

Eyüb Salih Özdemir 3 Apr 13, 2022
Advanced Android Weather App using MVVM Architecture Sample (ViewModel + LiveData + Kotlin + volley) = Weather App

Advanced Android Weather App using MVVM Architecture Sample (ViewModel + LiveData + Kotlin + volley) = Weather App Video Weather.-.HD.720p.mov Introdu

wykee2 4 Jul 12, 2022
Android App to save shares from any app into a file.

Save To… Android App to save shares from any app into a file. Download · Website · Contact About the Project Exporting data from any app into a file m

Daniel Gehrer 2 Oct 19, 2022