自 Android 6.0(Marshmallow)开始,Google改变了应用程序权限模型,目的是使用户能更好地理解并控制应用所请求的权限。在过去,应用程序在安装时要求所有权限,如果用户不同意,就不能安装应用程序。在新的权限模型中,应用需要在运行时请求必要的权限。
以下是如何在 Android 6.0 及更高版本中请求网络权限的步骤:
步骤1:在AndroidManifest.xml文件中声明所需的权限。如果应用需要访问互联网,那么需要添加INTERNET权限。
<uses-permission android:name="android.permission.INTERNET" />
步骤2:在运行时检查权限。可以使用ContextCompat.checkSelfPermission方法来完成。
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED) {
// Permission is not granted
}
步骤3:如果应用没有所需的权限,那么需要请求权限。这可以通过使用ActivityCompat.requestPermissions方法完成。
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.INTERNET},
MY_PERMISSIONS_REQUEST_INTERNET);
步骤4:处理用户的权限请求回应。当应用调用requestPermissions方法后,系统会弹出一个对话框,向用户请求权限。当用户响应此对话框后,系统会调用应用的onRequestPermissionsResult方法,将用户的响应传递给应用。
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_INTERNET: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 &&
grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay!
} else {
// permission denied, boo!
}
return;
}
// other 'case' lines to check for other
// permissions this app might request.
}
}
请注意,因为INTERNET权限是普通权限,系统会自动授予此权限,因此在运行时无需请求该权限,上述教程更多是适用于危险权限的请求,如读写存储、获取位置等。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/172461.html