自从从Android6.0以后,个人安全隐私越来越重视,用户对客户端的授权必须收到用户授权。这个Android6.0以后保留一些之前的一些权限方法,保留一些清单文件的权限。唯独更改的是那些及其重要的用户权限。
如下为例子:
不是及其重要的权限:只需在AndroidManifest清单文件
静态权限:
<uses-permission android:name="android.permission.INTERNET" />
重要权限:需要在AndroidManifest清单文件 还需要的代码里面动态申请权限
动态权限:
<uses-permission android:name="android.permission.INTERNET" />
权限函数:
/**
* Request permission
*
* @param permissions
*/
public void requestPermissions(String... permissions) {
if (Build.VERSION.SDK_INT >= 23) {
List<String> list = new ArrayList<>();
for (int i = 0; i < permissions.length; i++) {
if (ContextCompat.checkSelfPermission(this, permissions[i]) != PackageManager.PERMISSION_GRANTED) {
list.add(permissions[i]);
if (ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[i])) {
showToast("没有开启权限将会导致部分功能不可使用");
}
}
}
ActivityCompat.requestPermissions(this, list.toArray(new String[permissions.length]), 0);
}
}
调用方法:
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(android.Manifest.permission.ACCESS_COARSE_LOCATION);
}