Код: Выделить всё
that call Intent(Intent.ACTION_SEND)
Все мои классы и объекты реализуют Parcelable и Serialized, проблема в том, что я не могу найти LinkedHashSet, который причина проблемы.
Близнецы не могут мне помочь, и я безрезультатно пытался изолировать проблему.
Код: Выделить всё
fun createKmlFile(context: Context, kml: String, trailName: String): File? {
try {
// crea la directory kml_files nella cache dell'app se non esiste già,
// e poi salva il file trail.kml all'interno di quella directory
val cacheDir = context.cacheDir
val kmlDirectory = File(cacheDir, "kml_files")
// Crea la directory se non esiste
if (!kmlDirectory.exists()) {
kmlDirectory.mkdirs()
}
val file = File(kmlDirectory, "$trailName.kml")
val fileWriter = FileWriter(file)
fileWriter.write(kml)
fileWriter.close()
return file
} catch (e: Exception) {
Log.e("Vagabondo", "Error creating KML file", e)
return null
}
}
Код: Выделить всё
fun shareTrail(kml: String, trailName: String, context: Context) {
val kmlFile = createKmlFile(context, kml, trailName)
if (kmlFile != null) {
val kmlUri = FileProvider.getUriForFile(
context,
"${context.packageName}.fileprovider",
kmlFile
)
Log.d("Vagabondo", "created kml uri: $kmlUri")
val sendIntent = Intent(Intent.ACTION_SEND).apply {
type = "application/vnd.google-earth.kml+xml"
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
putExtra(EXTRA_STREAM, kmlUri)
}
launcher.launch(sendIntent)
}
}
Код: Выделить всё
FATAL EXCEPTION: main
Process: net.xxx, PID: 21214
android.os.BadParcelableException: Parcelable encountered IOException writing serializable object (name = java.util.LinkedHashSet)
at android.os.Parcel.writeSerializable(Parcel.java:2797)
at android.os.Parcel.writeValue(Parcel.java:2563)
at android.os.Parcel.writeValue(Parcel.java:2362)
at android.os.Parcel.writeList(Parcel.java:1415)
at android.os.Parcel.writeValue(Parcel.java:2506)
at android.os.Parcel.writeValue(Parcel.java:2362)
at android.os.Parcel.writeMapInternal(Parcel.java:1266)
at android.os.Parcel.writeMap(Parcel.java:1248)
at android.os.Parcel.writeValue(Parcel.java:2476)
at android.os.Parcel.writeValue(Parcel.java:2362)
at android.os.Parcel.writeMapInternal(Parcel.java:1266)
at android.os.Parcel.writeMap(Parcel.java:1248)
at android.os.Parcel.writeValue(Parcel.java:2476)
at android.os.Parcel.writeValue(Parcel.java:2362)
at android.os.Parcel.writeList(Parcel.java:1415)
at android.os.Parcel.writeValue(Parcel.java:2506)
at android.os.Parcel.writeValue(Parcel.java:2362)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:1298)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1843)
at android.os.Bundle.writeToParcel(Bundle.java:1389)
at android.os.Parcel.writeBundle(Parcel.java:1367)
at android.os.Parcel.writeValue(Parcel.java:2479)
at android.os.Parcel.writeValue(Parcel.java:2369)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:1298)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1843)
at android.os.Bundle.writeToParcel(Bundle.java:1389)
at android.os.Parcel.writeBundle(Parcel.java:1367)
at android.os.Parcel.writeValue(Parcel.java:2479)
at android.os.Parcel.writeValue(Parcel.java:2369)
at android.os.BaseBundle.dumpStats(BaseBundle.java:1917)
at android.os.BaseBundle.dumpStats(BaseBundle.java:1954)
at android.app.servertransaction.PendingTransactionActions$StopInfo.collectBundleStates(PendingTransactionActions.java:123)
at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:139)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8177)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Caused by: java.io.NotSerializableException: com.google.android.gms.maps.model.LatLng
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1240)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354)
at java.util.HashSet.writeObject(HashSet.java:288)
at java.lang.reflect.Method.invoke(Native Method)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1079)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1568)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1490)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354)
at android.os.Parcel.writeSerializable(Parcel.java:2792)
at android.os.Parcel.writeValue(Parcel.java:2563)
at android.os.Parcel.writeValue(Parcel.java:2362)
at android.os.Parcel.writeList(Parcel.java:1415)
at android.os.Parcel.writeValue(Parcel.java:2506)
at android.os.Parcel.writeValue(Parcel.java:2362)
at android.os.Parcel.writeMapInternal(Parcel.java:1266)
at android.os.Parcel.writeMap(Parcel.java:1248)
at android.os.Parcel.writeValue(Parcel.java:2476)
at android.os.Parcel.writeValue(Parcel.java:2362)
at android.os.Parcel.writeMapInternal(Parcel.java:1266)
at android.os.Parcel.writeMap(Parcel.java:1248)
at android.os.Parcel.writeValue(Parcel.java:2476)
at android.os.Parcel.writeValue(Parcel.java:2362)
at android.os.Parcel.writeList(Parcel.java:1415)
at android.os.Parcel.writeValue(Parcel.java:2506)
at android.os.Parcel.writeValue(Parcel.java:2362)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:1298)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1843)
at android.os.Bundle.writeToParcel(Bundle.java:1389)
at android.os.Parcel.writeBundle(Parcel.java:1367)
at android.os.Parcel.writeValue(Parcel.java:2479)
at android.os.Parcel.writeValue(Parcel.java:2369)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:1298)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1843)
at android.os.Bundle.writeToParcel(Bundle.java:1389)
at android.os.Parcel.writeBundle(Parcel.java:1367)
at android.os.Parcel.writeValue(Parcel.java:2479)
at android.os.Parcel.writeValue(Parcel.java:2369)
at android.os.BaseBundle.dumpStats(BaseBundle.java:1917)
at android.os.BaseBundle.dumpStats(BaseBundle.java:1954)
at android.app.servertransaction.PendingTransactionActions$StopInfo.collectBundleStates(PendingTransactionActions.java:123)
at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:139)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8177)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Подробнее здесь: https://stackoverflow.com/questions/787 ... writing-se