Settings 中以太网设置解读

来源:互联网 发布:js超出部分省略号 编辑:程序博客网 时间:2024/06/16 13:57

 

Settings 中以太网设置解读:
if(mEthManager.getEthernetMode().equals(EthernetManager.ETHERNET_CONNECT_MODE_DHCP)){
  mDhcpIP.setChecked(true);
  mStaticIP.setChecked(false);
  showDhcpIP();
 }else{
  mDhcpIP.setChecked(false);
  mStaticIP.setChecked(true);
  mDhcpIP.setSummary("");
  showStaticIP(); //show IP from DB
 }
public void showDhcpIP() {
 mLinkPro = mConnectivityManager.getLinkProperties(ConnectivityManager.TYPE_ETHERNET);
在ConnectivityManager中:
public LinkProperties getLinkProperties(int networkType) {
        try {//调用IConnectivityManager的getLinkProperties方法
            return mService.getLinkProperties(networkType);
        } catch (RemoteException e) {
            return null;
        }
}
mService 是在构造的时候传进来的
    public ConnectivityManager(IConnectivityManager service) {
        mService = checkNotNull(service, "missing IConnectivityManager");
}
public static final Uri CONTENT_URI =
            Uri.parse("content://" + AUTHORITY + "/secure");
  public static Uri getUriFor(String name) {
         return getUriFor(CONTENT_URI, name);
     }
  public static Uri getUriFor(Uri uri, String name) {
         return Uri.withAppendedPath(uri, name);
     }
监听IP,DNS 等URI变化,刷新UI
private void registerObserver() {
  this.getContentResolver().registerContentObserver(
    Settings.Secure.getUriFor(Settings.Secure.ETHERNET_IP), true, dbObserver);

private ContentObserver dbObserver = new ContentObserver(new Handler()) {
    @Override
    public void onChange(boolean selfChange) {
        if(DEBUG) Log.d(TAG, "IP Changed  beging to handle DB Changed" + selfChange);
        //mEthManager.setEthernetEnabled(false);
        getIP(false);
        //mEthManager.setEthernetEnabled(true);
    }
};

这里DhcpInfoInternal 保存dhcp信息
  DhcpInfoInternal mDhcpInfoInternal = new DhcpInfoInternal();
    mDhcpInfoInternal.getFromDhcpInfo(mEthManager.getSavedEthernetIpInfo());
    String IP = mDhcpInfoInternal.ipAddress;
mIPaddress.setTitle(getString(R.string.eth_ipaddr) + m_space + IP);//mIPaddress.setTitle(IP);

怎么拿到服务端暴露的INetworkManagementService 接口:
private INetworkManagementService mNwService;
IBinder b = ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE);
 mNwService = INetworkManagementService.Stub.asInterface(b);

0 0