【问题标题】:Application got crashed : request permission after upgrading app to compileSdkVersion 33/ Android 13应用程序崩溃:将应用程序升级到 compileSdkVersion 33/Android 13 后请求权限
【发布时间】:2022-12-21 22:46:28
【问题描述】:

使用的包:permission_handler: ^10.0.0

应用程序/build.Gradle

compileSdkVersion 33
minSdkVersion 24
targetSdkVersion 33

android/build.gradle

kotlin_version = '1.7.10'

在 AndroidManifest.xml 中添加的权限

  <uses-permission
         android:name="android.permission.MANAGE_EXTERNAL_STORAGE"  tools:ignore="ScopedStorage" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
    <uses-permission android:name="android.permission.CAMERA" />

单击允许或拒绝权限时崩溃登录


E/AndroidRuntime(13312): FATAL EXCEPTION: main
E/AndroidRuntime(13312): Process: com.app.example, PID: 13312
E/AndroidRuntime(13312): java.lang.AssertionError
E/AndroidRuntime(13312):    at io.flutter.plugins.firebase.messaging.FlutterFirebasePermissionManager.onRequestPermissionsResult(FlutterFirebasePermissionManager.java:33)
E/AndroidRuntime(13312):    at io.flutter.embedding.engine.FlutterEngineConnectionRegistry$FlutterEngineActivityPluginBinding.onRequestPermissionsResult(FlutterEngineConnectionRegistry.java:777)
E/AndroidRuntime(13312):    at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.onRequestPermissionsResult(FlutterEngineConnectionRegistry.java:409)
E/AndroidRuntime(13312):    at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onRequestPermissionsResult(FlutterActivityAndFragmentDelegate.java:757)
E/AndroidRuntime(13312):    at io.flutter.embedding.android.FlutterFragment.onRequestPermissionsResult(FlutterFragment.java:915)
E/AndroidRuntime(13312):    at io.flutter.embedding.android.FlutterFragmentActivity.onRequestPermissionsResult(FlutterFragmentActivity.java:549)
E/AndroidRuntime(13312):    at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:8833)
E/AndroidRuntime(13312):    at android.app.Activity.dispatchActivityResult(Activity.java:8663)
E/AndroidRuntime(13312):    at android.app.ActivityThread.deliverResults(ActivityThread.java:5857)
E/AndroidRuntime(13312):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:5903)
E/AndroidRuntime(13312):    at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:54)
E/AndroidRuntime(13312):    at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
E/AndroidRuntime(13312):    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
E/AndroidRuntime(13312):    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
E/AndroidRuntime(13312):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2438)
E/AndroidRuntime(13312):    at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime(13312):    at android.os.Looper.loopOnce(Looper.java:226)
E/AndroidRuntime(13312):    at android.os.Looper.loop(Looper.java:313)
E/AndroidRuntime(13312):    at android.app.ActivityThread.main(ActivityThread.java:8663)
E/AndroidRuntime(13312):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(13312):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
E/AndroidRuntime(13312):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
I/Process (13312): Sending signal. PID: 13312 SIG: 9

权限请求代码

Future<PermissionStatus> requestStoragePermission() async {
  return Platform.isAndroid ? Permission.storage.request() : Permission.photos.request();
}

【问题讨论】:

标签: flutter dart android-permissions


【解决方案1】:

此问题是由于 firebase_messaging: 13.0.0 引起的

升级所有与 firebase 相关的包将解决此崩溃问题。


  firebase_core: ^1.22.0
  firebase_auth: ^3.8.0
  firebase_messaging: ^13.0.1
  firebase_dynamic_links: ^4.3.7

在 Github 中关闭的问题:

https://github.com/firebase/flutterfire/issues/9430 https://github.com/firebase/flutterfire/issues/9429

【讨论】:

    【解决方案2】:

    在我这边,问题是由firebase_messaging: ^13.0.0请求通知权限引起的

    降级到 firebase_messaging: ^12.0.3后,应用停止崩溃

    【讨论】:

      【解决方案3】:

      https://developer.android.com/about/versions/13/behavior-changes-13#granular-media-permissions

      我遇到了同样的问题。我相信在这种情况下,READ_EXTERNAL_STORAGE 不再是 Android 13 上的有效权限。我试图请求存储权限,但它像你提到的那样崩溃了。

      但是,我认为我们的应用程序需要支持比 Android 13 更早的版本。我们应该如何正确处理旧版本(需要存储权限)和较新的 Android 13 版本(不需要/支持存储权限)。

      【讨论】:

      • 您需要在权限标签中使用“android:maxSdkVersion=32”标签。您可以在此处找到更多相关信息:medium.com/tech-takeaways/…。最后,您应该考虑删除您的答案,因为您不会尝试为原始问题提供解决方案,而是发布后续问题。
      猜你喜欢
      • 2018-09-15
      • 2017-07-05
      • 2018-03-27
      • 2013-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      • 1970-01-01
      相关资源
      最近更新 更多