栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

七、AOSP-usb默认MTP+usb调试授权+usb默认信任

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

七、AOSP-usb默认MTP+usb调试授权+usb默认信任

一、usb默认MTP模式 1、源码路径

/frameworks/base/services/usb/java/com/android/server/usb/UsbDeviceManager.java

方法名 -> handleMessage
修改1 -> MSG_UPDATE_STATE的时候授权
修改2 -> MSG_BOOT_COMPLETED的时候授权

2、源码
        @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-2s后自动信任并消失

1、源码路径

/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();
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/716645.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号