yanzhenjie / AndPermission

:strawberry: Permissions manager for Android platform.
https://yanzhenjie.com/AndPermission
Apache License 2.0
6.63k stars 1.1k forks source link

多次点拒绝,崩溃java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. #635

Open flygexio opened 4 years ago

flygexio commented 4 years ago

java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=1, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {com.yzy/com.yanzhenjie.permission.PermissionActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. at android.app.ActivityThread.deliverResults(ActivityThread.java:5589) at android.app.ActivityThread.handleSendResult(ActivityThread.java:5630) at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:219) at android.app.ActivityThread.main(ActivityThread.java:8349) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055) Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:696) at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:659) at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:552) at androidx.appcompat.app.AppCompatDialog.setContentView(AppCompatDialog.java:95) at androidx.appcompat.app.AlertController.installContent(AlertController.java:232) at androidx.appcompat.app.AlertDialog.onCreate(AlertDialog.java:279) at android.app.Dialog.dispatchOnCreate(Dialog.java:635) at android.app.Dialog.show(Dialog.java:420) at androidx.appcompat.app.AlertDialog$Builder.show(AlertDialog.java:1009) at com.yzy.permission.setting.PermissionSetting.showSetting(PermissionSetting.java:55) at com.yzy.permission.impl.DefaultPermissionImpl$1.onAction(DefaultPermissionImpl.java:96) at com.yanzhenjie.permission.MRequest.callbackFailed(MRequest.java:154) at com.yanzhenjie.permission.MRequest.onRequestPermissionsResult(MRequest.java:129) at com.yanzhenjie.permission.PermissionActivity.onRequestPermissionsResult(PermissionActivity.java:75) at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:8566) at android.app.Activity.dispatchActivityResult(Activity.java:8416) at android.app.ActivityThread.deliverResults(ActivityThread.java:5582) ... 11 more java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:696) at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:659) at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:552) at androidx.appcompat.app.AppCompatDialog.setContentView(AppCompatDialog.java:95) at androidx.appcompat.app.AlertController.installContent(AlertController.java:232) at androidx.appcompat.app.AlertDialog.onCreate(AlertDialog.java:279) at android.app.Dialog.dispatchOnCreate(Dialog.java:635) at android.app.Dialog.show(Dialog.java:420) at androidx.appcompat.app.AlertDialog$Builder.show(AlertDialog.java:1009) at com.yzy.permission.setting.PermissionSetting.showSetting(PermissionSetting.java:55) at com.yzy.permission.impl.DefaultPermissionImpl$1.onAction(DefaultPermissionImpl.java:96) at com.yanzhenjie.permission.MRequest.callbackFailed(MRequest.java:154) at com.yanzhenjie.permission.MRequest.onRequestPermissionsResult(MRequest.java:129) at com.yanzhenjie.permission.PermissionActivity.onRequestPermissionsResult(PermissionActivity.java:75) at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:8566) at android.app.Activity.dispatchActivityResult(Activity.java:8416) at android.app.ActivityThread.deliverResults(ActivityThread.java:5582) at android.app.ActivityThread.handleSendResult(ActivityThread.java:5630) at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:219) at android.app.ActivityThread.main(ActivityThread.java:8349) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)

shiqos commented 3 years ago

Hi @flygexio

我这边也遇到了同样的问题 在Andorid7.0上 请问你是怎么解决的么

khanh-bh commented 2 years ago

This can be fixed by passing an AppCompat activity to AndPermission.with().

khanhbui commented 2 years ago

This is because WaitDialog inherits AppCompatDialog which requires to use a Theme.AppCompat theme. So I changed the base class to Dialog. Please see #679