对于Android,我们需要在运行时询问权限,以确保用户更好地了解何时需要权限。我知道WRITE_CALENDAR
和ACCESS_FINE_LOCATION
等权限都是如此,但似乎INTERNET不需要这样做。并不奇怪,因为几乎所有应用都使用互联
说我只需要在清单中声明它是否安全?
<uses-permission android:name="android.permission.INTERNET" />
或者我应该经常在运行时检查它吗?
答案 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)
默认情况下不需要。只有在您的应用中需要互联网连接时才能使用它。