Android O的谷歌默认USB连接模式为充电,现客户要求更改为随用户上次选择的模式。思路是,用一个变量保存上次用户选择的模式,检测USB插入后,在代码里面重新选择USB模式。
1,alps\vendor\mediatek\proprietary\packages\apps\MtkSettings\src\com\android\settings\deviceinfo\UsbModeChooserActivity.java
inflateOption()中添加上次用户选择的USB模式
v.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (disallowedByAdmin && mEnforcedAdmin != null) {
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
UsbModeChooserActivity.this, mEnforcedAdmin);
return;
}
if (!ActivityManager.isUserAMonkey()) {
mBackend.setMode(mode);
//add by start
System.putInt(getContentResolver(), "kst_usb_mode", mode);
//add by y end
}
mDialog.dismiss();
finish();
}
});
2, alps\vendor\mediatek\proprietary\packages\apps\SystemUI\src\com\android\systemui\usb\StorageNotification.java
添加USB拔插监听,插入后重新选择USB模式。
import android.provider.Settings.System;
import android.hardware.usb.UsbManager;
//add by start
private static final int MSG_CHOOSE_MODE = 0x10;
private Handler mUsbCheckHandler = new Handler(){
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case MSG_CHOOSE_MODE:
try {
int mode = System.getInt(mContext.getContentResolver(), "kst_usb_mode", 0);
if(mBackend != null){
mBackend.setMode(mode);
}
} catch (Exception e) {
Log.e(TAG,"Exception="+e);
}
break;
default:
break;
}
};
};
//add by end
//add by start
private UsbBackend mBackend;
private UsbManager mUsbManager;
priv