Apakah mungkin untuk mendapatkan alamat IP perangkat menggunakan beberapa kode?
android
ip-address
Nilesh Tupe
sumber
sumber
Jawaban:
Ini adalah utilitas pembantu saya untuk membaca alamat IP dan MAC. Implementasinya murni-java, tapi saya punya blok komentar di
getMACAddress()
mana dapat membaca nilai dari file Linux (Android) khusus. Saya telah menjalankan kode ini hanya pada beberapa perangkat dan Emulator tetapi beri tahu saya di sini jika Anda menemukan hasil yang aneh.Utils.java
sumber
toUpperCase()
. PenangkapanException
selalu cerdik (dan metode penolong harus membuang pula dan membiarkan penelepon berurusan dengan Pengecualian - meskipun tidak mengubah ini). Pemformatan: tidak boleh lebih dari 80 baris. Eksekusi bersyarat untukgetHardwareAddress()
- patch: github.com/Utumno/AndroidHelpers/commit/… . Apa kamu bilang ?Ini bekerja untuk saya:
sumber
getHostAddress()
, yang mendukung alamat IPv4 dan IPv6. Metode ini tidak mendukung alamat IPv6.Saya menggunakan kode berikut: Alasan saya menggunakan kode hash adalah karena saya mendapatkan beberapa nilai sampah yang ditambahkan ke alamat ip ketika saya menggunakan
getHostAddress
. TetapihashCode
bekerja dengan sangat baik bagi saya karena saya dapat menggunakan Formatter untuk mendapatkan alamat ip dengan format yang benar.Berikut adalah contoh outputnya:
1.menggunakan
getHostAddress
:***** IP=fe80::65ca:a13d:ea5a:233d%rmnet_sdio0
2.menggunakan
hashCode
danFormatter
:***** IP=238.194.77.212
Seperti yang Anda lihat metode 2 memberi saya apa yang saya butuhkan.
sumber
getHostAddress()
akan melakukan hal yang sama seperti hal-hal formatter yang Anda tambahkan.Saya telah menambahkan
inetAddress
instanceofInet4Address
untuk memeriksa apakah ini adalah alamat ipv4.sumber
Meskipun ada jawaban yang benar, saya membagikan jawaban saya di sini dan berharap cara ini akan lebih nyaman.
sumber
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Kode di bawah ini dapat membantu Anda .. Jangan lupa untuk menambahkan izin ..
Tambahkan izin di bawah ini dalam file manifes.
selamat coding !!
sumber
Anda tidak perlu menambahkan izin seperti apa masalahnya dengan solusi yang diberikan sejauh ini. Unduh situs web ini sebagai string:
http://www.ip-api.com/json
atau
http://www.telize.com/geoip
Mengunduh situs web sebagai string dapat dilakukan dengan kode java:
http://www.itcuties.com/java/read-url-to-string/
Parsing objek JSON seperti ini:
https://stackoverflow.com/a/18998203/1987258
Atribut json "query" atau "ip" berisi alamat IP.
sumber
sumber
Metode getDeviceIpAddress mengembalikan alamat ip perangkat dan lebih memilih alamat antarmuka wifi jika terhubung.
sumber
Ini adalah pengerjaan ulang dari jawaban ini yang menghapus informasi yang tidak relevan, menambahkan komentar yang bermanfaat, nama variabel lebih jelas, dan meningkatkan logika.
Jangan lupa untuk menyertakan izin berikut:
InternetHelper.java:
sumber
versi minimalis kotlin
sumber
sumber
Cukup gunakan Volley untuk mendapatkan ip dari situs ini
sumber
Baru-baru ini, alamat IP masih dikembalikan oleh
getLocalIpAddress()
meskipun terputus dari jaringan (tidak ada indikator layanan). Ini berarti alamat IP yang ditampilkan dalam Pengaturan> Tentang telepon> Status berbeda dari apa yang dipikirkan aplikasi.Saya telah menerapkan solusi dengan menambahkan kode ini sebelumnya:
Apakah itu membunyikan bel untuk siapa pun?
sumber
di Kotlin, tanpa Formatter
sumber
Dalam aktivitas Anda, fungsi berikut
getIpAddress(context)
mengembalikan alamat IP telepon:sumber
Ini adalah versi kotlin dari @Nilesh dan @anargund
sumber
Perangkat mungkin memiliki beberapa alamat IP, dan yang digunakan dalam aplikasi tertentu mungkin bukan IP yang akan dilihat oleh server yang menerima permintaan. Memang, beberapa pengguna menggunakan VPN atau proxy seperti Cloudflare Warp .
Jika tujuan Anda adalah untuk mendapatkan alamat IP seperti yang ditunjukkan oleh server yang menerima permintaan dari perangkat Anda, maka yang terbaik adalah meminta layanan geolokasi IP seperti Ipregistry (penafian: Saya bekerja untuk perusahaan) dengan klien Java-nya:
https://github.com/ipregistry/ipregistry-java
Selain sangat mudah digunakan, Anda mendapatkan informasi tambahan seperti negara, bahasa, mata uang, zona waktu untuk IP perangkat dan Anda dapat mengidentifikasi apakah pengguna menggunakan proxy.
sumber
Ini adalah cara termudah dan sederhana yang pernah ada di internet ... Pertama-tama, tambahkan izin ini ke file manifes Anda ...
"INTERNET"
"ACCESS_NETWORK_STATE"
tambahkan ini dalam file Aktivitas onCreate ..
Sekarang Tambahkan fungsi ini ke MainActivity.class Anda.
sumber
Jika Anda memiliki shell; ifconfig eth0 bekerja untuk perangkat x86 juga
sumber
Silakan periksa kode ini ... Menggunakan kode ini. kita akan mendapatkan ip dari internet seluler ...
sumber
Saya tidak melakukan Android, tetapi saya akan mengatasinya dengan cara yang sama sekali berbeda.
Kirim kueri ke Google, sesuatu seperti: https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=my%20ip
Dan merujuk ke bidang HTML di mana respons diposting. Anda juga dapat meminta langsung ke sumbernya.
Google paling suka berada di sana lebih lama dari Aplikasi Anda.
Hanya ingat, bisa jadi pengguna Anda tidak memiliki internet saat ini, apa yang Anda inginkan terjadi!
Semoga berhasil
sumber
Kamu bisa melakukan ini
sumber
sumber
Sejujurnya saya hanya sedikit terbiasa dengan keamanan kode, jadi ini mungkin hack-ish. Tetapi bagi saya ini adalah cara paling serbaguna untuk melakukannya:
sumber
Kompilasi beberapa ide untuk mendapatkan ip wifi dari
WifiManager
dalam solusi kotlin yang lebih baik:Atau Anda bisa mendapatkan alamat IP dari perangkat loopback ip4 melalui
NetworkInterface
:sumber
Berdasarkan apa yang telah saya uji, inilah proposal saya
sumber