aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2016-05-06 12:41:33 +0200
committerTobias Brunner <tobias@strongswan.org>2016-05-06 12:51:49 +0200
commit1130dbc408da340dc90ba0dcb72bf0821167ba09 (patch)
tree94099366bc49b12b70685f7f866347dda2f9517a /src
parentb9522f9d64371c9b620f398852e4ade857105974 (diff)
downloadstrongswan-1130dbc408da340dc90ba0dcb72bf0821167ba09.tar.bz2
strongswan-1130dbc408da340dc90ba0dcb72bf0821167ba09.tar.xz
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.
Diffstat (limited to 'src')
-rw-r--r--src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificateImportActivity.java16
1 files changed, 14 insertions, 2 deletions
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 6b8eb2ee8..ae47e8133 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;
+ }
}
/**