安卓棉花糖:运行应用程序的权限更改

6
我知道,使用Android Marshmallow后,每次需要权限的功能时都必须请求权限。对于新应用程序,我会这样做,但对于旧的大型应用程序来说,情况更加复杂。对于旧的大型应用程序,我在“MainActivity”中请求所有权限。因此,我的应用程序启动并显示地图片段。我毫无问题地请求位置权限。用户同意了。用户将其放在后台,进入应用程序设置并拒绝权限。然后他将应用程序放在前台:应用程序崩溃了!我知道,使用地图片段存在问题。但是应用程序太大了,不能分析每个单独的权限。我需要快速解决方案:权限更改-->重新启动应用程序!!!这就是GoogleMaps所做的!我启动了GoogleMaps,并将其放在后台。GoogleMaps应用程序权限的第一个区别:对于我的应用程序,如果我拒绝了权限,我没有看到Google Maps显示的这条消息:Permission denied。之后,如果我将GoogleMaps放在前台,则应用程序可以重新启动且没有问题。

GoogleMaps重新启动

我需要这个功能用于我的应用程序。有人可以帮助我吗?!?!?

非常感谢!!


在onResume()方法中检查权限,确保已授权,如果没有,请使用clearTop标志启动您的启动活动。 - Viktor Yakunin
@ViktorYakunin 我知道,但这似乎是我所有活动都要做的事情...为此,我编写了“FAST”(更少的代码)解决方案:-) 如果我有20个权限,我必须在每个活动中检查,在系统调用onResume()时每次都要调用8-) - Michele Saccomanno
尝试一下,它可能有效。https://dev59.com/J1wX5IYBdhLWcg3w-Thv#41221852 - Bipin Bharti
试一下这个,可能会起作用 https://dev59.com/J1wX5IYBdhLWcg3w-Thv#41221852 - Bipin Bharti
1个回答

9
当权限被撤销时,您的应用程序将被杀死并重新启动。在后台撤销应用程序权限时,请查看logcat。您将看到以下内容: I/ActivityManager(572): Killing 13896:com.your.app/uxxxx (): permissions revoked 因此,您只需要在“myApplication扩展应用程序”的类中的onCreate()函数中检查权限即可。

1
我有:I/ActivityManager(572): Killing 13896:com.my.app...... 但这并不会重新启动应用程序。只有Activity会重新启动。 - Michele Saccomanno
3
如果授权许可,会怎样呢?我也面临同样的问题,但如果通过设置屏幕授予权限,安卓系统不会重新启动应用程序。 - lostintranslation
17
有人能否在文档中找到这是否是预期行为?我知道当授予权限被拒绝时应用程序为什么会重新启动,但我无论如何都找不到任何关于此的文件记录? - Joe Maher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接