Android 进阶之路 - 获取外网Ip(非局域网)

我们获取的IP分局域网与外网,本篇带来的就是外面ip的获取方式

注意:权限添加 (最好以下权限都进行配置)

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
 <uses-permission android:name="android.permission.INTERNET"/>

Gson 依赖注入:

compile 'com.google.code.gson:gson:2.6.2'

Activity Code

package com.example.myapplicationdelect;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;

import com.google.gson.Gson;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Scanner;

public class MainActivity extends AppCompatActivity {
        public TextView mText;
       public Bean ip=new Bean();
         private String result;
              public String ipx;

    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
//            mText.setText("ip"+ip.getIp());
             ipx = ip.getIp();
              Log.e("tag","ipx="+ipx);
              mText.setText(ipx);
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mText=(TextView)   findViewById(R.id.main);
        getNetIP();

    }

     void getNetIP(){
         new Thread(new Runnable() {
             @Override
             public void run() {
                 HttpURLConnection urlConnection = null;
                 try {
                     URL url = new URL("http://ip.chinaz.com/getip.aspx");
                     urlConnection = (HttpURLConnection)url.openConnection();
                     InputStream in = new BufferedInputStream(urlConnection.getInputStream());
                     result = readInStream(in);
                     if (!result.isEmpty()){
                         ip=new Gson().fromJson(result,Bean.class);
                     }
                     handler.sendEmptyMessage(0);
                 } catch (MalformedURLException e) {
                     e.printStackTrace();
                 } catch (IOException e) {
                     e.printStackTrace();
                 }finally {
                     urlConnection.disconnect();
                 }
             }
         }).start();
     }
     
    private String readInStream(InptStream in) {
        Scanner scanner = new Scanner(in).useDelimiter("\\A");
        return scanner.hasNext() ? scanner.next() : "";
    }
}

Activity Xml Code :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.myapplicationdelect.MainActivity">

    <TextView
        android:id="@+id/main"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="测试方法!" />
</RelativeLayout>

Bean :

package com.example.myapplicationdelect;

public class Bean {

    public String  ip;
    public String adress;

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }

    public String getAdress() {
        return adress;
    }

    public void setAdress(String adress) {
        this.adress = adress;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远方那座山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值