Закрыть GPRS-соединение, открытое другим приложением - PullRequest
2 голосов
/ 30 марта 2012

Я разрабатываю приложение, которое в случае потери соединения перезагружает телефон.

Перед этим шагом мы хотели бы закрыть все открытые соединения через диспетчер соединений.Я понимаю, что мы можем использовать ConnMgrReleaseConnection , чтобы освободить соединение, но возможно ли получить дескриптор соединения, если соединение было установлено через другое приложение?

Если диспетчер соединений не может закрыть соединение, мы можемзатем выполните RASHangup, но мы хотели бы сначала попробовать его через ConnectionManager.

1 Ответ

1 голос
/ 30 марта 2012

Нет, нет способа сделать это через соединение Amanger. Требуемый дескриптор ConnMgrReleaseConnection - это тот, который возвращается из вызова на ConnMgrEstablishConnection. Предположительно «другое» приложение назвало это и имеет дескриптор, но даже если это приложение может дать вам дескриптор, оно все равно будет недействительным в вашем собственном пространстве процессов.

Как правило, было бы неправильно делать что-то подобное, так как я предполагаю, что приложение, открывающее соединение, будет ожидать, что оно всегда будет открыто, как только оно его запросит. Принудительное закрытие (даже через RAS) без ведома приложения может привести к неожиданному поведению. Возможно, это не большая проблема для вас, если вы просто собираетесь перезагрузить телефон, но если у вас есть какой-либо контроль над этим другим приложением, я бы добавил обработку, где вы можете сказать ему, чтобы он закрывал соединения.

...