2011-04-19 152 views
18

Android应用程序是否可以将请求的权限声明为可选的?是否有可能在Android中拥有“可选”权限?

I.e.我想编写一个请求一组权限的应用程序,例如其中之一是访问用户联系人。现在,应用程序可以在没有此访问权限的情况下工作并执行有用的事情,但如果授予,它可以做更多事情。

有没有一种方式,并应用到说:“我希望获准X,但你可以拒绝它在这种情况下,我很高兴地功能降低运行?”

+1

否............. – 2011-04-19 06:22:28

回答

9

我不这么认为,因为权限清单中的设置,并通过在安装apk文件的用户所接受。您可以使用减少的权限和有限的功能集来构建应用程序的轻量版本,并将其作为替代方案提供。

+1

但是,这个答案可以帮助:http://stackoverflow.com/questions/9299993/optional-permissions-so-an-app-can-show -on-all-devices-and-enable-optional-featu – 2013-06-26 06:35:00

+0

也检查这个http://www.londatiga.net/it/programming/android/solution-to-make-an-android-app-visible-to-所有设备在谷歌播放何时使用特定功能-2 /关于如何使用功能和权限的更多信息 – 2014-02-12 00:15:03

+0

我认为这个答案不再有效:https://developer.android.com/ training/permissions/requests.html – bvdb 2017-11-05 16:09:24

5

不支持此功能,而不是根据发展的现在。如果您希望看到它已实施,请在Android bug跟踪器上加星号issue 6266

编号:http://code.google.com/p/android/issues/detail?id=6266

+0

我注意到问题6266已经过时了。就我所知,我不清楚为什么,因为这个问题与以往一样相关。 – 2015-11-16 09:27:10

5

有可能通过不要求在“主”的应用程序的权限,并通过创建使用相同android:sharedUserId其他应用程序(“存根”),其中要求授予的权限已安装的应用程序特点。然后,您可以检查许可存根应用程序已经通过检查安装是否

context.checkCallingOrSelfPermission(permission) == PackageManager.PERMISSION_GRANTED 

计算结果为真(与上下文的有效上下文和权限的权限字符串中的一个)。如果确实如此,您的存根应用程序已安装,您可以解锁需要授予权限的功能。如果它是错误的,你只需回到基本功能。

当设计应用程序,就可以轻松地再推出可选权限进入主APK不必如果您发布多个版本更改任何代码,例如。

您现在可以通过触发的安装(之一)存根应用程序(一个或多个)查询从用户权限。因此,如果在某个活动中的某些用户输入后需要您的权限,则在未授予权限(当然,您可以在其前面放置解释性活动)时启动apk以弹出,并在返回时执行该功能包管理器或之前授予的权限。您也可以选择在首选项或首选对话框中的某处启用或禁用权限。

懒惰的人(比如我)就如何把包安装了一个简短的总结:使用类型"application/vnd.android.package-archive"一个file:// -URI创建使用Intent.ACTION_VIEW一个Intent。资产和资源不直接工作,您可以将其捆绑为资产并将其复制到缓存文件夹或类似文件中。


警告:这个答案可能不符合谷歌Play服务条款,因为这种方法有一定的卸载问题(可能泄漏的应用程序,请参见下文),通过第三方机制expecially卸载时(如谷歌播放,因为用户没有看到使用这些方法的帮手应用程序),并且可选特权无法显示在Play商店afaik中。

对于卸载问题我建议你使用的名字,如“MyApp的:XXX权限”,给应用程序的名称为“MyApp的”,因此用户可以很容易地删除它们都在按字母顺序列出名单。或者,如果您可以使存根应用程序变得更复杂,请使用ACTION_PACKAGE_REMOVED as mentioned here

+0

不错的提示!这里是一个演示它的行动https://www.youtube.com/watch?v=u7bDg8EMEFM - 这里的代码https://github.com/ligi/AJShA – ligi 2014-09-02 22:52:21

+0

关于这个“插件”模型的用户界面的相关问题:[用户是否理解通过许可拆分Android应用程序的功能?](https://ux.stackexchange.com/q/76183/40840) – 2016-01-04 17:15:01

+0

@tepples我不认为用户会真正理解它是一个单独的应用程序(除非用户理解整个事情),但正如我在答案中所说的,这种方法因此不太可能在应用程序商店被接受。另外请注意,Android 6确实支持某种形式的可选权限,这个答案很古老。但是,我还没有使用足够它 - 所以我不能提供一个很好的“新”答案:) – dst 2016-01-09 00:25:24

相关问题