浏览了下网页,没有看到相关方面的说明。
其中有些相关方面的接口不知道干嘛用的?
public boolean enableUdcpower(boolean enabled)public boolean enableGser(boolean enabled)public boolean enableVser(boolean enabled)---------------------------------------------
public String[] getTetherableIfaces()public String[] getTetherableUsbRegexs() 
---------------------------------------------
USB 链接电脑,USB数据绑定,可以起作用。
但是点击checbox@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
Preference preference) {
// TODO Auto-generated method stub
Log.d(LOG_TAG, "YYYYYYYYYYYYYYYYYYYY------------------------------"+"onPreferenceTreeClick");
if(preference != mRememberChoice){
disableAllUI();
}

if(preference == mRememberChoice){
            mLastRememberStatus = mRememberChoice.isChecked();
Settings.Secure.putInt(getContentResolver(), 
Settings.Secure.REMEMBER_USB_CHOICE, mRememberChoice.isChecked() ? 1 : 0);
}
else if(preference == mUsbChargeOnly){
setUsbUdcpowerEnabled(mUsbChargeOnly.isChecked());
Settings.Secure.putInt(getContentResolver(), Settings.Secure.CHARGE_ONLY, mUsbChargeOnly.isChecked() ? 1 : 0);
}
                //////数据绑定
else if(preference == mUsbTether)
{
if (mUsbTether.isChecked()) {
Log.d(LOG_TAG,"yyyyyyyyyyyyyyyy--------------onPreferenceTreeClick" + "mUsbTether.isChecked()="+mUsbTether.isChecked());
                String[] available = mConnectivityManager.getTetherableIfaces();
                mUsbRegexs = mConnectivityManager.getTetherableUsbRegexs();
                String usbIface = findIface(available, mUsbRegexs);
updateUI();

                if (usbIface == null) {
Log.d(LOG_TAG,"yyyyyyyyyyyyyyyy-----------onPreferenceTreeClick" + "usbIface"+usbIface);
                    updateStatus();
                    return true;
                }

                if (mConnectivityManager.tether(usbIface) != ConnectivityManager.TETHER_ERROR_NO_ERROR) {
Log.d(LOG_TAG,"yyyyyyyyyyyyyyyy----------onPreferenceTreeClick" + "mConnectivityManager.tether(usbIface)="+mConnectivityManager.tether(usbIface));
                    mUsbTether.setChecked(false);
                    mUsbTether.setSummary(R.string.usb_tethering_errored_subtext);
                    return true;
                }
//Log.d(LOG_TAG,"yyyyyyyyyyyyyyyy--------------onPreferenceTreeClick" + "zzzzzzzzzzzzzzzzzzzzzzz");
                mUsbTether.setSummary("");
//Log.d(LOG_TAG,"yyyyyyyyyyyyyyyy--------------onPreferenceTreeClick" + "zzzzzzzzzzzzzzzzzzzzzzz mUsbTether.setSummary");
                mLastRememberStatus = mRememberChoice.isChecked();
//Log.d(LOG_TAG,"yyyyyyyyyyyyyyyy--------------onPreferenceTreeClick" + "mLastRememberStatus=" + mLastRememberStatus);
                Settings.Secure.putInt(getContentResolver(), Settings.Secure.REMEMBER_USB_CHOICE, 0);
Log.d(LOG_TAG,"yyyyyyyyyyyyyyyy--------------onPreferenceTreeClick" + "Settings.Secure=" + mLastRememberStatus);

            } else {
                String [] tethered = mConnectivityManager.getTetheredIfaces();
                mUsbRegexs = mConnectivityManager.getTetherableUsbRegexs();
                String usbIface = findIface(tethered, mUsbRegexs);
                if (usbIface == null) {
                    updateStatus();
                    return true;
                }
                if (mConnectivityManager.untether(usbIface) != ConnectivityManager.TETHER_ERROR_NO_ERROR) {
                    mUsbTether.setSummary(R.string.usb_tethering_errored_subtext);
                    return true;
                }
                mUsbTether.setSummary("");
                Settings.Secure.putInt(getContentResolver(), Settings.Secure.REMEMBER_USB_CHOICE, mLastRememberStatus ? 1 : 0);
             }
Settings.Secure.putInt(getContentResolver(), Settings.Secure.RNDIS_ENABLED, mUsbTether.isChecked() ? 1 : 0);
Log.d(LOG_TAG,"yyyyyyyyyyyyyyyy--------------onPreferenceTreeClick------" + "mUsbTether.isChecked()=" + mUsbTether.isChecked());
}/////////end 数据绑定
else if(preference == mUms){
mUmsClicked = true;
if(mUms.isChecked()){
Log.d(LOG_TAG,"usb mass storage enabling");
mDialog = new ProgressDialog(this);
mDialog.setTitle(R.string.ums_settings);
mDialog.setCancelable(false);
mDialog.setIndeterminate(true);
mDialog.setMessage(getText(R.string.ums_mounted_setting));
mDialog.show();
new Thread() {
            public void run() {
             mStorageManager.enableUsbMassStorage();
            }
        }.start();
                mLastRememberStatus = mRememberChoice.isChecked();
                Settings.Secure.putInt(getContentResolver(), Settings.Secure.REMEMBER_USB_CHOICE, 0);
}else{
Log.d(LOG_TAG,"usb mass storage disabling");
                Settings.Secure.putInt(getContentResolver(), Settings.Secure.REMEMBER_USB_CHOICE, mLastRememberStatus ? 1 : 0);
mDialog = new ProgressDialog(this);
mDialog.setTitle(getText(R.string.ums_settings));
mDialog.setCancelable(false);
mDialog.setIndeterminate(true);
mDialog.setMessage(getText(R.string.ums_unmounted_setting));
mDialog.show();
new Thread() {
            public void run() {
             mStorageManager.disableUsbMassStorage();
            }
        }.start();
}
}
else if(preference == mCdrom){
Settings.Secure.putInt(getContentResolver(), "cdrom_shared", mCdrom.isChecked() ? 1 : 0);
shareUnshareCDRom(mCdrom.isChecked());
updateUI();
}
else if(preference == mUsbModemLog){
setUsbGserEnabled(mUsbModemLog.isChecked());
setUsbVserEnabled(mUsbModemLog.isChecked());
Settings.Secure.putInt(getContentResolver(), Settings.Secure.MODEM_ENABLED, mUsbModemLog.isChecked() ? 1 : 0);
}
Log.d(LOG_TAG,"yyyyyyyyyyyyyyyy-----------onPreferenceTreeClick-----" + "end");

return super.onPreferenceTreeClick(preferenceScreen, preference);
}

解决方案 »

  1.   


    // UI的更新
    private void updateUI(){

    mUsbConnected = mConnectivityManager.isUsbConnected();
    Log.d(LOG_TAG,"yyyyyyyyyyyyyyyy--------------------------" + "updateUI mUsbConnected="+mUsbConnected);
    if(mUsbConnected){
    if(Settings.Secure.getInt(getContentResolver(), Settings.Secure.CHARGE_ONLY,0) != 0){
    mUsbChargeOnly.setEnabled(true);
    mUsbChargeOnly.setChecked(true);
    }
    //update modem log function's UI status
    if((mUsbChargeOnly.isChecked() || mUsbTether.isChecked()) && mPrefCount > 5){
    mUsbModemLog.setChecked(false);
    mUsbModemLog.setEnabled(false);
    }

    //process charge only or tethering enabled,others status control
    if(mUsbChargeOnly.isChecked()){
    mUsbChargeOnly.setEnabled(true);
    mUsbTether.setChecked(false);
    mUsbTether.setSummary(R.string.usb_tethering_charge_only_active_subtext);
    mUsbTether.setEnabled(false);
    mUms.setChecked(false);
    mUms.setEnabled(false);
    mUms.setSummary(R.string.usb_storage_charge_only_active_subtext);
    mCdrom.setChecked(false);
    mCdrom.setEnabled(false);
    mCdrom.setSummary(R.string.cdrom_shared_summary);
    }else if(mUsbTether.isChecked()){
        Log.d(LOG_TAG,"yyyyyyyyyyyyyyyy--------------------------" + "updateUI mUsbTether.isChecked()="+mUsbTether.isChecked());
    mUsbTether.setEnabled(true);
    mUsbChargeOnly.setChecked(false);
    mUsbChargeOnly.setEnabled(false);
    mUsbChargeOnly.setSummary(R.string.usb_charge_only_tethering_active_subtext);
    mUms.setChecked(false);
    mUms.setEnabled(false);
    mUms.setSummary(R.string.usb_storage_tethering_active_subtext);
                    mRememberChoice.setChecked(false);
                    mRememberChoice.setEnabled(false);
    mCdrom.setChecked(false);
    mCdrom.setEnabled(false);
    mCdrom.setSummary(R.string.cdrom_shared_summary);
    Log.d(LOG_TAG,"yyyyyyyyyyyyyyyy--------------------------" + "updateUI mUsbTether.isChecked()="+mUsbTether.isChecked()); Log.d(LOG_TAG,"yyyyyyyyyyyyyyyy--------------------------" + "updateUI mUsbChargeOnly.isChecked()="+mUsbChargeOnly.isChecked()); Log.d(LOG_TAG,"yyyyyyyyyyyyyyyy--------------------------" + "updateUI mUms.isChecked()="+mUms.isChecked()); Log.d(LOG_TAG,"yyyyyyyyyyyyyyyy--------------------------" + "updateUI mRememberChoice.isChecked()="+mRememberChoice.isChecked()); Log.d(LOG_TAG,"yyyyyyyyyyyyyyyy--------------------------" + "updateUI mCdrom.isChecked()="+mCdrom.isChecked());
    // summary for remember choice when tethering is checked
    }else if(mCdrom.isChecked()){
    mCdrom.setEnabled(true);
    mUsbChargeOnly.setChecked(false);
    mUsbChargeOnly.setEnabled(false);
    mUsbChargeOnly.setSummary(R.string.usb_charge_only_tethering_active_subtext);
    mUms.setChecked(false);
    mUms.setEnabled(false);
    mUms.setSummary(R.string.usb_storage_tethering_active_subtext);
    mRememberChoice.setChecked(false);
    mRememberChoice.setEnabled(false);
    mUsbTether.setChecked(false);
    mUsbTether.setEnabled(false);
    mUsbTether.setSummary(R.string.usb_tethering_charge_only_active_subtext);
    }else{
    mUsbChargeOnly.setEnabled(true);
    mUsbChargeOnly.setSummary(R.string.usb_charge_only_summary);
    mUsbTether.setEnabled(true);
    mUsbTether.setSummary(R.string.usb_tethering_available_subtext);
    if(cdromFileExists) mCdrom.setEnabled(true);
    if (Environment.getExternalStorageState().equals(
    Environment.MEDIA_REMOVED)) {
    mUms.setEnabled(false);
    mUms.setChecked(false);
    }else{
    mUms.setEnabled(true);
    mUms.setSummary(R.string.usb_storage_summary);
    //mUms.setChecked((Settings.Secure.getInt(
    //getContentResolver(), Settings.Secure.UMS_MOUNTED,0) != 0));
    Log.d(LOG_TAG,"external storage state : " + Environment.getExternalStorageState());
        mUms.setChecked((Environment.getExternalStorageState()).equals(Environment.MEDIA_SHARED));
    }
    if(mPrefCount > 5){
    mUsbModemLog.setEnabled(true);
    mUsbModemLog.setChecked((Settings.Secure.getInt(
    getContentResolver(), Settings.Secure.MODEM_ENABLED,1) != 0));
    }
                    mRememberChoice.setEnabled(true);
                    mRememberChoice.setChecked(mLastRememberStatus);
                    // summary for remember choice when tethering and ums is unchecked
                    mRememberChoice.setSummary("");
    }

    if(mUms.isChecked()){
    Log.d(LOG_TAG,"yyyyyyyyyyyyyyyy--------------------------" + "mUms.isChecked()=" + mUms.isChecked());
    mCdrom.setEnabled(false);
    mUsbChargeOnly.setChecked(false);
                mUsbChargeOnly.setEnabled(false);
                mUsbChargeOnly.setSummary(R.string.usb_charge_only_storage_active_subtext);
                mUsbTether.setChecked(false);
                mUsbTether.setEnabled(false);
                mUsbTether.setSummary(R.string.usb_tethering_storage_active_subtext);
                    mRememberChoice.setChecked(false);
                    mRememberChoice.setEnabled(false);
                    // summary for remember choice when ums is checked
    }

    }else{
    for (int i = 0; i < mPrefCount - 1; i++){
    ((CheckBoxPreference) getPreferenceScreen().getPreference(i)).setChecked(false);
    ((CheckBoxPreference) getPreferenceScreen().getPreference(i)).setEnabled(false);
    }
    }
    }