Использование Android TrustStore для aSmack в Android 4+ (ICS)

Я не эксперт по магазинам ключей, и мне трудно понять нюансы этого, но вот как далеко я получил:

При создании xmpp-соединения с использованием найденной сборки asmackВот Еще нужно изменить склад доверенных сертификатов, который обычно, так сказать, несколькоисточники в Интернете, делается с помощью этих команд

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();

Это работает найти для более старых версий Android, но под ICS они изменили некоторые вещи, и теперь это не так. Путь теперь другой.

По-видимомуэто можно исправить но я понятия не имею, как.

Очевидно, что нужен метод, который возвращает путь в зависимости от версии SDK, который возвращает необходимую строку для установки sdk-пути, поскольку вы не можете просто вернуть само хранилище ключей в xmpp-соединение.

Что касаетсяэтот этот метод будет выглядеть так:

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;
}

Вот комментатор говорит, что под Android "4.x; /etc/security/cacerts.bks был заменен каталогом / etc / security / cacerts /, содержащим сертификаты в виде отдельных файлов в кодировке PEM. & quot; Тем не менее, я не знаю, какое значение имеет, если таковые имеются, это имеет.

Я также проверил код двух проектов с использованием xmpp и asmack (gtalksms а такжеyaxim но не видел, как они избегают этой проблемы.

Ответы на вопрос(2)

Ваш ответ на вопрос