permissions-dispatcher / PermissionsDispatcher

A declarative API to handle Android runtime permissions.
https://github.com/permissions-dispatcher/PermissionsDispatcher
Apache License 2.0
11.23k stars 1.44k forks source link

When this library is applied to Fragment and run on Android 8.0, "System UI has stopped" is displayed. #654

Open kwmt opened 4 years ago

kwmt commented 4 years ago

FAQs


Overview

Expected

Actual

Environment

Reproducible steps

  1. Ready on Android8.0 device ( What I saw was an emulator.)
  2. Run the following branch. https://github.com/kwmt/PermissionsDispatcher/tree/system-stop-on-fragment

This is a difference. https://github.com/kwmt/PermissionsDispatcher/pull/1

hotchemi commented 4 years ago

Thx! In summary in Android 8.0 Fragment#requestPermissions has a bug and causes a crash? 👀 Let us check anyway 🙇

hotchemi commented 4 years ago

I've tried kwmt#1 with 8.0.0 emulator but somehow couldn't see the error. Could we get more detail or error message if possible? 🙇 @kwmt

kwmt commented 4 years ago

Hi, @hotchemi Thank you for trying. It's a mystery 🤔

I hope this will help.

hotchemi commented 4 years ago

umm, thx let us check again! 🙇

0xByteLeon commented 4 years ago

@hotchemi

In PermissionsRequestFragment onAttach Method activity?.requestedOrientation = if (context.resources.configuration.orientation == ORIENTATION_PORTRAIT) ActivityInfo.SCREEN_ORIENTATION_PORTRAIT else ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE

Android8.0 can't set orientation sometime ,Please fix this bug

Caused by: java.lang.IllegalStateException: Only fullscreen activities can request orientation at android.os.Parcel.readException(Parcel.java:1959) at android.os.Parcel.readException(Parcel.java:1897) at android.app.IActivityManager$Stub$Proxy.setRequestedOrientation(IActivityManager.java:5760) at android.app.Activity.setRequestedOrientation(Activity.java:5793) at permissions.dispatcher.ktx.PermissionsRequestFragment.onAttach(PermissionsRequestFragment.kt:26) at androidx.fragment.app.Fragment.performAttach(Fragment.java:2672) at androidx.fragment.app.FragmentStateManager.attach(FragmentStateManager.java:263) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1170) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356) at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497) at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:447) at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2169) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1992) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1947) at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1818) at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:303) at permissions.dispatcher.ktx.PermissionRequestType.requestPermissions$ktx_release(PermissionRequestType.kt:80)

Moster1h commented 4 years ago

I also encountered this problem, and the version used was 4.7.0.