【问题标题】:Why does my android app instantly close when opening it?为什么我的安卓应用在打开时会立即关闭?
【发布时间】:2022-01-11 10:03:39
【问题描述】:

我在 VS 2022 中使用 Xamarin 创建一个 android 应用程序。我的主要目标是 Android 10,但我的目标是最小的 Android 8 和最大的 Android 11。当我在使用 Android 11 的 android 模拟器上启动此应用程序时,我的应用程序会立即退出,而不会出现错误消息。

感谢您的帮助

编辑:

在日志中我发现这个错误两次,这是因为Android 10和Android 11之间的权限处理程序不同吗?

android.runtime.JavaProxyThrowable: System.UnauthorizedAccessException: Access to the path '/storage/emulated/0/TBV/log/' is denied. ---> System.IO.IOException: Operation not permitted
   --- End of inner exception stack trace ---
  at System.IO.FileSystem.CreateDirectory (System.String fullPath) [0x00191] in <2615c4eaf97e4dd59aa46c819840e5a3>:0 
  at System.IO.Directory.CreateDirectory (System.String path) [0x0002c] in <2615c4eaf97e4dd59aa46c819840e5a3>:0 
  at TBV.TbvApp.writeError (System.Exception ex, System.String erreur) [0x0002a] in <6f35ba81f5be4c248d54abc0fc5cebb6>:0 
  at TBV.Login.VerifVersionAPK () [0x00306] in <6f35ba81f5be4c248d54abc0fc5cebb6>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.<ThrowAsync>b__7_0 (System.Object state) [0x00000] in <2615c4eaf97e4dd59aa46c819840e5a3>:0 
  at Android.App.SyncContext+<>c__DisplayClass2_0.<Post>b__0 () [0x00000] in <9bc33e0337de495f9ddcd5fdf4e98819>:0 
  at Java.Lang.Thread+RunnableImplementor.Run () [0x00008] in <9bc33e0337de495f9ddcd5fdf4e98819>:0 
  at Java.Lang.IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr native__this) [0x00008] in <9bc33e0337de495f9ddcd5fdf4e98819>:0 
  at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.25(intptr,intptr)
    at mono.java.lang.RunnableImplementor.n_run(Native Method)
    at mono.java.lang.RunnableImplementor.run(RunnableImplementor.java:30)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7656)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

【问题讨论】:

  • 一定是崩溃了,查看日志并添加崩溃报告
  • @Manohar 我已经编辑了我的帖子
  • @FlorianMartinez 权限导致的错误。您是否正确获得了权限?据我所知,当我们被拒绝访问路径时,我们就是无法访问或无法读取或写入文件。你用什么权限让android应用在打开时立即关闭而没有权限?

标签: android xamarin emulation visual-studio-2022 auto-close


【解决方案1】:

您没有在 Android Manifest 中启用正确的权限。您需要启用 WRITE_EXTERNAL_STORAGE、READ_EXTERNAL_STORAGE 和 MANAGE_EXTERNAL_STORAGE。

但是,这可能不适用于 Android 版本 11;

https://developer.android.com/about/versions/11/privacy/storage

这个 SO 问题涵盖了这个主题:Android 11 Scoped storage permissions

【讨论】:

  • 我已经启用了 WRITE_EXTERNAL_STORAGE 和 READ_EXTERNAL_STORAGE。我也已经有requestLegacyExternalStoragetrue
  • 你用的是安卓11吗?您是否阅读了我链接的 SO 问题?
  • 实际上我在模拟器上使用的是 Android 11,但我的应用程序的目标是 Android 10 max。但我想以 Android 11 为目标,而当我以 Android 11 为目标而不做任何更改时,就会发生这种崩溃
  • @FlorianMartinez 您是否尝试过在运行时请求这些权限?比如打开应用的时候?
  • 是的,这可能是问题所在。注释掉实际访问文件存储的代码并添加权限代码。如果应用没有崩溃并且您已授予应用权限,它应该会在下次启动时工作
猜你喜欢
  • 2018-11-05
  • 2017-12-19
  • 2021-01-10
  • 1970-01-01
  • 2022-01-05
  • 2019-03-31
  • 2013-11-17
  • 2020-12-04
  • 2016-12-04
相关资源
最近更新 更多