Getting Started with GeckoView

How to use GeckoView in your Android app.

Building a browser? Check out Android Components, our collection of ready-to-use support libraries!

The following article is a brief guide to embedding GeckoView in an app. For a more in depth tutorial on getting started with GeckoView please read the article we have published on raywenderlich.com.

Configure Gradle

You need to add or edit four stanzas inside your module’s build.gradle file.

1. Set the GeckoView version

Like Firefox, GeckoView has three release channels: Stable, Beta, and Nightly. Browse the Maven Repository to see currently available builds.

ext {
    geckoviewChannel = <channel>
    geckoviewVersion = <version>
}

2. Add Mozilla’s Maven repository

repositories {
    maven {
        url "https://maven.mozilla.org/maven2/"
    }
}

3. Java 17 required support

As GeckoView uses some Java 17 APIs, it requires these compatibility flags:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_17
    targetCompatibility JavaVersion.VERSION_17
}

4. Add GeckoView Implementations

dependencies {
    // ...
  implementation "org.mozilla.geckoview:geckoview-${geckoviewChannel}:${geckoviewVersion}"
}

Add GeckoView to a Layout

Inside a layout .xml file, add the following:

<org.mozilla.geckoview.GeckoView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/geckoview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

Initialize GeckoView in an Activity

1. Import the GeckoView classes inside an Activity:

import org.mozilla.geckoview.GeckoRuntime;
import org.mozilla.geckoview.GeckoSession;
import org.mozilla.geckoview.GeckoView;

2. Create a ``static`` member variable to store the ``GeckoRuntime`` instance.

private static GeckoRuntime sRuntime;

3. In that activity’s onCreate function, add the following:

GeckoView view = findViewById(R.id.geckoview);
GeckoSession session = new GeckoSession();

// Workaround for Bug 1758212
session.setContentDelegate(new GeckoSession.ContentDelegate() {});

if (sRuntime == null) {
  // GeckoRuntime can only be initialized once per process
  sRuntime = GeckoRuntime.create(this);
}

session.open(sRuntime);
view.setSession(session);
session.loadUri("about:buildconfig"); // Or any other URL...

4. Set the windowSoftInputMode to adjustResize for interactive-widget :

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <activity android:name=".YourActivity"
              android:windowSoftInputMode="stateUnspecified|adjustResize" />
</manifest>

You’re done!

Your application should now load and display a webpage inside of GeckoView.

To learn more about GeckoView’s capabilities, review GeckoView’s JavaDoc or the reference application.