2012년 1월 17일 화요일

ICS 에서 USB tethering API 사용 방법 막힘

ICS 이전 버전까지는 Tethering API 를 사용하기 위해 java reflection 기법을 이용하여 ConnectivityManager 클래스에 가려져 있던 tethering 관련 함수들을 사용하면 되었다.

ICS 버전에는 tethering 연결 및 해제하는 tether()/untether() 함수가 setUsbTethering() 함수로 바뀌었고 인자도 tethering interface 문자열에서 true/false 인 boolean 형으로 바뀌었다.

int setUsbTethering(Context, boolean) 의 형태이다.
true 를 넣어주면 연결된 usb 장치와 tethering 하고 false 를 넣어주면 tethering 연결을 끊는다. 이전처럼 tethering interface 를 명시하지 않아도 된다.

하지만 setUsbTethering() 함수를 부르게 되면 SecurityException 이 발생하면서 android.permission.MANAGE_USB 라는 권한이 필요하다는 내용의 에러를 출력한다.

그래서 android.permission.MANAGE_USB 를 AndroidManifest.xml 에 추가해 보지만 결과는 마찬가지 였다.

확인결과 android.permission.MANAGE_USB 권한은 시스템 앱인 경우에만 취득이 가능했다.

결과적으로 현재로써 배포용 앱은 ICS 에서 Tethering API 를 사용할 수 없다.


참고 - http://tjandroid.blogspot.com/2010/12/enabledisable-usb-tethering.html
(Android Tethering API (froyo or above))

댓글 없음:

댓글 쓰기