> For the complete documentation index, see [llms.txt](https://docs.apryse.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.apryse.com/android/changelogs/version-7/v7-0-0.md).

# Version 7.0.0 Changelog (July 25, 2019)

World's #1 PDF SDK Library for Web, Mobile, Server, Desktop

Version: 7.0.0.71969

Release Date: July 25, 2019

## New features

* Style editor is now available for text form field, supported style properties are: text color, text size, and font
* New [`RadioGroupFieldCreate`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/tools/RadioGroupFieldCreate.html) tool for creating radio button
* Adds ability to group selected annotations, ungroup an existing group and comment on a group. When creating a group, the most recently added annotation within the selected annotations will be treated as the primary annotation
* Custom HTTP/HTTPS request headers are now supported when using [`ViewerBuilder`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/config/ViewerBuilder.html)
* Custom navigation icon is now supported when using [DocumentActivity](/android/open-save-document/open.md)
* See cross-platform release notes here: [7.0.0 Changelog](https://github.com/iKettles/apryse-gitbook/tree/main/core/guides/release-notes.md)

## Fixed

* Fixed issue where existing annotations in a document is ignored when opening in [`CollabViewerTabHostFragment`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/collab/ui/viewer/CollabViewerTabHostFragment.html)
* Fixed issue where stamp rotation behaves strangely when the annotation toolbar is open
* Fixed issue where signature bounding box is larger than it needs
* Fixed issue where keyboard may not show up when opening the go to dialog on Pie devices

## Breaking changes

* A number of previously deprecated classes and methods are now removed, see API changes below for details.
* AWS access credentials used for Apryse Android Gradle integration are no longer needed. The credentials are now invalid. See updated integration guide here: [Integrate with Gradle](/android/get-started/integration.md). An example of the updated integration will look like this:

{% tabs %}
{% tab title="Groovy" %}
{% code lineNumbers="true" %}

```groovy
allprojects {
    repositories {
        // ... Anything else you already had
        google()
        maven {
            url "https://pdftron-maven.s3.amazonaws.com/release"
        }
    }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

## APIs

### Apryse package

#### CheckBoxWidget

new class: `CheckBoxWidget`

#### ComboBoxWidget

new class: `ComboBoxWidget`

#### ListBoxWidget

new class: `ListBoxWidget`

#### PushButtonWidget

new class: `PushButtonWidget`

#### RadioButtonGroup

new class: `RadioButtonGroup`

#### RadioButtonWidget

new class: `RadioButtonWidget`

#### TextWidget

new class: `TextWidget`

#### DigitalSignatureField

new class: `DigitalSignatureField`

#### DigitalSignatureFieldIterator

new class: `DigitalSignatureFieldIterator`

#### SignatureWidget

new class: `SignatureWidget`

#### GeometryCollection

new class: `GeometryCollection`

### PDFViewCtrlTools package

#### SignatureFragmentAdapter

moved class: `SignatureFragmentAdapter` from `com.pdftron.pdf.adapter` to `com.pdftron.pdf.dialog.signature`

#### PopulateAnnotationInfoListTask

removed class: `PopulateAnnotationInfoListTask`

removed constructor: `PopulateAnnotationInfoListTask(PDFViewCtrl)`

removed method: `void setCallback(Callback)`

#### Callback

removed interface: `Callback`

removed method: `void getAnnotationsInfo(ArrayList<AnnotationInfo>, boolean)`

#### ToolStyleConfig

new method: `int getDefaultTextColor(Context, int)`

new method: `float getDefaultTextSize(Context, int)`

removed method: `float getDefaultFontSize(Context)`

removed method: `float getDefaultFontSize(Context, int, int)`

removed method: `float getDefaultTextSize(Context)`

#### ViewerBuilder

new method: `ViewerBuilder usingCustomHeaders(JSONObject)`

#### DocumentActivity

new static final field: `int DEFAULT_NAV_ICON_ID`

new static final field: `String EXTRA_CUSTOM_HEADERS`

new static final field: `String EXTRA_NAV_ICON`

new static method: `void openDocument(Context, Uri, String, JSONObject, ViewerConfig)`

new static method: `void openDocument(Context, Uri, String, JSONObject, ViewerConfig, int)`

#### CreateSignatureFragment

moved class: `CreateSignatureFragment` from `com.pdftron.pdf.dialog` to `com.pdftron.pdf.dialog.signature`

#### DialogSignatureInfo

moved class: `DialogSignatureInfo` from `com.pdftron.pdf.dialog` to `com.pdftron.pdf.dialog.signature`

#### SavedSignaturePickerFragment

moved class: `SavedSignaturePickerFragment` from `com.pdftron.pdf.dialog` to `com.pdftron.pdf.dialog.signature`

#### SignatureDialogFragment

moved class: `SignatureDialogFragment` from `com.pdftron.pdf.dialog` to `com.pdftron.pdf.dialog.signature`

#### AnnotationListSorter

new static method: `int compareCreationDate(AnnotationInfo, AnnotationInfo)`

#### SignatureDialogFragmentBuilder

new class: `SignatureDialogFragmentBuilder`

new constructor: `SignatureDialogFragmentBuilder()`

new static final field: `Creator<SignatureDialogFragmentBuilder> CREATOR`

new method: `Fragment build(Context)`

new method: `void checkArgs(Context)`

new method: `Bundle createBundle(Context)`

new method: `int describeContents()`

new method: `SignatureDialogFragmentBuilder usingColor(int)`

new method: `SignatureDialogFragmentBuilder usingConfirmBtnStrRes(int)`

new method: `SignatureDialogFragmentBuilder usingDigitalSignature(boolean)`

new method: `SignatureDialogFragmentBuilder usingPressureSensitive(boolean)`

new method: `SignatureDialogFragmentBuilder usingShowSavedSignatures(boolean)`

new method: `SignatureDialogFragmentBuilder usingShowSignatureFromImage(boolean)`

new method: `SignatureDialogFragmentBuilder usingStrokeWidth(float)`

new method: `SignatureDialogFragmentBuilder usingTargetPage(int)`

new method: `SignatureDialogFragmentBuilder usingTargetPoint(PointF)`

new method: `SignatureDialogFragmentBuilder usingTargetWidget(Long)`

new method: `void writeToParcel(Parcel, int)`

#### AnnotStyle

new method: `boolean hasFont()`

new method: `boolean hasTextStyle()`

new method: `boolean isWidget()`

removed method: `boolean isTextMarkup()`

#### RulerItem

removed static method: `void saveToAnnot(Annot, RulerItem)`

#### AnnotEditRectGroup

new method: `boolean onQuickMenuClicked(QuickMenuItem)`

new method: `void selectAnnot(Annot, int)`

#### DigitalSignatureLegacy

removed class: `DigitalSignatureLegacy`

removed constructor: `DigitalSignatureLegacy(PDFViewCtrl)`

removed method: `int getCreateAnnotType()`

removed method: `ToolModeBase getToolMode()`

removed method: `boolean isCreatingAnnotation()`

removed method: `void onCreate()`

removed method: `boolean onQuickMenuClicked(QuickMenuItem)`

removed method: `boolean onSingleTapConfirmed(MotionEvent)`

#### RadioGroupFieldCreate

new method: `void setTargetGroup(RadioButtonGroup)`

removed method: `void setTargetField(Field)`

#### RulerCreate

removed static method: `String getRulerLabel(RulerItem, double, double, double, double)`

#### Signature

removed method: `boolean isShowDefaulSignature()`

removed method: `void setShowDefaulSignature(boolean)`

#### TextFieldCreate

new method: `void initTextField()`

new method: `boolean onDown(MotionEvent)`

#### Tool

new static method: `Pair<ToolMode, ArrayList<Annot>> canSelectGroupAnnot(PDFViewCtrl, Annot, int)`

new static method: `String findPDFTronFontName(Context, String)`

new static method: `void updateFontMap(Context, int, String, String)`

#### ToolManager

new method: `void addAnnotationsSelectionListener(AnnotationsSelectionListener)`

new method: `void raiseAnnotationsSelectionChangedEvent(HashMap<Annot, Integer>)`

new method: `void removeAnnotationsSelectionListener(AnnotationsSelectionListener)`

removed method: `boolean getAddImageStamperTool()`

#### AnnotationsSelectionListener

new interface: `AnnotationsSelectionListener`

new method: `void onAnnotationsSelectionChanged(HashMap<Annot, Integer>)`

#### AnnotUtils

new static field: `String VALUE_Group`

new static method: `int compareCreationDate(Annot, Annot)`

new static method: `int compareDate(Annot, Annot)`

new static method: `void createAnnotationGroup(PDFViewCtrl, Annot, ArrayList<Annot>)`

new static method: `Date getAnnotLocalCreationDate(Annot)`

new static method: `Annot getPrimaryAnnotInGroup(PDFViewCtrl, ArrayList<Annot>)`

new static method: `boolean hasReplyTypeReply(Annot)`

new static method: `void ungroupAnnotations(PDFViewCtrl, ArrayList<Annot>)`

removed static method: `boolean hasInReplyTo(Annot)`

#### BasicHTTPDownloadTask

new constructor: `BasicHTTPDownloadTask(Context, BasicHTTPDownloadTaskListener, String, JSONObject, File)`

#### BasicHeadRequestTask

new constructor: `BasicHeadRequestTask(Context, BasicHeadRequestTaskListener, String, JSONObject)`

#### SignaturePickerDialog

removed class: `SignaturePickerDialog`

removed constructor: `SignaturePickerDialog(Context, int, float)`

removed constructor: `SignaturePickerDialog(Context, int, int, float)`

removed method: `LinkedList<LinkedList<PointF>> getPaths()`

removed method: `RectF getSignatureBoundingBox()`

removed method: `void setDialogListener(SignaturePickerDialogListener)`

removed method: `void setMakeDefaultCheckboxVisibility(int)`

removed method: `boolean shouldOverwriteOldSignature()`

removed method: `void updateLayout()`

#### SignaturePickerDialogListener

removed interface: `SignaturePickerDialogListener`

removed method: `void popupDismissed(AnnotStyleDialogFragment)`

removed method: `void signatureDone(boolean)`

### pdfnet-demo-utils package

#### PopulateAllFilesTask

removed class: `PopulateAllFilesTask`

removed constructor: `PopulateAllFilesTask(Context, File, List<FileInfo>, Object, Comparator<FileInfo>, boolean, Callback)`

#### Callback

removed interface: `Callback`

removed method: `void onPopulateAllFilesTaskFinished()`

removed method: `void onPopulateAllFilesTaskProgressUpdated()`

removed method: `void onPopulateAllFilesTaskStarted()`

#### RetrieveAllFilesCacheTask

removed class: `RetrieveAllFilesCacheTask`

removed constructor: `RetrieveAllFilesCacheTask(List<FileInfo>, Object, Object, Comparator<FileInfo>, Callback)`

#### Callback

removed interface: `Callback`

removed method: `void onRetrieveFileInfoListTaskFinished()`

#### RetrieveAllFilesHeaderCacheTask

removed class: `RetrieveAllFilesHeaderCacheTask`

removed constructor: `RetrieveAllFilesHeaderCacheTask(Object, Callback)`

#### Callback

removed interface: `Callback`

removed method: `void onRetrieveAllFilesHeaderCacheTaskFinished(HashMap<String, FileHeader>)`

#### SaveFileListCacheTask

removed class: `SaveFileListCacheTask`

removed constructor: `SaveFileListCacheTask(List<FileInfo>, Object, Object, HashMap<String, FileHeader>)`

#### SortAllFilesTask

removed class: `SortAllFilesTask`

removed constructor: `SortAllFilesTask(List<FileInfo>, Object, Comparator<FileInfo>, Callback)`

#### Callback

removed interface: `Callback`

removed method: `void onSortAllFilesTaskFinished()`

removed method: `void onSortAllFilesTaskStarted()`

#### UpdateAllFilesTask

removed class: `UpdateAllFilesTask`

removed constructor: `UpdateAllFilesTask(ArrayList<FileInfo>, Object, Object, Object, Comparator<FileInfo>, List<FileInfo>, List<FileInfo>, Callback)`

#### Callback

removed interface: `Callback`

removed method: `void onUpdateAllFilesTaskFinished(UpdateAllFilesTask, boolean)`

removed method: `void onUpdateAllFilesTaskStarted()`

### pdftron-collab package

#### AnnotationListContent

new constructor: `AnnotationListContent(String, int, int, String, String, Date, Annot, double, String, Date, String, int, float, int)`

new method: `String getId()`

removed constructor: `AnnotationListContent(int, int, String, String, Date, Annot, double, String, Date, String, int, float, int)`

#### XfdfUtils

new static method: `AnnotationEntity toAnnotationEntity(PDFDoc, Annot)`


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.apryse.com/android/changelogs/version-7/v7-0-0.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
