在哪里可以找到有关android特定权限的更多信息

时间:2019-02-14 16:20:38

标签: android android-permissions

我需要从minSdkVersion =“ 19”升级旧的Android应用程序,因此我需要处理所有权限。

在清单中,它需要一些危险的权限。 例如:

<uses-permission android:name="android.permission.BLUETOOTH" /> <!-- normal -->
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!-- normal -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <!-- normal -->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- dangerous -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- ??? -->
<uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- normal -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- normal -->
<uses-permission android:name="android.permission.VIBRATE" /> <!-- normal -->
<uses-permission android:name="android.permission.CAMERA" /> <!-- dangerous -->

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- dangerous -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- dangerous -->

<android:uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- dangerous -->
<android:uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"  android:maxSdkVersion="18" /> <!-- dangerous -->
  1. 如何在代码中找到需要这些危险权限的地方?是否有取决于每个权限的功能列表?

  2. 关于MOUNT_UNMOUNT_FILESYSTEMS-在哪里可以发现它是危险还是正常?

1 个答案:

答案 0 :(得分:1)

在回答具体问题之前,我要说的是,如果普通用户要使用您的应用程序(即从Google Play或其他商店下载该应用程序),那么列出这么多权限可能会吓跑用户。 从这个问题看来,您好像继承了别人的代码,甚至不需要其中的某些权限。

这里要注意的另一重要事项是第三方应用程序(例如,您从Google Play商店下载的应用程序)和电话制造商的应用程序(购买时安装在手机上的大多数应用程序)之间的区别。

制造商应用程序可以使用第三方不能使用的权限。

对您的问题:

  1. 我不记得有每个功能都需要获得许可的完整列表。也许其他人可以在这里启发我们两个人:) 面向Android M及更高版本的代码应使用ContextCompat.checkSelfPermission(Context, String)之类的函数包装所有“危险”行为,并检查是否已授予权限,以避免运行时SecurityException的出现。 但是在旧代码中发现“危险”行为几乎是不可能的,主要是因为Android OS与开发人员的协议是“您只需要在清单中请求这些权限,并且我将确保不会引发任何运行时安全异常”。 恐怕这里需要手动搜索。

  2. 这是来自Android官方文档的所有可用权限的完整列表-

https://developer.android.com/reference/android/Manifest.permission

请注意,第三方应用程序会忽略MOUNT_UNMOUNT_FILESYSTEM权限,因此(除非您为Samsung或Xiaomi工作),您可以从清单中安全删除此权限。

  1. 还请注意,如果您请求FINE_LOCATION权限,则无需同时请求COARSE_LOCATION权限。