آموزش به دست آوردن آیپی در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش به دست آوردن آیپی در برنامه نویسی اندروید می پردازیم به دست آوردن آیپی در برنامه خیلی می تواند مفید باشد اگر بخواهید یک کنترل نامحسوس بروی کاربران خود داشته باشید در ادامه با ما همراه باشید.
ابتدا باید دسترسی های مورد نیاز این کار را اضافه کنید.
برای اینکار وارد فایل AndroidManifest.xml شده و دسترسی های زیر را اضافه کنید.
1 2 3 | <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 است و کد زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <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 را باز کرده و کد زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | 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 به دست می آید.
این آموزش هم به پایان رسید.
موفق و موید باشید.
سلام . برای تغییر دادن آی پی و ساخت و*ی پ*ی ا*ن هم میشه توضیح بدین
بله یک آموزشی قرار میدهیم
سلام و خسته نباشید
ببخشید من همین متنو کپی کردم. اما زمانی که به وای فای متصل هستم، همیشه ip تکراری 192.168.1.50 رو میده. حتی اگه مودم رو خاموش و روشن کنم. در حالیکه میدونم ip من این نیست.
زمانیکه به دیتا متصل هستم هم فقط یک کد بزرگ fe80::bc6e:64…. رو میده.
ممنون میشم اگه راهنماییم کنید
با بررسی که کردم اندروید این قابلیت رو حذف کرده ولی میشه با وب سرویس آیپی رو به دست آورد آموزشش را قرار می دهم موفق باشید.
خیلی متشکرم
ببخشید امکانش هست ping گرفتن رو هم آموزش بدید؟
با تشکر.
بله قرار می دهیم
قرار می دهیم