如何找到代码中需要权限的所有部分
How to find all parts in the code where permissions are needed
我有一个大型项目,其中有很多功能需要权限。问题是一年前开始这个项目的开发人员只是将所有可能的权限添加到清单中。现在的问题是我需要删除所有从未使用过的权限。有没有好的方法或工具来做到这一点?
我想的办法是去掉所有权限,然后测试,看到出现安全异常崩溃后,一一添加。堆栈跟踪还包含缺少权限的提示。我不认为这是一种很好或安全的方法...
我试过这里解释的方法:How to check if Android Permission is actually being used?
但它只做了部分工作。我去掉了所有的权限和运行检查,但是没有找到所有的权限。我在我的代码中使用了蓝牙,并且没有注意到缺少此权限...
在我的猜测中,首先只看 Dangerous permission list recognize your permissions from manifest file and all these permissions in a list just here in this library 他们以相同的方式做到这一点,它将一个接一个地处理所有权限,只需看一下示例
askCompactPermissions(new String[]{PermissionUtils.Manifest_CAMERA, PermissionUtils.Manifest_WRITE_EXTERNAL_STORAGE}, new PermissionResult() {
@Override
public void permissionGranted() {
//permission granted
//replace with your action
}
@Override
public void permissionDenied() {
//permission denied
//replace with your action
}
@Override
public void permissionForeverDenied() {
// user has check 'never ask again'
// you need to open setting manually
// Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
// Uri uri = Uri.fromParts("package", getPackageName(),
null);
// intent.setData(uri);
// startActivityForResult(intent,
REQUEST_PERMISSION_SETTING);
}
});
Activity 从 ActivityManagePermission 扩展您的ActivityClass,如下所示
public class MainActivity extends ActivityManagePermission {
}
对于 Fragement,从 FragmentManagePermission
扩展了 yourFragmentClass
public class FragmentHome extends FragmentManagePermission {
}
我有一个大型项目,其中有很多功能需要权限。问题是一年前开始这个项目的开发人员只是将所有可能的权限添加到清单中。现在的问题是我需要删除所有从未使用过的权限。有没有好的方法或工具来做到这一点?
我想的办法是去掉所有权限,然后测试,看到出现安全异常崩溃后,一一添加。堆栈跟踪还包含缺少权限的提示。我不认为这是一种很好或安全的方法...
我试过这里解释的方法:How to check if Android Permission is actually being used? 但它只做了部分工作。我去掉了所有的权限和运行检查,但是没有找到所有的权限。我在我的代码中使用了蓝牙,并且没有注意到缺少此权限...
在我的猜测中,首先只看 Dangerous permission list recognize your permissions from manifest file and all these permissions in a list just here in this library 他们以相同的方式做到这一点,它将一个接一个地处理所有权限,只需看一下示例
askCompactPermissions(new String[]{PermissionUtils.Manifest_CAMERA, PermissionUtils.Manifest_WRITE_EXTERNAL_STORAGE}, new PermissionResult() {
@Override
public void permissionGranted() {
//permission granted
//replace with your action
}
@Override
public void permissionDenied() {
//permission denied
//replace with your action
}
@Override
public void permissionForeverDenied() {
// user has check 'never ask again'
// you need to open setting manually
// Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
// Uri uri = Uri.fromParts("package", getPackageName(),
null);
// intent.setData(uri);
// startActivityForResult(intent,
REQUEST_PERMISSION_SETTING);
}
});
Activity 从 ActivityManagePermission 扩展您的ActivityClass,如下所示
public class MainActivity extends ActivityManagePermission {
}
对于 Fragement,从 FragmentManagePermission
扩展了 yourFragmentClasspublic class FragmentHome extends FragmentManagePermission {
}