7

对于 Android,我们需要在运行时询问权限,以确保用户更好地理解为什么需要权限。我知道这对于像这样的权限是正确的WRITE_CALENDARACCESS_FINE_LOCATION但似乎它不是 INTERNET 所必需的。并不奇怪,因为几乎所有应用程序都使用互联网。

可以说我只需要在清单中声明它吗?

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

或者我应该总是在运行时检查它?

4

4 回答 4

20

不,您不应该在运行时请求INTERNET许可。

INTERNET属于Normal 权限组,如果在 Manifest 中声明,系统会自动授予这些权限组,如本文档所述:

正常权限不会直接危及用户的隐私。如果您的应用在其清单中列出了正常权限,系统会自动授予该权限。

于 2015-12-23T12:27:53.850 回答
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;
    }
于 2015-12-23T12:30:01.563 回答
1

Internet 权限作为 pre-sdk 23 权限工作。在安装应用程序时给予许可。

INTERNET 权限被视为PROTECTION_NORMAL

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

危险权限需要运行时权限管理。它们也位于“权限组”中,因此一旦为该组中的一项权限授予运行时权限,就不需要为同一组中的其他权限授予运行时权限。

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

于 2015-12-23T12:32:15.367 回答
0

默认情况下,它不是必需的。仅当您的应用程序需要互联网连接时才使用它。

于 2015-12-23T12:32:43.060 回答