从Android应用程序访问Internet需要什么权限?

Jan*_*usz 585 android android-permissions

运行我的应用程序时出现以下异常:

java.net.SocketException: Permission denied (maybe missing INTERNET permission)
Run Code Online (Sandbox Code Playgroud)

如何解决丢失的权限问题?

Nik*_*nić 1222

INTERNET权限添加到清单文件中.

你必须添加这一行:

<uses-permission android:name="android.permission.INTERNET" /> 
Run Code Online (Sandbox Code Playgroud)

在AndroidManifest.xml中的应用程序标记之外

  • 此标记应放在应用程序标记之前.如果你在申请TAG之后放了if,就会产生警告. (41认同)
  • 重启模拟器(在此之前我需要它才能生效). (2认同)

Fin*_*ith 114

在谷歌播放的最新版本中,谷歌取消了对互联网许可的需求,因为"现在大多数应用都需要它".但是,对于使用旧版本的用户,仍建议将以下代码留在清单中

<uses-permission android:name="android.permission.INTERNET" /> 
Run Code Online (Sandbox Code Playgroud)

  • 您链接的文档说明了Play商店在询问是否安装应用时,如果在用户显示的主要权限列表中不包含Internet权限.它*不会*说使用Internet的应用程序不再需要声明它在其清单的已使用权限列表中这样做.你的意思是说*所有*应用*暗中*使用互联网而不是在他们的清单中这样说吗?也就是说,如果Janusz从*今天的*手机中的问题中运行相同的应用程序,那么当问到这个问题时它会不会像它那样失败? (23认同)
  • 任何对谷歌文档的引用? (2认同)
  • 如果您参考[permission docs](https://developer.android.com/reference/android/Manifest.permission.html#INTERNET),您会发现它不被弃用。弃用的权限是未使用的权限,您不需要在清单中拥有这些权限,因为不再使用它们。未使用的权限可能是因为替换了API,或者是因为不再需要该A​​PI。是的,您需要互联网许可才能访问互联网。即使是有关连接到互联网的基本文档,也说明需要互联网许可。 (2认同)

Kir*_* A. 74

就像下面这样放在上面

<?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>
Run Code Online (Sandbox Code Playgroud)


And*_*Dev 41

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Run Code Online (Sandbox Code Playgroud)


Amy*_*Amy 12

如果你想在你的应用程序中使用互联网以及检查网络状态,即应用程序是否连接到互联网,那么你必须在application标签之外使用下面的代码.

对于Internet权限:

<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)

对于Access网络状态:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Run Code Online (Sandbox Code Playgroud)

完整代码:

<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>
Run Code Online (Sandbox Code Playgroud)


Aks*_*wal 7

如果只是使用互联网然后使用 -

<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)

如果你正在获得互联网的状态,那么也使用 -

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Run Code Online (Sandbox Code Playgroud)

就在应用程序标签上方.


Olo*_*ulu 6

使用这些:

<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" />
Run Code Online (Sandbox Code Playgroud)


小智 6

我有同样的问题,甚至使用 <uses-permission android:name="android.permission.INTERNET" />

如果你想使用httpnot连接 web api https。也许您使用的是 Android 9 (Pie) 或 API 级别 28 或更高版本的 android 设备。android:usesCleartextTraffic默认值为false. 你必须设置为

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:usesCleartextTraffic="true" <!-- this line -->
        ...>
           ...
    </application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

最后,应该是 https

https://developer.android.com/guide/topics/manifest/application-element#usesCleartextTraffic


小智 5

forget about adding the permission into the manifest Add this code as a method

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;
}
Run Code Online (Sandbox Code Playgroud)

and write this in your Main

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);
    }
Run Code Online (Sandbox Code Playgroud)


AG-*_*per 5

只需添加这2个权限即可

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

Run Code Online (Sandbox Code Playgroud)

在你的应用程序中AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.android.networkusage"
        ...>
    
    
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
        <application 
            ...>
            ...
        </application>
    </manifest>
Run Code Online (Sandbox Code Playgroud)

快乐编码:)