Код: Выделить всё
var myDiscoveryListener = MyDiscoveryListener(mHandler)
var myConnectableDeviceListener = MyConnectableDeviceListener(mHandler)
var mDiscoveryManager: DiscoveryManager
init {
DiscoveryManager.init(applicationContext)
mDiscoveryManager = DiscoveryManager.getInstance()
mDiscoveryManager.pairingLevel = DiscoveryManager.PairingLevel.ON
mDiscoveryManager.registerDefaultDeviceTypes()
mDiscoveryManager.capabilityFilters = mutableListOf(CapabilityFilter(Launcher.Application_List))
mDiscoveryManager.start()
mDiscoveryManager.addListener(myDiscoveryListener)
//mConnectionDriver.startDiscovery(mHandler)
}
< /code>
Затем подключитесь к устройству, выбранному из списка < /p>
private fun updateStartConnectingToDevice(connectedDevice) {
device.setPairingType(DeviceService.PairingType.PIN_CODE)
device.connect()
if(device.listeners != null) {
device.removeListener(myConnectableDeviceListener)
}
device.addListener(myConnectableDeviceListener)
}
< /code>
, затем после подключения к устройству < /p>
val service = device?.services?.find { it.serviceName.toString().lowercase().contains("webos") }
val webOSService: WebOSTVService? =
device?.getServiceByName(service?.serviceName)?.getAPI(WebOSTVService::class.java)
webOSService?.getLaunchPoints(object : WebOSTVService.LaunchPointsListener {
override fun onError(error: ServiceCommandError?) {
}
override fun onSuccess(`object`: JSONArray?) {
val json = `object`?.get(0) as JSONObject
test = json.get("icon").toString()
Log.i("Sample JSONArray", json.get("icon").toString())
Log.i("Sample JSONArray", `object`.toString())
}
< /code>
Загрузка изображения значка в UI < /p>
GlideImage(
model = test,
contentDescription = test,
modifier = Modifier
.padding(10.dp)
.size(100.dp),
)
< /code>
Каждый раз, когда я пытаюсь загрузить изображение, я получаю эту ошибку < /p>
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.Я пробовал поиск с помощью различных методов в документации ConnectSDK, но до сих пор не удас. Я могу перейти к выбранным приложениям, перемещать курсор выбора и отправлять сообщения. Единственная проблема - загрузка значков из списка приложений. https://github.com/connectsdk/connect-s ... issues/412
Они в конечном итоге заявляют, что используют тот же метод, который я использую, но чтобы добавить ссылку значка в TrustManager. Как бы я это сделал? < /P>
Чего мне не хватает? Любое руководство будет оценено.
Код: Выделить всё
val webTrust = WebOSTVTrustManager()
val cert : X509Certificate? = webOSService?.webOSTVServiceConfig?.serverCertificate
webTrust.setExpectedCertificate(cert)
Log.i("Sample", "${webOSService?.webOSTVServiceConfig?.serverCertificate}")
Log.i("Sample", "${webTrust.lastCheckedCertificate}")
< /code>
Я получаю сертификат сервера и могу прочитать его, используя первую запись журнала, указанную выше. Я получаю NULL, если прочитаю вторую запись, которая после того, как я его установил. webtrust.setexpectedCertificate (cert) < /p>
Я читаю через клиентскую и серверную сторону сокетов, созданных в SDK в https://github.com/connectsdk/connect-sdk-android-core/blob/7e412a0d99d7b7dd7e2e84d9977fab215ad0f1dc/src/come/connectsdk/service/webos/webostvserscocetclient.jconnectsdk/service/webos/webostvscolectcocket.jjaviscocket.j.jconnectsdk/service/webos/webostvsockeclient /> Во время чтения методов я вижу, что они запускают определенные комментарии журнала
"Validity"
"Зарегистрированный"
, которые я получаю в logcat. < /p>
сразу после подключения к устройству я вижу входной записи logcat: < /p>
/> < /blockquote>
Если сертификат сервера был должным образом зарегистрирован, он будет отображать информацию о сертификате вместо (любого), как указано в Webostvtrustmanager
https://github.com/ConnectSDK/Connect-SDK-Android-Core/blob/7e412a0d99d7b7dd7e2e84d9977fab215ad0f1dc/src/com/connectsdk/service/webos/WebOSTVTrustManager.java
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
Log.d(Util.T, "Expecting device cert " + (expectedCert != null ? expectedCert.getSubjectDN() : "(any)"));
if (chain != null && chain.length > 0) {
X509Certificate cert = chain[0];
lastCheckedCert = cert;
if (expectedCert != null) {
byte [] certBytes = cert.getEncoded();
byte [] expectedCertBytes = expectedCert.getEncoded();
Log.d(Util.T, "Device presented cert " + cert.getSubjectDN());
if (!Arrays.equals(certBytes, expectedCertBytes)) {
throw new CertificateException("certificate does not match");
}
}
} else {
lastCheckedCert = null;
throw new CertificateException("no server certificate");
}
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... working-er
Мобильная версия