我正在维护一个现有的(非常庞大的,非常敏感的)Android应用程序.
前几天,我收到了客户的电子邮件,该应用程序可能正在声明未被主动使用的权限.
例如,他们希望我删除"WRITE_EXTERNAL_STORAGE"权限.
我已将其删除并编译并运行App.完全没有错误.
但是,正因为如此,我认为我不能认为许可不会被主动使用.
我的问题是"无论如何,如果它被积极使用,我可以轻松地检查许可吗?"
坦率地说,我不想仔细阅读该应用程序的每个细节方面,只是要求许可是否需要.
我没有时间.
我的目标是检查是否正在使用权限.如果没有,请删除该权限.
希望有一种耗时较少的方式.
问候
我怎样才能找到我需要在清单中为我的应用程序添加哪些权限?实际上,当我需要在清单中添加权限以及如何找出我的应用程序时,确实需要在清单中添加一些权限才能在设备上安装它?是否可以从导入的包中找出权限?例如,有没有办法找出我们需要在清单中添加"uses-permission android:name ="com.android.alarm.permission.SET_ALARM"权限,因为我们在代码中添加"import android.app.AlarmManager;"?
我的大问题是:我的应用程序工作正常,但当用户将手机升级到新的Android时,我的应用程序无法运行,我需要找出我的清单中丢失了哪些权限.(例如我们在Android 2.2中不需要任何SD卡访问权限,但在android 4.0中我们需要在清单中添加权限).提前致谢
我正准备将我的应用程序定位到Android 6.0 Marshmallow.
将目标api设置为23时,应用程序会在启动时立即崩溃.logcat输出中没有有用的信息.(它给出了一个"请求的窗口不存在"IllegalStateException,但是,实际上没有什么比类名或行号更有用.)
这很好(不是真的),我最终将其缩小到我的启动活动,在那里我获得了用户的设备IMEI代码(TelephonyManager.getDeviceId()).需要添加运行时权限请求.我理解这一点.
但是,应用程序在众多活动中有60个类,因此需要排序很多代码.如何搜索代码以查找需要运行时权限的所有情况?
当然Google必须想到一种简单的方法让开发人员找到需要权限请求的位置?我想也许注释掉清单中的权限会触发使用权限的编译时错误,或类似的东西,但不是.
我目前的方法是通过浏览应用程序,当它崩溃时,按照我的启动活动进行上述操作,然后慢慢缩小它的位置.这非常低效且耗时.我现在很想把它留在API 22,但我知道迟早要做到这一点.
我将targetSdkVersion设置为23,因此我想实现"在运行时请求权限".(见这里)
如果您忘记检查权限并且告诉您以下内容,Lint会直接调用:
调用需要用户可能拒绝的权限:代码应显式检查权限是否可用(带
checkPermission)或显式处理潜在的"SecurityException"
这是非常好的,我想分析我可能忘记的任何电话的代码,但我找不到我必须在我的检查配置文件中选择的Lint选项.
如何进行检查?谢谢!