From: Tobias Brunner Date: Fri, 6 May 2016 10:41:33 +0000 (+0200) Subject: android: Avoid IllegalStateException when importing certificates X-Git-Tag: 5.4.1dr2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1130dbc408da340dc90ba0dcb72bf0821167ba09;p=thirdparty%2Fstrongswan.git android: Avoid IllegalStateException when importing certificates When certificates are imported via Storage Access Framework we did handle the selection directly in onActivityResult(). However, at that point the activity might apparently not yet be resumed. So committing FragmentTransactions could result in IllegalStateExceptions due to the potential state loss. To avoid that we cache the returned URI and wait until onPostResume() to make sure the activity's state is fully restored before showing the confirmation dialog. --- diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificateImportActivity.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificateImportActivity.java index 6b8eb2ee8a..ae47e81330 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificateImportActivity.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificateImportActivity.java @@ -52,6 +52,7 @@ public class TrustedCertificateImportActivity extends AppCompatActivity "application/x-pem-file", "application/pkix-cert" }; + private Uri mCertificateUri; @TargetApi(Build.VERSION_CODES.KITKAT) @Override @@ -82,18 +83,29 @@ public class TrustedCertificateImportActivity extends AppCompatActivity @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case OPEN_DOCUMENT: if (resultCode == Activity.RESULT_OK && data != null) { - importCertificate(data.getData()); + mCertificateUri = data.getData(); return; } finish(); return; } - super.onActivityResult(requestCode, resultCode, data); + } + + @Override + protected void onPostResume() + { + super.onPostResume(); + if (mCertificateUri != null) + { + importCertificate(mCertificateUri); + mCertificateUri = null; + } } /**