在运行时是否需要互联网权限申请(Android)?

8
对于Android,我们需要在运行时请求权限,以确保用户更好地理解何时和为何需要权限。我知道对于像WRITE_CALENDARACCESS_FINE_LOCATION这样的权限是必须的,但似乎对于INTERNET权限不需要。这并不奇怪,因为几乎所有应用程序都使用互联网。
那么,我只需要在清单文件中声明INTERNET权限吗?
<uses-permission android:name="android.permission.INTERNET" />

我应该在运行时检查它吗?
4个回答

22
不,你不应该在运行时请求INTERNET权限。 INTERNET属于正常权限组,如果在清单文件中声明,则系统会自动授予它们,如此文档所述

正常权限不会直接威胁用户的隐私。如果您的应用在其清单文件中列出了一个正常权限,则系统将自动授予该权限。


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

Your permission is right but you have to check internet connectivity before using any internet related function . You can check internet connected or not by following function 


public static boolean isNetworkOnline(Context con)
    {
        boolean status = false;
        try 
        {
            ConnectivityManager cm = (ConnectivityManager) con
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo netInfo = cm.getNetworkInfo(0);

            if (netInfo != null && netInfo.getState() == State.CONNECTED) {
                status = true;
            } else {
                netInfo = cm.getNetworkInfo(1);

                if (netInfo != null && netInfo.getState() == State.CONNECTED) {
                    status = true;
                } else {
                    status = false;
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }

        return status;
    }

1

网络权限与sdk 23之前的权限相同,应用程序在安装时获得该权限。

INTERNET权限被视为PROTECTION_NORMAL

如果应用程序在其清单中声明需要普通权限,则系统会在安装时自动授予应用程序该权限。系统不会提示用户授予普通权限,用户也无法撤销这些权限。

危险权限需要运行时权限管理。它们还分为“权限组”,因此一旦为该组中的一个权限授予了运行时权限,其他权限就不需要再授予。

还可以在运行时授予权限并将其设置为默认接受,用户也可以随时撤销。


0

默认情况下不需要。只有在应用中需要互联网连接时才使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接