آموزش به دست آوردن آیپی در برنامه نویسی اندروید

سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش به دست آوردن آیپی در برنامه نویسی اندروید می پردازیم به دست آوردن آیپی در برنامه خیلی می تواند مفید باشد اگر بخواهید یک کنترل نامحسوس بروی کاربران خود داشته باشید در ادامه با ما همراه باشید.
ابتدا باید دسترسی های مورد نیاز این کار را اضافه کنید.
برای اینکار وارد فایل AndroidManifest.xml شده و دسترسی های زیر را اضافه کنید.

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

فایل layout خودتان را باز کرده در اینجا نام آن برابر با activity_main.xml است و کد زیر را در آن قرار دهید.

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context=".MainActivity" >
 <TextView
 android:id="@+id/textView1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentTop="true"
 android:layout_centerHorizontal="true"
 android:layout_marginTop="188dp"
 android:text="IP Address : "
 android:textAppearance="?android:attr/textAppearanceLarge" />
 <Button
 android:id="@+id/button1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_below="@+id/textView1"
 android:layout_centerHorizontal="true"
 android:layout_marginTop="22dp"
 android:text="Show IP" />
</RelativeLayout>

در بالا یمک دکمه برای انجام عملیات به دست آوردن آیپی و یک TextView برای نمایش آییپی به دست آماده قرار داده ایم.
فایل MainActivity.java را باز کرده و کد زیر را در آن قرار دهید.

package ir.programchi;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;
import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.text.format.Formatter;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
 Button button;
 TextView textview;
 String IPaddress;
 Boolean IPValue;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 button = (Button)findViewById(R.id.button1);
 textview = (TextView)findViewById(R.id.textView1);
 button.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 // TODO Auto-generated method stub
 NetwordDetect();
 }
 });
 }
 private void NetwordDetect() {
 boolean WIFI = false;
 boolean MOBILE = false;
 ConnectivityManager CM = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
 NetworkInfo[] networkInfo = CM.getAllNetworkInfo();
 for (NetworkInfo netInfo : networkInfo) {
 if (netInfo.getTypeName().equalsIgnoreCase("WIFI"))
 if (netInfo.isConnected())
 WIFI = true;
 if (netInfo.getTypeName().equalsIgnoreCase("MOBILE"))
 if (netInfo.isConnected())
 MOBILE = true;
 }
 if(WIFI == true)
 {
 IPaddress = GetDeviceipWiFiData();
 textview.setText(IPaddress);
 }
 if(MOBILE == true)
 {
 IPaddress = GetDeviceipMobileData();
 textview.setText(IPaddress);
 }
}
 public String GetDeviceipMobileData(){
 try {
 for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();
 en.hasMoreElements();) {
 NetworkInterface networkinterface = en.nextElement();
 for (Enumeration<InetAddress> enumIpAddr = networkinterface.getInetAddresses(); enumIpAddr.hasMoreElements();) {
 InetAddress inetAddress = enumIpAddr.nextElement();
 if (!inetAddress.isLoopbackAddress()) {
 return inetAddress.getHostAddress().toString();
 }
 }
 }
 } catch (Exception ex) {
 Log.e("Current IP", ex.toString());
 }
 return null;
 }
 public String GetDeviceipWiFiData()
 {
 WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
 @SuppressWarnings("deprecation")
 String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
 return ip;
 }
}

ابتدا ما باید بررسی کنیم که گوشی چگونه به اینترنت متصل شده است (به وایفا متصل شده است یا به دیتا این بخش را در پست قبلی قرار داده بودیم) سپس بعد از این بررسی آییپی ادرس از طریق ویژگی های networkinterface به دست می آید.
 
این آموزش هم به پایان رسید.
 
موفق و موید باشید.

مطالعه بیشتر