1. 程式人生 > >Android 進階之路

Android 進階之路

我們獲取的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;
    }
}