Que Permissão eu preciso para acessar a Internet a partir de um aplicativo android?
tenho a seguinte excepção a correr na minha aplicação:
java.net.SocketException: Permission denied (maybe missing INTERNET permission)
Como resolvo o problema da permissão em falta?
11 answers
No último lançamento do Google Play, O Google removeu a necessidade de pedir permissão para a internet como "a maioria dos aplicativos precisam dela de qualquer maneira hoje em dia". No entanto, para os usuários que têm versões mais antigas, ainda é recomendado deixar o código abaixo em seu manifesto
<uses-permission android:name="android.permission.INTERNET" />
Adicione a permissãoINTERNET ao seu ficheiro Manifesto.
Tens de adicionar esta linha:
<uses-permission android:name="android.permission.INTERNET" />
Fora da etiqueta de aplicação no teu AndroidManifest.xml
Põe acima da linha como abaixo
<?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"/>
Se quiser usar a Internet na sua aplicação, bem como verificar o estado da rede, Isto é, se a aplicação está ligada à internet, então terá de usar o código abaixo fora da marca application
.
Para Autorização Da Internet:
<uses-permission android:name="android.permission.INTERNET" />
Para o estado da rede de acesso:
<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>
Se apenas utilizar a internet, utilize-
<uses-permission android:name="android.permission.INTERNET" />
Se está a ficar com o estado da internet, use também -
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Logo acima da etiqueta de Aplicação.
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;
}
E escreve Isto na tua 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);
}
Põe abaixo o código no AndroidManifest:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
De acordo com as versões atuais, o Android não pede permissão para interagir com a internet, mas você pode adicionar o código abaixo que irá ajudar os usuários usando versões mais antigas Adiciona isto ao AndroidManifest.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Utilize estes:
<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 pedir permissão para a internet em seu código você deve adicionar estes ao seu AndroidManifest.ficheiro xml
<uses-permission android:name="android.permission.INTERNET" />
Para uma explicação mais detalhada, goto https://developer.android.com/training/basics/network-ops/connecting