美文网首页
Android-域名查询总结2

Android-域名查询总结2

作者: Jeremy_Ji | 来源:发表于2018-09-02 09:10 被阅读24次

    这次较上次的总结中新增了可以copy IP的功能,对文本框中现有的数据进行捕获并且进行处理(将查询信息中的格式解析成回行,让信息一条一条显示出来),只截取信息中的ip然后将其复制到系统剪切板,并且可以调用浏览器进行直接访问。

    对查询信息中的文字处理

    原本的信息中格式中有大量无用空格,这里将空格替换为回车
    在上篇主函数showDnsIp()中对return的ip进行处理,把一个以上的空格全部替换为“\n”回车

      //将查询结果中的空格替换为回行
                ip = rec.toString().replaceAll("\\s+","\n");
    

    格式如下图


    ns-msg-type.png

    当点击copy按钮时,会弹出dialog

    copy ip的对话框

    copy_ip_dialog.png

    捕获字符串中的=ip并且将ip回传,因为用的java包中的函数查询出的格式为域名+端口号+in+查询类型+ip地址所以用数组可以把ip取出来。
    用‘\n’把字符串切割成字符串数组可以把ip取出来,对应的其他错误格式则用字幕显示no ip fond。

        /**
         * 处理查询结果
         * 获取字符串中ip
         */
        public String copyIp(String address){
            String [] ip;
            String errorIp="Error:";
            String nullIP="Please enter domain name";
            //利用数组取出查询结果中的ip,回传ip,没有ip则回传空字符
            if (address.contains(errorIp)||address.equals("")||address.equals(nullIP)){
                ip= new String[]{"","","","",""};
            }else {
                ip=address.split("\n");
            }
            //格式:ip[0]域名,ip[1]端口号,ip[3]查询类型,ip[4]ip地址
            return ip[4];
        }
    

    dialog的显示
    设置好dialog的标题和内容,点击ok可以去粘贴,点击Open this url则调用默认的浏览器将ip打开。
    其中访问浏览器需要用到intent,这里可以拓展为用户选定浏览器。记住dialog需要跟Toast一样最后要用.crate()和.show()将dialog显示

     /**
         *显示ip复制的dialog
         */
        public void showIpDialog(String mIp){
    
            AlertDialog.Builder mDialog=new AlertDialog.Builder(mAllActivity);
            mDialog.setMessage("You've copied this IP:\n"+"\t"+mIp);
            mDialog.setTitle(R.string.nslookup_dialog_title);
            //点击ok关闭对话框
            mDialog.setPositiveButton("ok", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();
                }
            });
            //点击左边按钮访问ip
            mDialog.setNegativeButton("Open this url", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    //访问复制到的ip
                    Intent localIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://" + mIp));
                    mAllActivity.startActivity(localIntent);
                    dialog.cancel();
                }
            });
            mDialog.create();
            mDialog.show();
        }
    

    点击按钮时copy Ip,并且弹出dialog

    首先判断接到的信息是什么,若是字符串则显示字幕no ip fond,不是则将ip复制到剪切板并且创建dialog。
    获取系统剪切板则需要使用到ClipboardManager剪切板管理器,用的时候创建对象并且赋值

     mCopyButton.setOnClickListener(new View.OnClickListener() {
                /**
                 * 点击按钮复制ip
                 * @param v
                 */
                @Override
                public void onClick(View v) {
                    //复制ip并且显示复制ip的dialog
                    String ip=copyIp(mTextView.getText().toString());
                    if (ip.equals("")){
                        Toast.makeText(mServerMonitor,R.string.nslookup_toast_msg,Toast.LENGTH_SHORT).show();
                    }else {
                        //获取到剪贴板管理器
                        ClipboardManager mClipboardManager=(ClipboardManager)mAllActivity.
                                getSystemService(Context.CLIPBOARD_SERVICE);
                        //创建普通字符型ClipData
                        ClipData mClipData=ClipData.newPlainText("Lable",ip);
                        //放到系统剪切板
                        mClipboardManager.setPrimaryClip(mClipData);
                        showIpDialog(ip);
                    }
                    Log.d("---复制信息---"+ip);
                }
            });
    

    这次算是对上次的域名查询功能上面做了一些补充,学习了一下Android中的使用浏览器访问ip和系统剪切板的使用。马上就要开学了,这个学年要学习更多东西,丰富自己努力提升。

    相关文章

      网友评论

          本文标题:Android-域名查询总结2

          本文链接:https://www.haomeiwen.com/subject/bpwuwftx.html