Settings 中以太网设置解读

 

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);

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值