2017-09-18 369 views
6

Wiifi 테 더링을 활성화하고 액세스 지점을 만들려면 WifiManager 숨겨진 API를 사용했습니다. = 사실 PACKAGE_NAME하려고 전화를 사용할 수 setWifiApEnabled에 : 문제는 이제 안드로이드 API (26) 태그 @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED)setWifiApEnabled 기능에 추가 된 것입니다 지금은 그 호출은 false를 돌려 다음과 같은 로그가 인쇄됩니다 :프로그래밍 방식으로 Android O WiFi 핫스팟을 활성화하는 방법

W/WifiManager를 새로운 문서를 읽기

,이 기능이 사용되지 않으며 향후 릴리스에서 제거되고 호출자가 적절한 권한을 가지고 있지만이 방법이 더 TETHER_PRIVILEGED 권한 같은 문제가있는 경우 대신 ConnectivityManager#startTethering를 사용하는 것을 말한다. 문서에 제시된 다른 옵션 중 하나는 LocalOnlyHotspot을 사용하는 것입니다. 그러나 생성 된 핫 스폿에는 인터넷 연결이 없으므로 프로젝트에는 아무런 소용이 없습니다.

또한 숨겨진 API에서하지만 다음과 같은 예외가 발생하기 때문에 더 성공적인 결과로 startSoftAp 기능을 테스트했습니다

둘 다 사용자 10,164도 현재 프로세스가 없습니다 android.permission.NETWORK_STACK : WifiService

최신 API에서 Wi-Fi 핫스팟을 활성화 할 수있는 임시 해결책이 있습니까? 또한 Wifi 테 더링에 대한 대안을 모색했지만 유일하게 실행 가능한 대안은 3G 속도 만 얻는 단점이있는 블루투스 테 더링 인 것 같습니다. Wifi Aware 및 Wifi P2P도 고려되었지만 인터넷 연결이 기기간에 공유되지 않는 문제가 있습니다.

이 방법에 대한 제안 사항은 무엇입니까?

+0

[https://stackoverflow.com/questions/45984345/how-to-turn-on-off-wifi-hotspot-programatically-in-android-8-0-oreo](https://stackoverflow.com)/questions/45984345/how-to-turn-on-off-wifi-hotspot-programically-in -roid-8-0-oreo) – Mark

+0

가능한 중복의 [Android 8.0에서 프로그래밍 방식으로 무선 핫스팟을 켜고 끄는 방법 (Oreo)] (https://stackoverflow.com/questions/45984345/how-to-turn-on-off-wifi-hotspot-programatically-in-android-8-0-oreo) – tripleee

답변

1

아니요, Android O에서 보안이 강화되었습니다. 이제 안드로이드 빌드를 사용하여 시스템 apk를 컴파일하지 않으면 API를 사용할 수 없으므로 리플렉션을 통해 'startTethering'을 호출 할 수 없습니다. 숨겨진 OnStartTetheringCallback이 필요합니다. 원하는 경우 LocalOnlyHotspotCallback을 사용할 수 있습니다.

2

이것은 여러 번 대답되었습니다. Snehashish Agarwal에 따르면 setWifiApEnabled() 및 startThethering() 메소드는 비공개 API입니다. 그것들은 @hide로 주석 처리되어 있는데, 이것은 private임을 의미합니다. 타사 응용 프로그램은 개인 API를 직접 호출하면 안됩니다. 그들이 미래에 일할 것이라는 보장은 없습니다. 네 사건대로.

또한 startLocalOnlyHotspot에는 인터넷에 접속할 수 없습니다. Wi-Fi 핫스팟에 연결된 장치간에 통신하는 로컬 핫 스폿이며이 방법은 인터넷에 액세스 할 수 없습니다.

현재 모바일 핫스팟을 활성화하기위한 공식 API 호출이 없습니다.