Pregunta

Me sale el siguiente Excepción ejecutar mi aplicación:

java.net.SocketException: Permission denied (maybe missing INTERNET permission)

¿Cómo resolver el problema de permisos que faltan?

¿Fue útil?

Solución

Actualización:
Google elimina la necesidad de pedir permiso a la Internet para la última versión de Google Play.

  

Agregue el [INTERNET] [1] permiso para el archivo de manifiesto.

     

Hay que añadir esta línea:

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

fuera de la etiqueta de aplicación en su AndroidManifest.xml

     

[1]:    https://developer.android.com/training/basics/network-ops /connecting.html

Otros consejos

En la última versión de Google Play, Google elimina la necesidad de pedir permiso a Internet como "la mayoría de las aplicaciones que necesitan de todos modos hoy en día". Sin embargo, para los usuarios que tienen versiones anteriores, todavía se recomienda dejar el código de abajo en su manifiesto

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

sólo hay que poner encima de la línea, como a continuación

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

<uses-sdk
    android:minSdkVersion="9"
    android:targetSdkVersion="16" />

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

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >


    <activity
        android:name="com.example.exp.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

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

Si desea utilizar Internet en su aplicación, así como comprobar el estado de la red, es decir ¿Está aplicación está conectada a la Internet, entonces usted tiene que utilizar a continuación el código fuera de la etiqueta application.

Para obtener permisos de Internet:

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

Para el estado de la red de acceso:

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

código completo:          

<uses-sdk
    android:minSdkVersion="9"
    android:targetSdkVersion="16" />

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

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >


    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

Si simplemente usando Internet, entonces utilizar -

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

Si está recibiendo el estado de Internet, entonces utiliza también -

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

justo encima de la etiqueta de aplicación.

olvidarse de añadir el permiso en el manifiesto Añadir este código como un método

public static boolean hasPermissions(Context context, String... permissions)
{
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null)
    {
        for (String permission : permissions)
        {
            if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED)
            {
                return false;
            }
        }
    }
    return true;
}

y escribir esto en su principal

int PERMISSION_ALL = 1;
    String[] PERMISSIONS = {Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_SMS, Manifest.permission.CAMERA};

    if (!hasPermissions(this, PERMISSIONS)) {
        ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
    }

Sólo hay que poner debajo de código en AndroidManifest:

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

De acuerdo con las versiones actuales, Android no pide permiso para interactuar con Internet, pero usted puede añadir el siguiente código que ayudará a los usuarios que utilizan versiones anteriores Sólo tiene que añadir estos en AndroidManifest

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

Utilice los siguientes:

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

Para solicitud de permiso a internet en su código debe agregar de inmediato a su archivo AndroidManifest.xml

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

Para más detalles explicación Goto https://developer.android.com/ formación / Conceptos básicos / network-ops / conexión

Google elimina la necesidad de pedir permiso a internet para la versión más reciente. Sin embargo, a solicitud de permiso a internet en su código debe agregar de inmediato a su archivo AndroidManifest.xml.

<uses-permission android:name="android.permission.INTERNET"/>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top