Dummy1234
Dummy1234

Reputation: 177

How to print the IP address of a website in Android with InetAddress

How to print the IP address of a website in Android? I can run InetAddress and print it by using system.out.println() in netbean. Below is my sample coding:

public String getHostAddress () {
        InetAddress addr=null;
        try {
            addr= InetAddress.getByName("www.google.com");
        }
            
        catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            }
        return addr.getHostAddress();
    }

It always shows "Unfortunately, your program has stopped."
May I know is there any way to get the IP address of the visited website in Android?

05-19 14:22:39.008: I/dalvikvm(1062): threadid=3: reacting to signal 3
05-19 14:22:39.049: I/dalvikvm(1062): Wrote stack traces to '/data/anr/traces.txt'
05-19 14:22:39.688: I/dalvikvm(1062): threadid=3: reacting to signal 3
05-19 14:22:39.828: I/dalvikvm(1062): Wrote stack traces to '/data/anr/traces.txt'
05-19 14:22:39.929: D/AndroidRuntime(1062): Shutting down VM
05-19 14:22:39.948: W/dalvikvm(1062): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
05-19 14:22:40.039: E/AndroidRuntime(1062): FATAL EXCEPTION: main
05-19 14:22:40.039: E/AndroidRuntime(1062): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.destinationurl/com.android.destinationurl.DestinationURL}: android.os.NetworkOnMainThreadException
05-19 14:22:40.039: E/AndroidRuntime(1062):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at android.os.Looper.loop(Looper.java:137)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at android.app.ActivityThread.main(ActivityThread.java:4424)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at java.lang.reflect.Method.invokeNative(Native Method)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at java.lang.reflect.Method.invoke(Method.java:511)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at dalvik.system.NativeStart.main(Native Method)
05-19 14:22:40.039: E/AndroidRuntime(1062): Caused by: android.os.NetworkOnMainThreadException
05-19 14:22:40.039: E/AndroidRuntime(1062):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at java.net.InetAddress.getByName(InetAddress.java:295)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at com.android.destinationurl.DestinationURL.getHostAddress(DestinationURL.java:57)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at com.android.destinationurl.DestinationURL.onCreate(DestinationURL.java:40)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at android.app.Activity.performCreate(Activity.java:4465)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
05-19 14:22:40.039: E/AndroidRuntime(1062):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
05-19 14:22:40.039: E/AndroidRuntime(1062):     ... 11 more
05-19 14:22:40.248: I/dalvikvm(1062): threadid=3: reacting to signal 3
05-19 14:22:40.283: I/dalvikvm(1062): Wrote stack traces to '/data/anr/traces.txt'
05-19 14:22:40.608: I/dalvikvm(1062): threadid=3: reacting to signal 3
05-19 14:22:40.698: I/dalvikvm(1062): Wrote stack traces to '/data/anr/traces.txt'
05-19 14:22:42.078: I/Process(1062): Sending signal. PID: 1062 SIG: 9

Upvotes: 8

Views: 20739

Answers (4)

Pawan Singh Chauhan
Pawan Singh Chauhan

Reputation: 253

This is because you are making a network call on the main thread.

String address = "";
AsyncTask.execute(new Runnable() {
    @Override
    public void run() {
        address = InetAddress.getByName("www.google.com");
    }
});

Upvotes: 1

user370305
user370305

Reputation: 109257

Simply,

Its your mistake on URL, Just correct it..

"www.google.com" you have 4 w's in your URL...

And add Use-Permission <uses-permission android:name="android.permission.INTERNET"> in manifest file of your android application..

This one is correct..

addr = InetAddress.getByName("www.google.com");

EDIT: Use AsyncTask for Network Operation

String netAddress = null;
 try
  {
   netAddress = new NetTask().execute("www.google.com").get();
  }
  catch (Exception e1)
   {
    e1.printStackTrace();
   }

And this one is NetTask class..

public class NetTask extends AsyncTask<String, Integer, String>
    {
        @Override
        protected String doInBackground(String... params)
        {
            InetAddress addr = null;
            try
            {
                addr = InetAddress.getByName(params[0]);
            }

            catch (UnknownHostException e)
            {
                            e.printStackTrace();
            }
            return addr.getHostAddress();
        }
    }

Upvotes: 8

premnathcs
premnathcs

Reputation: 555

You have entered the URL wrongly with wwww.google.com.

addr= InetAddress.getByName("www.google.com");

After correction it worked.

Upvotes: 2

&#201;rik Desjardins
&#201;rik Desjardins

Reputation: 993

Make sure that you have all the permissions you need. Maybe your application stops because it does not have proper permissions. Check if you have Internet Access permission in your XML manifest.

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

Upvotes: 1

Related Questions