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

    xiaoxiao2021-03-25  195

    我们获取的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; } }
    转载请注明原文地址: https://ju.6miu.com/read-1737.html

    最新回复(0)