我创建了一个应用程序,并试图在一个物理设备上安装它。当我试着运行这个设备时,它立即崩溃了。该应用程序在仿真器中运行良好。我的手机是三星Galaxy A30 (安卓11)。该应用程序的minSdkVersion为23,targetSdkVersion为31。我的应用程序允许用户创建他们的科目列表,等级,并为他们的班级创建警报。
我从手机上得到的完全错误:
com.aefyr.sai.model.filedescriptor.ContentUriFileDescriptor$BadContentProviderException: DISPLAY_NAME column is null
at com.aefyr.sai.model.filedescriptor.ContentUriFileDescriptor.name(ContentUriFileDescriptor.java:30)
at com.aefyr.sai.model.apksource.DefaultApkSource.getApkLocalPath(DefaultApkSource.java:47)
at com.aefyr.sai.model.apksource.FilterApkSource.getApkLocalPath(FilterApkSource.java:60)
at com.aefyr.sai.model.apksource.FilterApkSource.nextApk(FilterApkSource.java:28)
at com.aefyr.sai.installer2.impl.rootless.RootlessSaiPackageInstaller.install(RootlessSaiPackageInstaller.java:93)
at com.aefyr.sai.installer2.impl.rootless.RootlessSaiPackageInstaller.lambda$enqueueSession$0$RootlessSaiPackageInstaller(RootlessSaiPackageInstaller.java:70)
at com.aefyr.sai.installer2.impl.rootless.-$$Lambda$RootlessSaiPackageInstaller$ivyAcunEgIkYlu_dB2vN6MOWZPU.run(Unknown Source:6)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)发布于 2022-01-19 15:59:49
我认为原因在于供应商。在Android 11中,您不能再正常使用一些文件路径。使用以下内容创建一个文件provider.xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
name="external_files"
path="." />
</paths>添加必要的路径(阅读有关内容提供程序的内容)。在使用Uri之后,如下所示:
Uri fileUri = FileProvider.getUriForFile(
requireContext(),
BuildConfig.APPLICATION_ID + ".provider",
file);在宣言中添加:
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider" />
</provider>您可以提供出现此错误的代码吗?
https://stackoverflow.com/questions/70770717
复制相似问题