SocketException: Permission Denied?

AndroidUrlInputstreamPermission DeniedSocketexception

Android Problem Overview


My LogCat reads:

08-19 09:29:01.964: WARN/System.err(311): java.net.SocketException: Permission denied
08-19 09:29:02.204: WARN/System.err(311):     at org.apache.harmony.luni.platform.OSNetworkSystem.createStreamSocketImpl(Native Method)
08-19 09:29:02.214: WARN/System.err(311):     at org.apache.harmony.luni.platform.OSNetworkSystem.createStreamSocket(OSNetworkSystem.java:186)
08-19 09:29:02.214: WARN/System.err(311):     at org.apache.harmony.luni.net.PlainSocketImpl.create(PlainSocketImpl.java:265)
08-19 09:29:02.224: WARN/System.err(311):     at java.net.Socket.checkClosedAndCreate(Socket.java:873)
08-19 09:29:02.224: WARN/System.err(311):     at java.net.Socket.connect(Socket.java:1020)
08-19 09:29:02.224: WARN/System.err(311):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:62)
08-19 09:29:02.224: WARN/System.err(311):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:88)
08-19 09:29:02.224: WARN/System.err(311):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHTTPConnection(HttpURLConnectionImpl.java:927)
08-19 09:29:02.224: WARN/System.err(311):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:909)
08-19 09:29:02.234: WARN/System.err(311):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1152)
08-19 09:29:02.234: WARN/System.err(311):     at java.net.URL.openStream(URL.java:653)
08-19 09:29:02.244: WARN/System.err(311):     at around.lowell.Main.onCreate(Main.java:57)
08-19 09:29:02.244: WARN/System.err(311):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-19 09:29:02.244: WARN/System.err(311):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
08-19 09:29:02.244: WARN/System.err(311):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
08-19 09:29:02.244: WARN/System.err(311):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
08-19 09:29:02.244: WARN/System.err(311):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
08-19 09:29:02.244: WARN/System.err(311):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-19 09:29:02.244: WARN/System.err(311):     at android.os.Looper.loop(Looper.java:123)
08-19 09:29:02.244: WARN/System.err(311):     at android.app.ActivityThread.main(ActivityThread.java:4627)
08-19 09:29:02.254: WARN/System.err(311):     at java.lang.reflect.Method.invokeNative(Native Method)
08-19 09:29:02.254: WARN/System.err(311):     at java.lang.reflect.Method.invoke(Method.java:521)
08-19 09:29:02.254: WARN/System.err(311):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-19 09:29:02.264: WARN/System.err(311):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-19 09:29:02.264: WARN/System.err(311):     at dalvik.system.NativeStart.main(Native Method)

The code that I have recently implemented that it is generating this error for in my Android app is:

        FileOutputStream fOut = null;
     	try {
        	fOut = this.openFileOutput("employeeInformation.xml", MODE_PRIVATE);
            try {
            	InputStream is = new URL("http://totheriver.com/learn/xml/code/employees.xml").openStream();
            	int size = is.available();
            	byte[] buffer = new byte[size];
            	is.read(buffer);
            	is.close();
                fOut.write(buffer);
             } catch(Exception e) {
            	 e.printStackTrace();
             }
        } catch (FileNotFoundException e) {
        	e.printStackTrace();
        } finally {
        	try {
        		fOut.close();
            } catch (IOException e) {
            	e.printStackTrace();
            }
        }

Does anyone know what the problem is?

Android Solutions


Solution 1 - Android

Add Internet permission to your manifest:

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

Solution 2 - Android

You need to go to your Manifest file in your android application project then above application section next to other permissions add: android.permission.INTERNET

Your manifest should look something like this:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="18" />
....
<uses-permission android:name="android.permission.INTERNET" />
...
<application
android:allowBackup="true"
....

keep in mind value (android.permission.INTERNET) is case sensitive.

Hope this saves you some time.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMxykView Question on Stackoverflow
Solution 1 - AndroidCristianView Answer on Stackoverflow
Solution 2 - AndroidMatas VaitkeviciusView Answer on Stackoverflow