android - requestPermission() 没有完全重新创建 Activity 堆栈

标签 android android-permissions android-6.0-marshmallow

我有启动 Activity B 的 Activity A。此 Activity 然后请求 READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE。在 Android 6.0 上,这会弹出权限对话框(一旦弹出对话框,它会立即销毁 Activity B)。但是,无论用户选择什么,系统都会返回 Activity A。

请求其他权限在其他地方工作正常,但我想外部存储权限是其中一些权限,正如文档警告的那样,“需要重新启动应用程序”,以及“系统将重新创建 Activity 堆栈”。

我的问题是永远不会重新创建 Activity B,更不用说 onRequestPermissionsResult 被调用了。我原以为“重新创建 Activity 堆栈”涉及再次启动 Activity B,理想情况下 onRequestPermissionResult 被调用。我该如何处理?

最佳答案

which immediately destroys activity B as soon as the dialog pops up

这听起来很奇怪。 Activity B 应在此时暂停(也可能停止),而不是销毁。你确定你没有调用 finish() 或使用像 noHistory 这样的属性吗? ?

您可能能够在事件日志中的 am_finish_activity 和/或 am_destroy_activity 打印中找到一些线索,说明为什么您的 Activity 被销毁。我使用返回按钮离开 Gmail 的示例(注意 app-requestfinish-imm 原因):

$ adb logcat -bevents
I/am_finish_activity( 1155): [0,947820256,3228,com.google.android.gm/.ConversationListActivityGmail,app-request]
I/am_pause_activity( 1155): [0,947820256,com.google.android.gm/.ConversationListActivityGmail]
I/am_on_paused_called(17619): [0,com.google.android.gm.ConversationListActivityGmail]
I/am_home_stack_moved( 1155): [0,1,0,0,prevFinished]
I/wm_task_moved( 1155): [3162,1,1]
I/am_focused_activity( 1155): [0,com.android.launcher/com.android.launcher2.Launcher]
I/am_resume_activity( 1155): [0,285205047,3162,com.android.launcher/com.android.launcher2.Launcher]
I/am_on_resume_called(24956): [0,com.android.launcher2.Launcher]
I/am_destroy_activity( 1155): [0,947820256,3228,com.google.android.gm/.ConversationListActivityGmail,finish-imm]

不确定这些字符串的原因有多详细,但如果您真的很难弄明白,那么值得一看。

关于android - requestPermission() 没有完全重新创建 Activity 堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33339969/

相关文章:

java - 如何将 int 值传递给另一个类

android - 使用 JakeWharton/ViewPagerIndicator 时部分显示下一项和上一项

java - 如何从指纹扫描仪获取输入并保存

android - READ_PHONE_STATE 权限似乎在 Android 11 中被主动拒绝

android - 使用 MVP 架构在运行时检查权限的最佳方法是什么?

android - 在 AAR 中请求 Marshmallow 的许可

android - Android M 中同时连接时获取 LTE 和 WiFi 的 IP 地址

android - 为什么我的 ScrollView 只有在不需要滚动的时候才会太宽?

java - 如何通过预先添加 IP 和 UDP 或 TCP header 来转发从套接字读取的数据?

android - 如何在eclipse和android studio中为marshmallow设置App权限?