如何确定我的Android应用需要某些权限的原因?

假设我接管了 Android应用程序的开发,我的老板问我为什么我们的应用程序需要向在Android Market上购买应用程序的用户显示某些权限.

是否有任何工具或技巧可用于确定哪些代码触发每个权限,因此我可以弄清楚为什么我们的应用程序在功能上需要这些权限?特别是,我对这些权限感兴趣:

>电话 – 阅读电话状态和身份
>系统工具 – 检索正在运行的应用程序 – 允许应用程序检索有关当前和最近运行的任务的信息,允许恶意应用程序发现有关其他应用程序的私人信息.

该应用程序是一个GPS跟踪应用程序,为什么可能需要此权限并不明显.

获取有关为什么可能需要此权限的任何提示也是有帮助的,即使您无法告诉我如何直接分析代码以查找.

解决方法

这是我如何追踪这些.

步骤1 – 查找AndroidManifest.xml中声明的清单权限

基本上< uses-permission />内的所有内容标签例如:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

第2步 – 在developer.android.com上搜索使用这些权限的类

我们以READ_PHONE_STATE为例,目标是找出哪些包需要此权限.在开发者网站上搜索“READ_PHONE_STATE”的简单搜索开始我们的搜索,我们在这里寻找类,在前5个搜索结果中我看到以下类:

> TelephonyManager
> PhoneStateListener

单击类并获取其包名称:

> android.telephony.TelephonyManager
> android.telephony.PhoneStateListener

步骤3在项目中查找导入这些包的类

一个简单的grep会做,或者在eclipse中的Ctrl-H,文件搜索 – >包含文字

第4步注释导入,看看有什么中断

这些可能是为什么需要许可的候选人.通过查看开发门户以确认该方法确实需要该权限来确认相关方法.

最后你应该能够告诉你的老板,READ_PHONE_STATE是必需的,因为我们调用函数XYZ给了我们UVW.

相关文章

Android 如何解决dialog弹出时无法捕捉Activity的back事件 在...
Android实现自定义带文字和图片的Button 在Android开发中经常...
Android 关于长按back键退出应用程序的实现最近在做一个Andr...
android自带的时间选择器只能精确到分,但是对于某些应用要求...