描述:Android 9.0 中启动wifi热点的方式已经在 8.0时就发生了变化,是通过ConnectivityManager来实现;因为需求原因,直接就用最便捷的方式去默认启动热点。
思路:
1.通过settings中的开启热点逻辑,分析实现启动热点的实现方式
2.监听开机广播
3.ConnectivityManager 控制 startTethering
实现方式:
在Settings 中添加一个BroadcastReceiver, 然后通过监听开机广播,用Settings中开启热点的方法去开机启动wifi热点
AndroidManifest.xml
<receiver android:name=".wifi.tether.BootHotspotReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
public class BootHotspotReceiver extends BroadcastReceiver {
private static final String TAG = "BootHotspotReceiver";
@VisibleForTesting
final ConnectivityManager.OnStartTetheringCallback mOnStartTetheringCallback =
new ConnectivityManager.OnStartTetheringCallback() {
@Override
public void onTetheringFailed() {
super.onTetheringFailed();
}
};
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
Log.d(TAG,"BootHotspotReceiver");
ConnectivityManager mConnectivityManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
mConnectivityManager.startTethering(TETHERING_WIFI, true /* showProvisioningUi */,
mOnStartTetheringCallback, new Handler(Looper.getMainLooper()));
}
}
}
Dear vistor:
如果有好的方案,欢迎留言分享!