这个是采用发送广播的形式,自己写app软件发送广播就可以实现此功能
’frameworks\base\services\core\java\com\android\server\policy\PhoneWindowManager.java
导入依赖
import android.bluetooth.BluetoothAdapter;
import android.net.TetheringManager;
import android.net.ConnectivityManager;
import static android.net.ConnectivityManager.TETHERING_BLUETOOTH;
import static android.net.ConnectivityManager.TETHERING_USB;
import static android.net.TetheringManager.TETHERING_ETHERNET;
然后要去使用,
先去注册
// register for dock events
IntentFilter filter = new IntentFilter();
filter.addAction(UiModeManager.ACTION_ENTER_CAR_MODE);
filter.addAction(UiModeManager.ACTION_EXIT_CAR_MODE);
filter.addAction(UiModeManager.ACTION_ENTER_DESK_MODE);
filter.addAction(UiModeManager.ACTION_EXIT_DESK_MODE);
filter.addAction(Intent.ACTION_DOCK_EVENT);
//这两个广播打开与关闭
filter.addAction("com.tyd.intent.internet.share.open");
filter.addAction("com.tyd.intent.internet.share.close");
Intent intent = context.registerReceiver(mDockReceiver, filter);
然后去注册的mDockReceiver里面去进行接收我们的广播
BroadcastReceiver mDockReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_DOCK_EVENT.equals(intent.getAction())) {
mDefaultDisplayPolicy.setDockMode(intent.getIntExtra(Intent.EXTRA_DOCK_STATE,
Intent.EXTRA_DOCK_STATE_UNDOCKED));
} else {
try {
IUiModeManager uiModeService = IUiModeManager.Stub.asInterface(
ServiceManager.getService(Context.UI_MODE_SERVICE));
mUiMode = uiModeService.getCurrentModeType();
} catch (RemoteException e) {
}
}
//add
TetheringManager mTetheringManager =(TetheringManager) context.getSystemService(Context.TETHERING_SERVICE);
if(intent.getAction().equals("com.tyd.intent.internet.share.open")) {
//这里写入的系统属性,1代表是打开了usb共享
SystemProperties.set("persist.sys.bnd.system.bnd.usb_state","1");
BluetoothAdapter btadapter =BluetoothAdapter.getDefaultAdapter();
ConnectivityManager mCm =(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
android.os.SystemProperties.set("persist.sys.internet_share","1");
mTetheringManager.setUsbTethering(true);
if (btadapter != null)
try{
if(!btadapter.isEnabled())btadapter.enable();
//mCm.startTethering(TETHERING_BLUETOOTH,true, new ConnectivityManager.OnStartTetheringCallback(){});
//mCm.startTethering(TETHERING_ETHERNET,true, new ConnectivityManager.OnStartTetheringCallback(){});
}catch (Exception e){
Log.i("yantao","startTethering error="+e);
}
}
if (intent.getAction().equals("com.tyd.intent.internet.share.close")){
SystemProperties.set("persist.sys.bnd.system.bnd.usb_state","0");
android.os.SystemProperties.set("persist.sys.internet_share","0");
mTetheringManager.stopAllTethering();
}
//end
updateRotation(true);
mDefaultDisplayRotation.updateOrientationListener();
}
};