Skip to main content
Android'de Java ile Ip Adresini Öğrenme

Android’de JAVA ile IP Adresini Alma

Merhaba Arkadaşlar

Bu yazımızda, sizlere android de ip adresini alan kod parçacığını paylaşacağım. Özellikle, kullanıcılarınızdan girdi aldığınız uygulamalarda geliştirici olarak, API ye atılan sorgularda kullanıcı ip adresini görmeyi arzularız. Ya da güvenli ödeme sistemlerini uygulamanıza entegre ediyorsanız, Iyzico gibi ödeme platformları bu bilgiyi sizlerden isteyecektir.

Öncelikli olarak, IP adresini alabilmemiz için AndroidManifest.xml dosyamızda aşağıdaki izin tanımlanmalıdır.

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

Sonrasında ise kullanacağınız Activity / Fragment yada Helper classlarınızda aşaıdaki fonksiyon aracılığıyla , IP adresini string olarak almanız mümkün olacaktır.

    public String getIPAddress() {
        String ipaddress = "";

        try {
            for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
                NetworkInterface intf = en.nextElement();
                for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                    InetAddress inetAddress = enumIpAddr.nextElement();
                    if (!inetAddress.isLoopbackAddress() && InetAddressUtils.isIPv4Address(inetAddress.getHostAddress()) ) {
                         ipaddress = inetAddress.getHostAddress();
                    }
                }
            }
        } catch (SocketException ex) {
        }

        return ipaddress;
    }

Yukarda ki fonksiyonda IPV4 adresini almamıza yarayan kısım ise aşağıdaki satırda belirtilmiştir

if (!inetAddress.isLoopbackAddress() && InetAddressUtils.isIPv4Address(inetAddress.getHostAddress()) )

Ayrıca bazı arkadaşlarımız muhtemelen InetAddressUtils in çözümlenemdiği hatası ile karşılaşacatır. Bu hatanın sebebi ise bildiğiniz üzere, API version 23 ve sonrasında Apache paketlerinin kullanımının kaldırılmış olmasıdır. Bu duruma karşın, projenizi API version 23 öncesi build ederek devam edebilir ya da kendiniz Apache kütüphanelerini ayrı bir kütüphaneymiş gibi ekleyebilirsiniz.

Bunun için sizlere 2 farklı yol göstereceğim ;

1- useLibrary() ile Apache kütüphanelerinin çekilmesi

Uygulamanızın build.gradle dosyasında

useLibrary 'org.apache.http.legacy'

kullanarak , Apache kütüphanelerini kullanmaya devam edebilirsiniz. Örnek bir kullanım şu şekilde olmalıdır ;

android {
    compileSdkVersion 23
    buildToolsVersion '23.0.0'
    useLibrary 'org.apache.http.legacy'
    defaultConfig {
        applicationId 'com.happycoderz.ipexample'
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName '1.0'
    }
}

Bu kullanımda dikkat etmemiz gereken bir diğer hususta uygulamamızın ana dosyasında Gradle versiyonumuzun minimum 1.5.0 olmasıdır.

buildscript {
    repositories {
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
    }
}

2- Normal bir 3rd party kütüphane gibi eklemek

Bu metod benim de tercih ettiğim ve diğerine göre daha sancısız olan bir metoddur. Uygulamanızın build.gradle dosyasına herhangi bir kütüphaneyi ekler gibi

compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'

eklemeniz, gerekli tüm Apache classlarını kullanabilmeniz için yeterli olacaktır.

İpucunu yararlı bulduğunuzu ümit ediyorum, diğer derslerimize de göz atmayı unutmayınız.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir