-
Notifications
You must be signed in to change notification settings - Fork 16
Open
Labels
investigateTo validate if still an issueTo validate if still an issuereviewedFor library maintainers only. Indicates that this issue was reviewed.For library maintainers only. Indicates that this issue was reviewed.
Description
I use this library to detect if data-sharing is enabled, by using this:
implementation("com.iabgpp:iabgpp-encoder:3.2.3")
/** @return returns null if not initialized yet, or initialized and it's ok to share data.
* When returned true, it means all kinds of data sharing is allowed:SALE_OPT_OUT, SHARING_OPT_OUT, TARGETED_ADVERTISING_OPT_OUT.
* Otherwise returns false*/
fun isDataShareAllowed(context: Context): Boolean? {
val defaultSharedPreferences = PreferenceUtil.getDefaultSharedPreferences(context)
val gppString = defaultSharedPreferences.getString("IABGPP_HDR_GppString", null) ?: return null
when(gppString){
"DBABL~BVQqAAAAAg" -> return true
"DBABL~BVQVAAAAAg" -> return false
}
CrashlyticsUtil.logException("AdConsentUtil isDataShareAllowed unknown gppString detected:$gppString, so using fallback")
val model = GppModel(gppString)
val usNatSection1 = model.getSection(UsNat.ID)
val fieldsToCheck = arrayOf(UsNatField.SALE_OPT_OUT, UsNatField.SHARING_OPT_OUT, UsNatField.TARGETED_ADVERTISING_OPT_OUT)
for (fieldName in fieldsToCheck) {
if (usNatSection1.hasField(fieldName)) {
val fieldValue = usNatSection1.getFieldValue(fieldName) ?: continue
if (fieldValue == 2)
continue
return false
}
}
return true
}
Recently I got a crash of this sort, reported via Crashlytics, on the line of "getFieldValue":
...
Caused by com.iab.gpp.encoder.error.DecodingException: Unable to decode KnownChildSensitiveDataConsents
at com.iab.gpp.encoder.bitstring.BitStringEncoder.decode(BitStringEncoder.java:49)
at com.iab.gpp.encoder.segment.UsNatCoreSegment.decodeSegment(UsNatCoreSegment.java:107)
at com.iab.gpp.encoder.segment.UsNatCoreSegment.decodeSegment(UsNatCoreSegment.java:16)
at com.iab.gpp.encoder.segment.AbstractLazilyEncodableSegment.getFieldValue(AbstractLazilyEncodableSegment.java:31)
at com.iab.gpp.encoder.section.AbstractLazilyEncodableSection.getFieldValue(AbstractLazilyEncodableSection.java:51)
Caused by com.iab.gpp.encoder.datatype.SubstringException: java.lang.StringIndexOutOfBoundsException: begin 56, end 62, length 60
at com.iab.gpp.encoder.datatype.EncodableFixedIntegerList.substring(EncodableFixedIntegerList.java:54)
at com.iab.gpp.encoder.bitstring.BitStringEncoder.decode(BitStringEncoder.java:44)
at com.iab.gpp.encoder.segment.UsNatCoreSegment.decodeSegment(UsNatCoreSegment.java:107)
at com.iab.gpp.encoder.segment.UsNatCoreSegment.decodeSegment(UsNatCoreSegment.java:16)
at com.iab.gpp.encoder.segment.AbstractLazilyEncodableSegment.getFieldValue(AbstractLazilyEncodableSegment.java:31)
at com.iab.gpp.encoder.section.AbstractLazilyEncodableSection.getFieldValue(AbstractLazilyEncodableSection.java:51)
Caused by java.lang.StringIndexOutOfBoundsException: begin 56, end 62, length 60
at java.lang.String.checkBoundsBeginEnd(String.java:4519)
at java.lang.String.substring(String.java:2537)
at com.iab.gpp.encoder.datatype.EncodableFixedIntegerList.substring(EncodableFixedIntegerList.java:52)
at com.iab.gpp.encoder.bitstring.BitStringEncoder.decode(BitStringEncoder.java:44)
at com.iab.gpp.encoder.segment.UsNatCoreSegment.decodeSegment(UsNatCoreSegment.java:107)
at com.iab.gpp.encoder.segment.UsNatCoreSegment.decodeSegment(UsNatCoreSegment.java:16)
at com.iab.gpp.encoder.segment.AbstractLazilyEncodableSegment.getFieldValue(AbstractLazilyEncodableSegment.java:31)
at com.iab.gpp.encoder.section.AbstractLazilyEncodableSection.getFieldValue(AbstractLazilyEncodableSection.java:51)
Why does it occur?
Metadata
Metadata
Assignees
Labels
investigateTo validate if still an issueTo validate if still an issuereviewedFor library maintainers only. Indicates that this issue was reviewed.For library maintainers only. Indicates that this issue was reviewed.