Android onRequestPermissionsResult:在onSaveInstanceState之后无法执行此操作
我用重写的生命周期活动方法创建了测试应用程序来记录它。所以我尝试在onRequestPermissionsResult中使用runnable发布消息(handler.post()),以显示对话框片段。结果尚不清楚 一次此runnable在恢复后执行,第二次在恢复后执行。要捕获此错误,您应该多次请求权限。请参阅随附的应用程序和日志: 工作测试:Android onRequestPermissionsResult:在onSaveInstanceState之后无法执行此操作,android,android-fragments,android-permissions,Android,Android Fragments,Android Permissions,我用重写的生命周期活动方法创建了测试应用程序来记录它。所以我尝试在onRequestPermissionsResult中使用runnable发布消息(handler.post()),以显示对话框片段。结果尚不清楚 一次此runnable在恢复后执行,第二次在恢复后执行。要捕获此错误,您应该多次请求权限。请参阅随附的应用程序和日志: 工作测试: D/LifecycleActivity:请求权限 D/生命周期活动:暂停 D/生命周期活动:onSaveInstanceState D/生命周期活动:on
D/LifecycleActivity:请求权限
D/生命周期活动:暂停
D/生命周期活动:onSaveInstanceState
D/生命周期活动:onRequestPermissionsResult
D/生命周期活动:恢复时
D/生命周期活动:onResumeFragments
D/生命周期活动:在恢复后进行
D/生命周期活动:onRequestPermissionsResult(已发布)
D/LifecycleActivity:显示对话框 测试失败:
D/LifecycleActivity:请求权限
D/生命周期活动:暂停
D/生命周期活动:onSaveInstanceState
D/生命周期活动:onRequestPermissionsResult
D/生命周期活动:onRequestPermissionsResult(已发布)
D/生命周期活动:显示对话框
E/AndroidRuntime:致命异常:main java.lang.IllegalStateException:在onSaveInstanceState之后无法执行此操作 onRequestPermissionResult方法代码:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull
String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions,
grantResults);
Log.d(TAG, "onRequestPermissionsResult");
new Handler(Looper.myLooper()).post(new Runnable() {
@Override
public void run() {
Log.d(TAG, "onRequestPermissionsResult (posted)");
displayDialog();
}
});
}
但是我为onActivityForResult回调实现了相同的逻辑,它可以100%工作
我在issuetracker.google.com上问了这个问题:。我的问题是列表中的最后一个问题,我将已实施的项目附在后面
为什么onRequestPermissionsResult中的发布消息的工作方式不同?没有代码,也没有API级别的详细信息,没有具体问题。请给出一个再现报告问题的最小示例,并说明确切的问题是什么。没有关于API级别的代码和细节,没有具体问题。请给出一个再现报告问题的最小示例,并说明确切的问题是什么。