运行时是否需要互联网持久性请求(Android)?

时间:2015-12-23 12:22:57

标签: android android-manifest android-permissions runtime-permissions

对于Android,我们需要在运行时询问权限,以确保用户更好地了解何时需要权限。我知道WRITE_CALENDARACCESS_FINE_LOCATION等权限都是如此,但似乎INTERNET不需要这样做。并不奇怪,因为几乎所有应用都使用互联

说我只需要在清单中声明它是否安全?

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

或者我应该经常在运行时检查它吗?

4 个答案:

答案 0 :(得分:19)

不,您不应该在运行时请求INTERNET权限。

INTERNET属于Normal permissions组,如果它们在清单中声明,系统会自动授予它们,如this document中所述:

  

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

答案 1 :(得分: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;
    }

答案 2 :(得分:1)

Internet权限作为pre-sdk 23权限工作。安装应用程序时会获得许可。

INTERNET权限被视为PROTECTION_NORMAL

  

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

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

此外,permssions可以在运行时授予并设置为默认接受,也可以由用户随时撤销。

答案 3 :(得分:0)

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