
/frameworks/base/services/usb/java/com/android/server/usb/UsbDeviceManager.java
2、源码方法名 -> handleMessage
修改1 -> MSG_UPDATE_STATE的时候授权
修改2 -> MSG_BOOT_COMPLETED的时候授权
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_UPDATE_STATE:
mConnected = (msg.arg1 == 1);
mConfigured = (msg.arg2 == 1);
updateUsbNotification(false);
updateAdbNotification(false);
if (mBootCompleted) {
updateUsbStateBroadcastIfNeeded(false);
}
if (UsbManager.containsFunction(mCurrentFunctions,
UsbManager.USB_FUNCTION_ACCESSORY)) {
updateCurrentAccessory();
}
if (mBootCompleted) {
if (!mConnected) {
// restore defaults when USB is disconnected
setEnabledFunctions(null, !mAdbEnabled, false);
}
updateUsbFunctions();
} else {
mPendingBootBroadcast = true;
}
break;
//省略。。。
case MSG_BOOT_COMPLETED:
mBootCompleted = true;
if (mPendingBootBroadcast) {
updateUsbStateBroadcastIfNeeded(false);
mPendingBootBroadcast = false;
}
setEnabledFunctions(null, false, false);
if (mCurrentAccessory != null) {
getCurrentSettings().accessoryAttached(mCurrentAccessory);
}
if (mDebuggingManager != null) {
mDebuggingManager.setAdbEnabled(mAdbEnabled);
}
break;
//省略。。。
3、修改
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_UPDATE_STATE:
mConnected = (msg.arg1 == 1);
mConfigured = (msg.arg2 == 1);
updateUsbNotification(false);
updateAdbNotification(false);
if (mBootCompleted) {
updateUsbStateBroadcastIfNeeded(false);
}
if (UsbManager.containsFunction(mCurrentFunctions,
UsbManager.USB_FUNCTION_ACCESSORY)) {
updateCurrentAccessory();
}
if (mBootCompleted) {
if (!mConnected) {
// restore defaults when USB is disconnected
setEnabledFunctions(null, !mAdbEnabled, false);
//zjp update
setEnabledFunctions(UsbManager.USB_FUNCTION_MTP, false, true);
}
updateUsbFunctions();
} else {
mPendingBootBroadcast = true;
}
break;
//省略。。。
case MSG_BOOT_COMPLETED:
mBootCompleted = true;
if (mPendingBootBroadcast) {
updateUsbStateBroadcastIfNeeded(false);
mPendingBootBroadcast = false;
}
//zjp update
//setEnabledFunctions(null, false, false);
setEnabledFunctions(UsbManager.USB_FUNCTION_MTP, false, true);
if (mCurrentAccessory != null) {
getCurrentSettings().accessoryAttached(mCurrentAccessory);
}
if (mDebuggingManager != null) {
mDebuggingManager.setAdbEnabled(mAdbEnabled);
}
break;
//省略。。。
二、usb调试默认授权
1、源码路径:
/frameworks/base/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java
2、源码 @Override
public void onReceive(Context content, Intent intent) {
String action = intent.getAction();
if (!UsbManager.ACTION_USB_STATE.equals(action)) {
return;
}
boolean connected = intent.getBooleanExtra(UsbManager.USB_CONNECTED, false);
if (!connected) {
mActivity.finish();
}
}
3、修改
@Override
public void onReceive(Context content, Intent intent) {
String action = intent.getAction();
if (!UsbManager.ACTION_USB_STATE.equals(action)) {
return;
}
//zjp update
//boolean connected = intent.getBooleanExtra(UsbManager.USB_CONNECTED, false);
boolean connected = false;
if (!connected) {
mActivity.finish();
}
try {
IBinder b = ServiceManager.getService(USB_SERVICE);
IUsbManager service = IUsbManager.Stub.asInterface(b);
service.allowUsbDebugging(true, mKey);
} catch (Exception e) {
Log.e(TAG, "Unable to notify Usb service", e);
}
}
三、usb默认信任
1、源码路径这个修改后,插入新的电脑,会d出信任框,1-2s后自动信任并消失
/frameworks/base/packages/SystemUI/src/com/android/systemui/usb/UsbPermissionActivity.java
2、源码 mAlwaysUse.setOnCheckedChangeListener(this);
mClearDefaultHint = (TextView)ap.mView.findViewById(
com.android.internal.R.id.clearDefaultHint);
mClearDefaultHint.setVisibility(View.GONE);
setupalert();
3、修改
mAlwaysUse.setOnCheckedChangeListener(this);
mClearDefaultHint = (TextView)ap.mView.findViewById(
com.android.internal.R.id.clearDefaultHint);
mClearDefaultHint.setVisibility(View.GONE);
setupalert();
//zjp update
Log.d(TAG, "grant usb permission automatically");
mPermissionGranted = true;
finish();
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)