Skip to main content

Manual invocation (7.x Beta)

7.x Beta

This page documents the Bugsee Android SDK 7.x beta. The API surface described here is not final and may change before the stable 7.0 release. For the current production API, see the 6.x documentation.

Built-in report triggers

The SDK can surface the report dialog through two user-facing gestures. Both are controlled by manifest options (or programmatic overrides at Bugsee.launch(...) time):

OptionManifest keyDefault
ReportingTriggerByShakecom.bugsee.option.reporting.triggers.shaketrue
ReportingTriggerByScreenshotcom.bugsee.option.reporting.triggers.screenshotfalse
ReportingTriggerByNotificationcom.bugsee.option.reporting.triggers.notification-bartrue
ReportingTriggerByBroadcastcom.bugsee.option.reporting.triggers.broadcastfalse

Disable the shake trigger in AndroidManifest.xml:

<meta-data
android:name="com.bugsee.option.reporting.triggers.shake"
android:value="false" />

Or override at launch time:

Map<String, Object> options = new HashMap<>();
options.put(Options.ReportingTriggerByShake, false);
options.put(Options.ReportingTriggerByScreenshot, true);
Bugsee.launch(application, options);

Bugsee.showReportDialog(...)

Opens the standard reporting UI. The user can edit any pre-filled values before submitting.

static void showReportDialog();
static void showReportDialog(String summary, String description);
static void showReportDialog(String summary, String description, IssueSeverity severity);
static void showReportDialog(String summary, String description, IssueSeverity severity, ArrayList<String> labels);
Bugsee.showReportDialog();

// Pre-fill summary and description; user can still edit them.
Bugsee.showReportDialog("Checkout is frozen", "The spinner never stops.");

// Pre-fill everything including severity.
Bugsee.showReportDialog(
"Checkout is frozen",
"The spinner never stops.",
IssueSeverity.Blocker);
note

There is no severity-only overload. To set severity without pre-filling the text fields, pass null for both summary and description.

Bugsee.upload(...) — silent upload

Submits a report without showing any UI. Use this when you already collected the details in your own UI.

static void upload(String summary, String description);
static void upload(String summary, String description, IssueSeverity severity);
static void upload(String summary, String description, IssueSeverity severity, List<String> labels);
static void upload(Report report);
static void upload(Report report, Callback1<Boolean> callback);
Bugsee.upload("Checkout frozen", "Spinner never stops", IssueSeverity.High);

ArrayList<String> labels = new ArrayList<>();
labels.add("checkout");
Bugsee.upload("Checkout frozen", "Spinner never stops", IssueSeverity.High, labels);
warning

Do not call upload(...) from automated error paths. For programmatic exception reporting use Bugsee.logException(...) — this keeps traces grouped and rate-limited correctly.

Default severities

Crash, error, and bug reports get a default severity unless one is specified or set from a ReportHandler. Override via manifest:

OptionManifest keyDefault
ReportingDefaultCrashPrioritycom.bugsee.option.reporting.defaults.crash-priorityIssueSeverity.Blocker
ReportingDefaultErrorPrioritycom.bugsee.option.reporting.defaults.error-priorityIssueSeverity.High
ReportingDefaultBugPrioritycom.bugsee.option.reporting.defaults.bug-priorityIssueSeverity.High

ReportHandler — mutate every outgoing report

ReportHandler is the idiomatic 7.x way to inspect or rewrite reports before they are uploaded. It replaces the 6.x ExtendedReportCreatedListener, ReportFieldsFilter, and ReportAttachmentsProvider hooks (see migration guide section 7.2).

Two callbacks are provided as default methods on the interface:

  • onBeforeReportCreated(Report, boolean isTerminating, Runnable completionCallback) — runs before the report payload is assembled.
  • onAfterReportCreated(Report, boolean isTerminating, Runnable completionCallback) — runs after assembly, ideal for attachments.

You must invoke completionCallback.run() for the pipeline to proceed — unless isTerminating is true, in which case the pipeline continues regardless (the process is about to exit).

Bugsee.setReportHandler(new ReportHandler() {
@Override
public void onBeforeReportCreated(Report report, boolean isTerminating, Runnable completionCallback) {
report.setSummary("[" + BuildConfig.FLAVOR + "] " + report.getSummary());
report.setSeverity(IssueSeverity.High);
completionCallback.run();
}

@Override
public void onAfterReportCreated(Report report, boolean isTerminating, Runnable completionCallback) {
report.addAttachment(loadConfigSnapshot());
completionCallback.run();
}
});

Attachments

Call report.addAttachment(...) from onAfterReportCreated. The 6.x 3 attachments × 3 MB quota is preserved — enforce it inside your own handler if relevant.

Callback timeout

The SDK waits at most ReportHandlerCallbackTimeout seconds (default 30) for completionCallback to fire. Tune via manifest:

<meta-data
android:name="com.bugsee.option.config.report-handler-callback-timeout"
android:value="10" />

Severity values

IssueSeverity values: VeryLow, Medium, High, Critical, Blocker. See the configuration reference — Enums for each value's meaning.