Korzystanie z Android TrustStore dla aSmack w Androidzie 4+ (ICS)

Nie jestem ekspertem od magazynów kluczy i trudno mi zrozumieć niuanse tego, ale tak daleko mam:

Podczas tworzenia połączenia xmpp przy użyciu znalezionej kompilacji asmacktutaj nadal trzeba zmienić magazyn zaufanych certyfikatów, który zwykle, jak powiada, jest wielokrotnyźródła w sieci odbywa się za pomocą tych poleceń

ConnectionConfiguration config = new ConnectionConfiguration(host, Integer.parseInt(port), service);
config.setTruststorePath("/system/etc/security/cacerts.bks");
config.setTruststorePassword("changeit");
config.setTruststoreType("bks");
XMPPConnection connection = new XMPPConnection(connConfig);
connection.connect();

Działa to w przypadku starszych wersji Androida, ale w ICS zmieniły niektóre rzeczy, a teraz już nie. Ścieżka jest teraz inna.

Widoczniemożna to naprawić ale nie mam ziemskiego pomysłu.

Potrzebna jest oczywiście metoda zwracająca ścieżkę w zależności od wersji SDK, która zwraca wymagany ciąg znaków, aby ustawić ścieżkę sdk, ponieważ nie można po prostu zwrócić samego magazynu kluczy do połączenia xmpp.

W odniesieniu doto ta metoda wyglądałaby tak:

private String getTrustStorePath() 
{
 String path = System.getProperty("javax.net.ssl.trustStore");

 if (path == null) 
 {
  if ( Build.VERSION.SDK_INT >= 14 ) 
  {
   //THIS IS THE PART I DONT KNOW
   path="";
  }
  else
  {
   path = "/system/etc/security/cacerts.bks";
  }

  return path;
}

Tutaj komentator mówi, że pod Androidem 4.x; /etc/security/cacerts.bks zastąpiono katalogiem / etc / security / cacerts / zawierającym certyfikaty jako pojedyncze pliki zakodowane PEM. " nie wiem jednak, jakie to ma znaczenie, jeśli w ogóle.

Sprawdziłem również kod dwóch projektów używając xmpp i asmack (gtalksms iyaxim ale nie widziałem, jak unikają tego problemu.

questionAnswers(2)

yourAnswerToTheQuestion