【问题标题】:Is the request for internet persmission required at runtime (Android)?运行时是否需要互联网许可请求(Android)?
【发布时间】:2016-03-29 21:16:07
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案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;
          }
      

      【讨论】:

        【解决方案3】:

        Internet 权限作为 sdk 23 之前的权限。在安装应用程序时授予权限。

        INTERNET权限被视为PROTECTION_NORMAL

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

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

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-11-03
            • 1970-01-01
            • 2015-09-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多