android - 如何在代码中找到所需的 Android Marshmallow 运行时权限?

标签 android android-permissions android-6.0-marshmallow

我正在准备我的应用以 Android 6.0 Marshmallow 为目标平台。

将目标 api 设置为 23 时,应用程序会在启动时立即崩溃。 logcat 输出中没有有用的信息。 (它给出了一个“请求的窗口不存在”IllegalStateException,但仍然没有像类名或行号这样真正有用的东西。)

这很好(不是真的),我最终将其缩小到我的启动 Activity ,我在其中获取用户的设备 IMEI 代码 (TelephonyManager.getDeviceId())。需要添加运行时权限请求。我明白这一点。

但是,该应用程序有大约 60 个类,涵盖众多 Activity ,因此需要整理大量代码。我怎样才能搜索代码以找到所有需要运行时权限的情况?

Google 一定想出了一种简单的方法,让开发人员可以追踪到哪里需要权限请求?我想也许在 list 中注释掉权限会在使用权限时触发编译时错误,或者类似的错误,但不会。

我目前的方法是通过应用程序,当它崩溃时,像上面那样使用我的启动 Activity 并非常缓慢地缩小它的位置。这是极其低效和耗时的。我很想暂时将其保留在 API 22,但我知道迟早必须这样做。

最佳答案

删除所有AndroidManifest.xml权限。
在 Android Studio 中分析 -> 按名称运行检查 ->常量和资源类型不匹配
您可以检测权限。
image

但是这个检测并不完美...
因为这只检测包含此 xmls 文件的方法。
https://android.googlesource.com/platform/tools/adt/idea/+/master/android/annotations/android
https://android.googlesource.com/platform/tools/adt/idea/+/master/android/annotations/android/accounts/annotations.xml#118

关于android - 如何在代码中找到所需的 Android Marshmallow 运行时权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34679400/

相关文章:

即使设备在同一个地方,Android Google Maps API GPS 位置也会发生变化

android - 在 Android 中调用 911

android - 从服务 Android M 请求位置权限

已授予 Android 权限但仍被拒绝

android - 无法在android棉花糖上选择文件

php - 如何在 php 中将 Android 签名数据分成单独的字符串

java - 2 同时 Android 触摸/未触发

java - 保持持久的http连接

android - 在 Google Play 管理中心更新具有敏感权限的应用

android-MNC 项目不会在 API 级别 'android-MNC' 之前的设备上运行