- New: New method in the FileUtilities class that allows users to check if the owner of the device has enabled auto rotation.
- New: New methods in the StringUtilities class that add in regex functionality to split URL Query Strings into maps.
- Update: Updates to the RecyclerArrayAdapter class to add more utility functions and better error handling for scenarios where a bad position or item is sent as a argument.
- Update: Update in the FileUtilities class to allow for byte[] file writes. Also added in a FileDownloader Util
- New: The FileMover class has been added and will copy files from one directory to another
- New: New methods in the FileUtilities class for determining the Mimetype of a file
- Bugfix: Fixed a bug that could cause a NPE if a PGAnimatedSvgView is set but not initialized properly.
- New: Created a new package for live data utilities and 2 simple classes, AbsentLiveData and DynamicLiveData. These 2 classes are used to return an object with either null or the passed object so it can be returned along a LiveData approach.
- New: Added in a utilities class ObjectGsonParceler that provides Gson-wrapper functionality to the Android Parceler class.
- New: Added a new method to the AppLockdownUtils class for determining if the app is locked down / a device admin.
- Update: Updated the RecyclerArrayAdapter class to change the default constructor to public.
- Update: Added a new method in the [StackManager] class to allow to remove 1 or more stack items without using the
pop
functionality. - New: New methods in the MiscUtilities class for determining if the device running is an emulator or not.
- New: New Class, RecyclerArrayAdapter, to allow for a simple
listview
approach to a Recyclerview with a wrapper with generics for access.
- New: New Overloaded methods in the ImageUtilities to allow for setting images with Android Uris instead of only Strings.
- New: New methods in the StringUtilities class to work with Spannable Strings which are useful in highlighting text.
- New: Added in a new method for alpha augmentation in the ColorUtilities class.
- New: Added in a new method into the DateUtilities that is used for a shorter date String calculation on the
how long ago
method.
- Update: Updated some of the methods in the GUIUtilities to allow for dismissing a keyboard and not just showing it. Also added in an overloaded
hideKeyboard
method using context + a View. - New: New methods in the ImageUtilities to allow for setting the Image View Color using tint logic. Also added in a method to determine if a passed color argument is a valid resource.
- New: New overloaded methods in the AnimationUtilities to allow users to pass a callback listener whenever the animation completes.
- Update: Updated and renamed the StackRawManager (Formally StackStringsManager) so that it can use all raw types. It now supports Strings, Longs, Integers, and Doubles.
- New: New methods in the MiscUtilities class to get the size of lists / maps via a safe null check.
- New: New methods in the ImageUtilities and FileUtilities classes to be used in conjunction with downloading images from the internet and converting them to a byte array. Also added image rotation methods for simple animation changes.
- New: New methods in the NetworkingUtilities class that allows a really simple builder of an OkHttp3 Client for use in various web-related calls or in the above Image Downloading logic.
- New: New method in the TextField Utilities class to allow for setting a TextView to have copy / paste functionality (IE, to be able to select and copy from it)
- New: New class, AppThreadPool. This class is designed to perform operations on either background or foreground threads depending on the end goal. All items from the ThreadUtilities have been moved to this new class as well.
- New: The L class will now allow Exceptions / Throwables to be passed in via the
L.e()
method. This will print the stacktrace instead of casting into a String and printing. TheL.m()
method has also been altered to check the type of this object and if it is an instance of aThrowable
it will pass it to this new method. - Update: Updated the DisplayManagerUtilities print out method to also return the String being printed out for use in debugging / debug emails.
- New: New methods in the ColorUtilities class that allows for a quick building of ColorStateList(s).
- New: Adding in new methods to the ImageUtilities class for setting different image transformations. Also added in a new custom dependency for the Picasso Image Transformations.
- Bugfix: Fixed an issue where the RetryCallAdapterFactory was causing failed calls to run an infinite loop if an invalid number is passed in.
- New: Added a new method in the MiscUtilities to allow a simple check for whether or not airplane mode is on.
- Bugfix: Fixed an issue where the RetrofitParser was sending back double returns which was causing issues.
- Update: Updated the Build.gradle to support Obfuscation via parent declarations as per this recommendation.
- Update: Updated the DatabaseUtilities class to utilize generics more efficiently so that all non Collection-based return types will no longer require casting.
(Note that returning collections of items like Map<String, Object> from the getPersistedObject() methods will still require casting and will still give a lint warning of an unchecked cast)
- Update: Updated the
buildToolsVersion
to 29 in the gradle file. - Update: Fixed a typo in the NumberUtilities class that was causing casting to be done when it should not have been.
- Update: Updated the FileUtilities class to update the byte --> conversion methods so as to properly follow the Order of Operations.
- Update: Update to the response Objects / Tags in the RetrofitParser class that changes return types. NOTE! This is a breaking change! Added in a new return integer tag,
TAG_RETROFIT_CALL_ERROR_OLD
which returns the older String type from before where the new return object is of typeThrowable
and uses the tagTAG_RETROFIT_CALL_ERROR
. TLDR, either cast return objects with a tag ofTAG_RETROFIT_CALL_ERROR
into Throwable objects or switch and use theTAG_RETROFIT_CALL_ERROR_OLD
tag to maintain working String return types. As a result of this change, I have also removed the 4.printStackTrace()
calls that were originally in the class so that you can throw / read them yourself and not have them auto print to the logcat. - New: Added a new class, RetryCallAdapterFactory that is used in conjunction with Retrofit, Specifically the RetrofitClient class to have better retry logic.
- New: Added a new class, NetworkingUtilities That will be used for misc networking methods and boilerplate code. As of now, currently has code to check DNS status.
- Update: Updated the Following Dependencies:
Retrofit
,Retrofit-Converter-Gson
,OkHttp
,OkHttp-Logging-Interceptor
,Okio
, andGson
. Also updated the CustomAnnotationsBase with said dependency links.
- Bugfix: Fixed a bug in the FileUtilities class that was returning file extensions with 2 periods in front.
- Update: Updates in the FileUtilities class to have better handling of Google Drive file management as well as access to check virtual file status.
- Update: Adding in a few new methods to the FileUtilities class.
- Bugfix: Fixed an issue in the DatabaseUtilities that was causing Reads from a background service to not function properly.
- Update: Updates to the FileUtilities class to include updated find the real Absolute URI when using Oreo or higher devices.
- Update: Moved the absolute Uri methods from the ImageUtilities class to the FileUtilities class and updated many of them.
- Added in bugfix / catch logic for the SharedPrefs class to save and retrieve values if the Android device being used does not support the encryption logic due to API errors.
- Update: Minor update to the TempString class to allow for static instance getter for the purpose of passing in a byte array.
- Update: Overhaul of the ColorUtilities class to add in multiple new features as well as material design color palette support.
- New: Brand New functionality added to the DatabaseUtilities class; added in support for encrypted values.
- Update: More updates in the DatabaseUtilities to allow a transfer of the data to encrypted as well as printing both encrypted and decrypted values.
- Update: Updated the Realm dependency from
4.2.0
to the most current (as of now) version,6.0.0
. - Update: Update the sample classes (Java / Kotlin) to demonstrate how to use the new encryption logic for the DB as well as migrate unencrypted to encrypted. (Remember that different Salt + Password combos will change encryption / decryption logic)
- Delete: Removed MalwareUtilities in the event that the stored array of String values was triggering any alarm or alert on the app submission process by Google.
- New: Added in a valid hex color checker in the ColorUtilities.
- Update: Updated to the most current versions for Android Support, Maps, Recyclerview, and a few other Misc AndroidX & Google API dependencies.
- Bugfix: Updated the logic in the DatabaseUtilities class that was causing an IllegalState exception when a race condition was triggered due to certain circumstances. Basically the Realm object was being instantiated and simultaneously closing when a full Master DB wipe happened within nanoseconds. As a result, I switched the Realm object to a singleton for this method only and it is cleared whenever the deleteDB is called; values were of a difference of 0.153646 milliseconds
IMPORTANT NOTE!
The Realm dependency will be updated in the next release so anyone who needs to support an older version of Realm4.2.0
should NOT move to a version after this.
- Skipped 1.1.0 Update as it had an issue with slow computational operations with mandated increased entropy generation in Encryption Utilities.
- Update: Updated code in the ImageUtilities class for obtaining the absolute Uri path correctly. Now includes support for Google Drive files
- Update: Updated the PGConnectivityReceiver to include a non-deprecated option for wifi checking as well as updating permissions requirements.
- New: Added a new class, ApplicationStateManagementUtilities to serve the primary Application class in an app and allow the dev to track application and activity Foreground + Background changes more effectively and with less work.
- Update: New code in the FileUtilities that allows easier writing to and reading from files. Also added in read from and write to encrypted file methods.
- Update: Added in options to dynamically alter the
PBKDF2_ITERATIONS
from256
to15000
in the EncryptionUtilities as per this article as per user provided params. Also added in some minor updates to logic to prevent erroneous errors.
- New: Added in the code for taking screen shots in the MiscUtilities class.
- Bugfix: Fixed a bug in the DatabaseUtilities class that as preventing custom persisted objects from being deleted properly.
- Update: Added an overloaded method in the L class to allow for an overloaded call to omit the "chunk 2 of 20:" string for easier logging copying / pasting / usage.
- Update: Updated the PGAnimatedSvgView class to add in the option to use a gradient.
- Update: New Utilities in the DateUtilities class for getting simple date via an overloaded method.
- Update: Clarifying an error that can happen by updating the README.
- Update: Updated the SystemUtilities to include references to Pie and Android 10.
- New: Adding new methods into both the SystemUtilities and the MiscUtilities to include code for checking if a device is rooted.
- Update: Updated the DisplayManagerUtilities to include more accurate updates and info. Updated references came from here and here
- Update: Updated the TextField Utilities to include a fix for when text is getting cut off in a TextView nested underneath a Linear Layout.
- New: Added in some commented reference code in the ColorUtilities that can be used to reference alpha --> Hex code value conversions.
- New: Added in a new custom UI Element, the PGAnimatedSvgView class that is used for drawing animated SVG views / icons.
- New: Added in new Layouts in the cutomui package. CustomRelativeLayout, CustomFrameLayout, & CustomLinearLayout. Each of them is used for specifying customized width and height values (IE, max size) which can be tedious if done normally through custom defined UI
- Update: Updated the NumberUtilities to include a safe Integer parser.
- Update: Updated the DatabaseUtilities to include a logging option for CRUD operations.
- Bugfix: Fixed the Database Custom CRUD Operations in the DatabaseUtilities that were using the wrong TypeToken Strings
- New: Added in code in the MiscUtilities class to add more getter methods for use with Maps and also added in regions for easier viewing in an IDE. Also added in some sorting methods and a Generic Sorting class.
- Update: Updated the RetrofitClient class to include some additional options including customizing the Okhttp ConnectionSpec var.
- New: Adding in a new class, GenericComparator which is used in the MiscUtilities update mentioned above for comparing objects dynamically as per their fields. Adds in a huge amount of flexibility with regards to Comparator sorting and should be able to support most data types.
- New: Added in some sample usages of the various new comparator functions listed above in the MyTestActivity class; the name of the function is
sortAndPrintLists()
- Update: Updates to the ShortcutManagerUtilities class to include some new methods as well as catch the 'max number of shortcuts' exception thrown when passing more than 5. (Current max within the OS is 5 at the time of writing this)
- Bugfix: Fixed a bug in DateUtilities where the wrong date formatter was being used in accordance with a mismatched tag
- Update: Added some new methods in the NumberUtilities class to help with getting number values without worrying about null checks.
- Bugfix: Updated the BiometricVerification class to update the required permissions for Android API level 28 (P) and fixed a bug relating to the cancellation listener.
- Update: Updated Permission Utilities to include the Biometric permission for for Android API level 28 (P).
- Update: Updated the DateUtilities to include some new calculators.
- Update: Updated the DatabaseUtilities to include some overloaded methods for maintaining the naming pattern.
- Update: Updated the GUIUtilities to include code for adjusting the status bar color.
- Update: Included new code in the ImageUtilities class for obtaining the absolute Uri path correctly.
- Update: Updated the ViewUtilities class to include code to convert bitmaps, views, and Drawables among different types.
- Bugfix: Fixed multiple calls bug in the RetrofitClient class
- Update: Added in new customization options in the RetrofitClient with respect to cookie response listeners, added in support for the retry count, and added in multiple new builder options.
- Update: Updated the NumberUtilities class to add in some simple functions for int array checks.
- Update: Refactored the MySampleApplication and MyTestActivity into a new samples module.
- New: Added a Java and Kotlin sample class for interacting with the DatabaseUtilities class and how to use it.
- New: Added in some new features to the ImageUtilities to allow for drawable coloring, imageview alterations, and a few other minor operations.
- New: Added in an overloaded method for
"isNullOrEmpty(String... strs)"
in the StringUtilities class for easier checking of multiple values. - New: Added in some new methods for checking that the passed int position in an array or list will not throw an ArrayIndexOutOfBoundsException in the StringUtilities class.
- New: Added in code to adjust screen brightness (without Permissions) in the MiscUtilities class.
- Update: Updated the Display Manager Utilities to have more measurement options for the screen. Also updated the code folding / regions for easier reading
- Update: Updates to the ShortcutManagerUtilities class to include additional data save options and a quick bug fix.
- Note: Version 0.0.79 removed because of small bug in release.
- Update: Fixed a bug in EncryptionUtilities relating to devices that don't support the 256 encryption algorithm
- New: Added in a new class, ShortcutManagerUtilities as a boilerplate saver / code wrapper for the Android Shortcuts api.
- Update: Changed the logic for PGConnectivityReceiver to remove the camel-casing (broadcastReceivers --> broadcastreceivers). Note that this WILL break any manifest files that declare the Connectivity Receiver to allow more than one listener to be present in the class.
- Delete: Removed the FunctionalRecyclerview class + Package as it did not serve a purpose anymore.
- Update: Updated the Ticker class to include a public static method that allows changing of the output logging to a single line for less logcat clutter.
- New: Added in new Dimentions (@dimen/) vars for the different Text sizes for reference.
- Update: Changed the Permission Utilities logic to remove the show rationale dialog as it was causing problems for people who had other dialogs in place to manage it.
- Update: Rework of SharedPrefs and EncryptionUtilities to finally fix the writing encrypted values to SP bug.
- Update: Updated the MiscUtilities class to add in the ability to print byte arrays.
- New: Added a new class, StackStringsManager which is functionally very similar to the StackManager class except it manages stacks of Strings as opposed to a predefined set of enum values. Also removed the old StackManagerObjects class as it was superseded by the StringsStackManager.
- New: Updated the README to include instructions on Obfuscation and utilizing Proguard with PGMacTips.
- New: Added in new PGMaterialRippleLayout class for Ripple effect backgrounds.
- New / Update: Updated old animations under the R.anim folder as well as added new ones.
- New: Added in some new icons under the mipmap folders
- Update: Updated the PGConnectivityReceiver to remove the camel-casing (broadcastReceivers --> broadcastreceivers). Note that this WILL break any manifest files that declare the Connectivity Receiver with newer instructions on how to operate with respect to newer APIs not registering the receiver.
-
New: Added in new gradle.properties entries that allow for AndroidX Support. Put these in your gradle.properties file to mirror this:
# Jetpack Library info can be found here: https://developer.android.com/jetpack/androidx/ # More info at this link: https://developer.android.com/jetpack/androidx/migrate android.useAndroidX=true android.enableJetifier=true
-
New: Removed the /ignore on the build.gradle file so it will be included in the next build; that wasy it can be used as a sample.
-
Update: Updating the CustomAnnotationsBase to reference AndroidX support as well as updating Support lib: design - 28.0.0 and reverting back some of the changes from AndroidX migration so as to not cause conflict issues.
-
Bugfix: Users were indicating an issue with regards to updating gradle to 3.2.0 issue is here and this release should fix said issue, if not, will update and increment version afterwards.
-
Update: Adding in new functions to the DateUtilities class for use in simple getters for a date String in the format of YYYY-MM-DD.
- Fix: Fixed a bug in VolleyUtilities class that was preventing custom Content-Type headers from being observed.
- New: Adding in new functions to the DateUtilities class for use in simple getters.
- Update: Updating the CustomAnnotationsBase to reference newest versions.
- Update: Updated the Picasso library to the most current version and rewrote ImageUtilities to match the new structure. Note that image caching is handled automatically now and no longer has an overloaded method to pass in a percent max cache integer. Also, Context was removed as a required param for calls as it is not required anymore. Lastly, added region mapping in ImageUtilities for easier source code reading.
- Update: Changed the code in the PGMacTipsConfig class to auto-initialize more fields.
- Update: Updated the Gradle Build to Version 3.1.3 as per the recent Android Studio update. Note, did not use version 3.2.1 as per this issue.
- Update Updated the maps play services to version 16.0.0. Please note that I also had to reorganize where the
google()
andmaven { url "https://maven.google.com" }
items were placed within the build.gradle for whatever reason. - New: Added in a reference to the Play-Services-Basement Issue into the ReadMe. This definitely took some time to resolve so I am placing it there for anyone else who has the issue.
- Update: Updating the android.enableAapt2=true field in the gradle.properties class as per Google deprecation warnings.
- Update: Updating the RetrofitClient with retry functionality.
- New: Added in new Dialog static methods and variables to the Dialog Utilities class. The new static int references of NO_RESPONSE, YES_RESPONSE, and SIMPLE_CLOSE_RESPONSE mirror their respective counterparts of FAIL_RESPONSE, SUCCESS_RESPONSE, and OTHER_RESPONSE; they were added for clarification.
- New: Added in 2 new images: close_x_black, and close_x_white which are simple close icons. They are used in Dialog Utilities and can be accessed from outside the library as well.
- New: Added in new class, ClientSSLSocketFactory, for creating SSLSockets to use in the VolleyUtilities class. This is mirroring the response given in this stackoverflow answer after stumbling upon this error yesterday. For more information on this issue, see the TLS topic and how Google's Volley library relates in my links above.
- Rename: Renamed the broadcastreceivers package name here to remove the camel-casing (broadcastReceivers --> broadcastreceivers). Note that this WILL break any manifest files that declare the Connectivity Receiver as it changes the pathing. Just rename it your manifest and it should work the same.
- Rename: Renamed SamplePojo @SerializedName field that was a duplicate to manually trigger IllegalStateException back to different one.
- Fix: Fixed a bug in DatabaseUtilities that was causing a NullPointerException to be thrown if no items could be found to be deleted / de-persisted. (Should also fix objects not being removed properly from the DB)
- Update: Updated the StackManager class to include overloaded methods for single stack management of one type of enum, added in getters for the size, and changed the behavior so it will display errors in the log rather than throwing StackManagerExceptions.
- Update: Updated the MiscUtilities to include a simple function to convert the passed enum into a list of said enum values.
- Revert: Reverted changes made in the MapUtilities, SphericalUtils , and ScaleBar classes as they were not the direct cause of this issue.
- Revert: Reverted the changes in the CustomAnnotationsBase class for the same reasons mentioned above.
- Update: Updated the Realm Version from 3.0.0 to 4.2.0. Those wishing to use previous versions of Realm (or those that have a version lower than 4.2.0 declared in their own gradle file) will need to use PGMacTips version 0.0.64 or below.
- Update: Made multiple internal edits to the DatabaseUtilities class that should not affect existing code using it. Also added in logging to indicate when objects won't save due to multiple @SerializedName Strings; as seen here. For the DefaultRealmModule issue, added in new module class to prevent more future crashing.
- Note: Version 65 was skipped as the initial release missed a few bugs.
- Fix: Fixed a bug in the MapUtilities, SphericalUtils , and ScaleBar classes; specifically how it conflicted with other build variants in projects using a different version of Google Maps. See the link here for more details.
- Update: Removed the OAuthUtilities class as it was mostly deprecated and unused anyway.
- Update: Removed the CustomAnnotationsBase.Dependencies.GooglePlayServices_Maps annotation from the CustomAnnotationsBase class as it will no longer be needed as per fixes mentioned in this update.
- Update: Changed the way the Realm dependency is declared in the gradle files as per this stackoverflow answer.
- Note: Version 63 was skipped as the initial release missed a few bugs.
- Update: Refactored the LyftUtilities and UberUtilities into a new package named MiscThirdPartyUtilities
- New: Added some new functions into the NumberUtilities class for simple calculations.
- Fix: Fixed a bug relating to the RetrofitParser and how it parsed objects that were not null, but contained no elements.
- Fix: Fixed bugs relating to RetrofitParser and updated the responses.
- New: Added in some new StringUtilities to calculate the LevenshteinDistance
- New: Added in the BiometricUtilities package and BiometricVerification class, which allows access to fingerprint checking.
- Improvement: Refactored SharedPrefs to have all Encrypted aspects merged into the one file. Deprecated the older SharedPrefsEncrypted class and removed the dependency. The class should work identical to before but now has the option to use either encryption or not on the fly without having to issue a new build.
- Update: Altered the ThreeButtonDialog in DialogUtilities class to resize proportionally for less text and allowed auto-resizing whenever one button text is sent in as null; this will allow for <3 buttons should someone choose to omit one purposefully.
- Update: Refactored the EncryptionUtilities class to utilize better practices in saving and persisting data. Pulled most of the code from this repository.
- Update: Refactored getPackageName() out of MiscUtilities and into SystemUtilities
- Update: Refactored the various getUTF8(), getISO8859(), etc calls out of EncryptionUtilities and into MiscUtilities.
- Improvement: Updated PermissionUtilities to add overloaded methods to take in String arrays for permissions instead of the dedicated enum.
- Fix: Updated the SharedPrefsEncrypted class to designate better
- Improvement: Moved the larger .gif files to a separate folder so that they won't take up space in the build files. They can now be found in the sample_gifs directory in the root.
- Update: Changed the logo icons as well as deleting the old ic images.
- Update: Changed the documentation for the SMSBroadcastReceiver to clarify some things and make sure the manifest sample info gets included with the javadoc files.
- Fix: Updated multiple portions of the app with if checks on the version so as to prevent exceptions from arising when hitting them with API levels <16.
- Update: Refactored the package naming for multiple directories (Google Vision, customUI, etc) and moved files around to make for a more logical hierarchy.
- Update: Removed dup class GPSTracker
- New: Custom Annotations. Added in new custom 'requiresDependency' and 'requiresDependencies' annotations that indicate which classes and methods use certain dependencies so as to prevent crashes when they are excluded.
- Update: Added in new documentation to many classes to help clear up ambiguity
- Fix: Multiple bug fixes across the library to catch unique bugs that may be cause by omitting certain libraries but maintaining this one.
- New: Added in Javadoc zip file for documentation purposes.
- New: Added in the getContactData() method to ContactUtilities which allows a single call to pull all data from the contact in one call as opposed to the only other way being the nested cursors call, which can be very slow.
- New: Upgraded ContactUtilities to include 3 new overloaded methods (getAllContacts()) which will retrieve ALL data from the contact DB. Note that this is slower as it is doing nested calls, but it is definitely pulling all info.
- Fix: Fixed ContactUtilities issues where crashes were happening due to not properly declaring the permissions needed. Should not be annotated over the respective methods.
- Fix: Reduced minimum required SDK to 15 (from 17) as this was causing problems for those setting lower minimum SDKs.
- New: Changelog will be kept up to date from this point forward.