我准备我的应用以定位Android 6.0 Marshmallow。
将目标api设置为23时,应用程序会在启动时立即崩溃。 logcat输出中没有有用的信息。 (它给出一个"请求窗口不存在" IllegalStateException,但是,实际上没有任何实际有用的类名称或行号。)
这很好(不是真的),我最终将其缩小到我的启动活动,在那里我获得了用户的设备IMEI代码(TelephonyManager.getDeviceId())。需要添加运行时权限请求。我理解这一点。
但是,该应用程序在众多活动中有60个类,因此需要排序很多代码。如何搜索代码以查找需要运行时权限的所有情况?
Google肯定会想到一种简单的方法让开发人员找到需要权限请求的位置?我想也许注释掉清单中的权限会触发使用权限的编译时错误,或类似的东西,但是没有。
我目前的方法是通过浏览应用程序,当它崩溃时,按照我的启动活动进行上述操作,然后慢慢缩小范围。这非常低效且耗时。我现在很想把它留在API 22,但我知道迟早要做到这一点。
答案 0 :(得分:2)
删除所有AndroidManifest.xml权限
分析 - >在Android Studio中按名称运行检查 - > Constant and Resource Type Mismatches
您可以检测权限
但这种检测并不完美......
因为这只检测包含此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
答案 1 :(得分:0)
对我有用的是: 分析 - >按名称运行检查 - >缺少权限