2016-06-10 98 views
2

我有许多活动的应用程序。当我撤销权限时,应用程序在另一个Activity中崩溃。我试图调试应用程序并捕获活动中断的位置,但是当应用程序被终止时,我不能继续调试。我的问题是,有没有办法在全球范围内处理权限?在活动中,我可以检查权限?在onStart? onCreate?在活动中我需要检查权限?提前致谢。Android运行时权限 - 应用程序在用户撤消权限时崩溃。如何处理它?

+1

在使用您需要的权限提供用户反馈并可能再次提示之前,我会检查'onResume()',或者更好。 – 323go

+0

“我不能继续调试” - 不,但你仍然可以看看堆栈跟踪和东西。 “在活动中,我可以检查权限?” - 有时在你崩溃之前。 :-)更具体地说,你需要在去之前检查许可,并做一些需要许可的事情。无论这是由简单的'onCreate()'还是某个特定的用户操作(例如,操作栏项目单击)触发,都将取决于您的应用程序。 – CommonsWare

+0

@CommonsWare我观察到,当权限被撤销时(我通过adb尝试并通过设置手动尝试),应用程序进程才终止。 Android studio logcat没有崩溃日志,没有例外,没有任何东西!可能这就是原创海报的意思,当他说:“当应用程序被杀时,我不能继续调试......”。你有没有注意到这种行为?需要了解如何处理这种情况 - 我有一个服务发送正在进行的通知,当服务以这种方式终止时,无法从通知面板中删除该通知。 – nightlytrails

回答

3

首先,我要感谢@CommonsWare和@nightlyrails,然后想解释我如何解决问题并期望您的评论。

方法onCreate()检查savedInstanceBundle是否为null。如果它为空,则活动刚刚开始,并且一切正常。 如果savedInstanceBundle不为空,我询问权限。

通过这样做,我可以防止应用程序崩溃,每次我撤销权限。

再一次,谢谢你的提示。

相关问题