最近在做Android 11中热点的功能,主要是网络共享,一个是usb网络共享,一个是热点网络共享,本文只是记录热点分享的流程.
一. settings 里面打开热点的接口跟原来类似
packages/apps/Settings/src/com/android/settings/TetherSettings.java: startTethering() {
......
mCm.startTethering(choice, true, mStartTetheringCallback, mHandler);
}
其中mCm为系统服务ConnectivityManager.
mCm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE).
上层调用比较简单,就是调用startTethering()方法,然后会通过系统服务ConnectivityManager在进行framework层的打开.
二. ConnectivityManager系统服务
ConnectivityManager系统服务代码位于:
frameworks/base/core/java/android/net/ConnectivityManager.java : startTethering(..){
....
mTetheringManager.startTethering(request, executor, tetheringCallback);
}
会调用 mTetheringManager.startTethering()方法.mTetheringManager位于
frameworks/base/packages/Tethering/common/TetheringLib/src/android/net/TetheringMan