easypermissions拒绝权限后闪退。 java.lang.NoSuchMethodError: No virtual method isStateSaved()Z in class Landroid/support/v4/app/FragmentManager

时间:2023-03-09 16:28:34
easypermissions拒绝权限后闪退。 java.lang.NoSuchMethodError: No virtual method isStateSaved()Z in class Landroid/support/v4/app/FragmentManager
Process: com.tazan.cd.streetlight, PID: 18825
java.lang.NoSuchMethodError: No virtual method isStateSaved()Z in class Landroid/support/v4/app/FragmentManager; or its super classes (declaration of 'android.support.v4.app.FragmentManager' appears in /data/app/com.tazan.cd.streetlight-sc-sX-rNCVNlO4qWt3BQkw==/base.apk:classes20.dex)
at pub.devrel.easypermissions.RationaleDialogFragmentCompat.showAllowingStateLoss(RationaleDialogFragmentCompat.java:48)
at pub.devrel.easypermissions.helper.BaseSupportPermissionsHelper.showRequestPermissionRationale(BaseSupportPermissionsHelper.java:43)
at pub.devrel.easypermissions.helper.PermissionHelper.requestPermissions(PermissionHelper.java:66)
at pub.devrel.easypermissions.EasyPermissions.requestPermissions(EasyPermissions.java:148)
at com.tazan.cd.streetlight.activity.MainActivity.requestCodeQRCodePermissions(MainActivity.java:615)
at com.tazan.cd.streetlight.activity.MainActivity.onStart(MainActivity.java:553)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1339)
at android.app.Activity.performStart(Activity.java:7392)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3157)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3302)
at android.app.ActivityThread.-wrap12(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1891)
at android.os.Handler.dispatchMessage(Handler.java:108)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7425)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)

  错误大致如上:

  问题是 isStateSaved是在support 26版本后加入的,可以 compileSdkVersion改为27,并且将easypermissions更新到最新版2.0.1

  或在app的build.gradle里加入下面一段代码统一android support库为27版本

  

subprojects {
afterEvaluate {project ->
if (project.hasProperty("android")) {
android {
compileSdkVersion
buildToolsVersion '27.0.3'
defaultConfig {
targetSdkVersion
} }
}
}
}