应用程序启动ChooserActivity与其他应用程序共享图像后关闭,应用程序

问题描述 投票:0回答:1

在具有Android 10的三星设备上,我们遇到问题,在启动ChooserActivity以共享由我们的应用程序创建的图像之后,我们的应用程序已关闭。

日志中没有任何异常。对于用户来说,我们的应用程序似乎已关闭。

我们在其他设备上看不到此行为。

但是在装有Android 10的诺基亚测试设备上,logcat中有一个条目。

2020-05-06 15:48:04.033 4509-4543/packagename E/DatabaseUtils: Writing exception to parcel
java.lang.SecurityException: Permission Denial: reading androidx.core.content.FileProvider uri content://packagename.provider/cache/image-to-share.jpeg from pid=2753, uid=1000 requires the provider be exported, or grantUriPermission()
    at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:742)
    at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:615)
    at android.content.ContentProvider$Transport.enforceFilePermission(ContentProvider.java:606)
    at android.content.ContentProvider$Transport.openTypedAssetFile(ContentProvider.java:520)
    at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:307)
    at android.os.Binder.execTransactInternal(Binder.java:1021)
    at android.os.Binder.execTransact(Binder.java:994)

跟随警告

2020-05-06 15:48:04.034 2753-5090/? W/ChooserActivity: Could not load (content://packagename.provider/cache/image-to-share.jpeg) thumbnail/name for preview. If desired, consider using Intent#createChooser to launch the ChooserActivity, and set your Intent's clipData and flags in accordance with that method's documentation

我不知道这是否可能是三星设备完全使用我们的应用程序的原因。在我们的测试设备上,即使此消息出现在日志中,也可以正常工作。

这是我们如何启动ChooserActivity的代码

val share = Intent(Intent.ACTION_SEND)
share.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)

share.type = "*/*"
share.putExtra(Intent.EXTRA_TEXT, link)

share.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(activity!!, BuildConfig.APPLICATION_ID + ".provider", fileToShare!!))
startActivityForResult(Intent.createChooser(share, "Share Image"), REQUEST_CODE_CHOOSER_INTENT)

这里是AndroidManifest.xml中我们的文件提供者的定义>

<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/file_paths" />
</provider>

[file_paths.xml看起来像这样

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <cache-path name="cache" path="."/>
</paths>

有人在三星设备上也有此问题,或者可以告诉我如何解决在日志中看到的错误,以便我们可以测试是否可以解决三星设备上的问题?

在具有Android 10的三星设备上,我们遇到了问题,启动ChooserActivity共享我们的应用创建的图像后,我们的应用已关闭。日志或其他任何内容都没有例外。 ...

android android-intent sharing
1个回答
0
投票

如错误所述,在AndroidManifest.xml文件的提供程序组件中,使文件提供程序可导出,]

android:exported="true"
© www.soinside.com 2019 - 2024. All rights reserved.