首页 编程 软件学院 查看内容

你的Android应用完全不需要那么多的权限

2015-3-5 22:05 911 0

摘要: Android系统的权限从用户的角度来看有时候的确有点让人摸不着头脑。有时候可能你只需要做一些简单的事情(对联系人的信息进行编辑),却申请了远超你应用所需的权限(比如访问所有联系人信息的权...
关键词: nbsp intent 权限 应用 拨号器 用户 Android 系统 电话 ACTION

Android系统的权限从用户的角度来看有时候的确有点让人摸不着头脑。有时候可能你只需要做一些简单的事情(对联系人的信息进行编辑),却申请了远超你应用所需的权限(比如访问所有联系人信息的权限)。 这很难不让用户对你保存戒备。如果你的应用还是闭源的那用户也没办法验证是否你的应用正在把他的联系人信息上传到应用服务器上面去。即使你向用户解释你为什么申请这个权限,他们最后也可能不会相信你。所以我在过去开发Android应用的时候避免去用一些奇技淫巧,因为这会额外去申请权限,用户也会对你不信任。 经过一段时间实践后,我有这样一个体会:你在完成某些操作的时候并不一定需要申请权限的。 比如Android系统中有这样一个权限: android.permission.CALL_PHONE. 你需要这个权限来让你从你的应用中调用拨号器,对吗?下面的代码就是你如果拨打电话的,对吧? [java] view plaincopy<span style="font-size:14px;">Intent intent = new Intent(Intent.ACTION_CALL);  intent.setData(Uri.parse("1234567890"))  startActivity(intent);</span>   错!这个权限可以让你的手机在没有用户操作的情况下打电话!也就是说如果我的应用用了这个权限,我可以在你不知情的情况下每天凌晨三点去拨打骚扰电话。 其实正确的做法是这样的——使用 ACTION_VIEW 或者 ACTION_DIAL: [java] view plaincopy<span style="font-size:14px;">Intent intent = new Intent(Intent.ACTION_DIAL);  intent.setData(Uri.parse("1234567890"))  startActivity(intent);</span>   这个方案的动人之处在于 你的应用就不用申请权限啦。 为什么不需要权限呢?因为你使用的这个 Intent 会启动拨号器,并将你设置好的号码预先拨号。比起之前的方案,现在还需要用户点击“拨号”来打电话,没有用户的参与,这个电话就打不出了。说实话,这让我 感觉很好,现在很多应用申请的权限让人有点不知所措. [java] view plaincopy<span style="font-size:14px;">Intent intent = new Intent(Intent.ACTION_PICK);  intent.setType(StructuredPostal.CONTENT_TYPE);  startActivityForResult(intent, 1);</span>   这意味着我的应用不但不需要申请权限,而且还不要额外的UI。这让应用的用户体验也提升了不少。 在我看 来,Android系统最酷的部分之一就是 它的 Intent 系统。因为Intent 意味着我不需要任何东西都要自己来实现。每个应用都会在Android注册它所擅长处理的数据领域,比如电话号码,短信或者联系人信息。如果什么事情都要 一个应用来解决,那么这个应用会变得十分臃肿。 Android系统另外 一个优点就是我可以利用其它应用所申请的权限,这样我的应用就不需要再次申请了。Android系统中的以上两点可以让你的应用变得更加简单。拨号器需要 权限来拨打电话,但是我只需要一个拨打电话的intent就行了,不需要权限。因为用户信任Android自带的拨号器,但不信任我的应用,这很好啊。
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部