'Java.net.SocketException: yuva başarısız oldu: EACCES (İzin reddedildi)' hata mesajı


180

Hata mesajını alıyorum

java.net.SocketException: yuva başarısız oldu: EACCES (İzin reddedildi)

Aşağıdaki kodu uygulamaya çalıştığımda. Bu, çağırdığım işlev ve bana bu istisnayı veriyor.

public void run() {
    // TODO Auto-generated method stub
    URL myurl = null;

    try {
        myurl = new URL("http://10.0.2.2/list.JSON");
    }
    catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        URLConnection myconn = myurl.openConnection();
        InputStream in = new BufferedInputStream(myconn.getInputStream());
        InputStreamReader reader = new InputStreamReader(in);
        BufferedReader br = new BufferedReader(reader);
        String line;
        StringBuilder sb = new StringBuilder();
        while ((line=br.readLine()) != null)
        {
            sb.append(line);
            //Toast.makeText(getApplicationContext(), "I enter here", Toast.LENGTH_LONG).show();
        }
        jsoncode = sb.toString();
    }
    catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    threading = true;
    super.run();
}

LogCat :

06-30 11:33:21.457: W/System.err(619): java.net.SocketException: socket failed: EACCES (Permission denied)
06-30 11:33:21.467: W/System.err(619):     at libcore.io.IoBridge.socket(IoBridge.java:573)
06-30 11:33:21.467: W/System.err(619):     at java.net.PlainSocketImpl.create(PlainSocketImpl.java:201)
06-30 11:33:21.479: W/System.err(619):     at java.net.Socket.checkOpenAndCreate(Socket.java:663)
06-30 11:33:21.479: W/System.err(619):     at java.net.Socket.connect(Socket.java:807)
06-30 11:33:21.479: W/System.err(619):     at libcore.net.http.HttpConnection.<init>(HttpConnection.java:77)
06-30 11:33:21.479: W/System.err(619):     at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
06-30 11:33:21.479: W/System.err(619):     at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
06-30 11:33:21.479: W/System.err(619):     at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
06-30 11:33:21.479: W/System.err(619):     at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
06-30 11:33:21.487: W/System.err(619):     at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
06-30 11:33:21.487: W/System.err(619):     at libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
06-30 11:33:21.497: W/System.err(619):     at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
06-30 11:33:21.497: W/System.err(619):     at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
06-30 11:33:21.497: W/System.err(619):     at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
06-30 11:33:21.497: W/System.err(619):     at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
06-30 11:33:21.497: W/System.err(619):     at com.apk.PItestActivity$connection.run(PItestActivity.java:190)
06-30 11:33:21.507: W/System.err(619): Caused by: libcore.io.ErrnoException: socket failed: EACCES (Permission denied)
06-30 11:33:21.517: W/System.err(619):     at libcore.io.Posix.socket(Native Method)
06-30 11:33:21.517: W/System.err(619):     at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:169)
06-30 11:33:21.527: W/System.err(619):     at libcore.io.IoBridge.socket(IoBridge.java:558)
06-30 11:33:21.527: W/System.err(619):     ... 15 more

Ve bu benim manifest dosyam:

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

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

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".PItestActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="addfriend"></activity>
        <activity android:name="updateDetails"></activity>
        <activity android:name="Details"></activity>
        <activity android:name="updateimage"></activity>
    </application>
</manifest>

Bu sorunu nasıl düzeltebilirim?


Cihaz veya Emülatör ile kontrol ediyor musunuz?
Ponmalar

Yanıtlar:


357

Şunu deneyin:

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

onun yerine,

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

1
+1. Ayrıca, bunun gerçek problemle ilgisi olmasa da, bu değişikliği yaptıktan sonra doğru apk'yi yüklemeyi unutmayın ... .apk dosyasının başka bir kopyasını farklı bir dizinde tutarak kendimi kandırdım ve oradan yüklemeden önce yenisiyle yazmayı unuttum.
n611x007

Eclipse kullanarak AndroidManifest.xml dosyasını İzinler sekmesine sahip süslü düzenleyiciyle düzenleyebilirsiniz. Kullanım İzni ekleyin ve bu izni açılır menüden seçin.
jjohn

4
important - kullanım izinleri etiketinin bildirim dosyasındaki uygulama etiketinden önce olması gerekir. Bu benim için en azından ne düzeltti ..
Veya Gal

39

Bunu dene:

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

Ve activity namesşununla böyle olmalısın capital letters:

<activity android:name=".Addfriend"/>
    <activity android:name=".UpdateDetails"/>
    <activity android:name=".Details"/>
    <activity android:name=".Updateimage"/>

4
- Yanıtta ek bilgileriniz varsa, yalnızca yanıtladığınızla aynı mesajınız varsa gönderin ve ardından bu yanıtı destekleyin.
user370305

1
@ user370305 Affedersiniz, sadece ek bilgileri yayınlaması mı gerekiyor? yerli olmamak, ne demek istediğini anlayamıyorum ama meta şeyler hakkında bilmek istiyorum.
n611x007

32

dene.

<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" />

2
Birisi hala nereye koyacağını merak ediyorsa: <application
Tiw

19

Etiketin <uses-permission>dışına taşınmayı deneyin <application>.


7

Uygulamanın cihazdan kaldırılması ve ardından yeniden yüklenmesi benim için düzeltildi.

Diğer tüm seçenekleri denedim, hiçbir şey. Sonunda bu gönderi bulundu . Bu izin eklendikten (aşağıda) ve derlemeyi temizledikten sonra.

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


0

Bu kaynak kodunu Java dosyanıza aşağıdaki gibi ekleyin:

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());

5
Bu, tezahürde iznin eksik olmasıyla ilgili bu sorunun cevabı değildir. Ve bu sorunun cevabı için çok kötü bir cevap, yani NetworkOnMainThreadException.
laalto

0

AndroidStudio - Build - Clean yapmanız gerekebilir

Manifest'i dosya sistemi veya Git üzerinden güncellediyseniz, değişiklikleri almayacaktır.


0

Test için bir emülatör kullanıyorsanız, <uses-permission android:name="android.permission.INTERNET" />sadece kullanmanız ve görmezden gelmeniz gerekir <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.