android.os.FileUriExposedException: 在 android.os.

我正在按照本教程使用 FileProvider 而不是Uri.FromFile()但是我不确定如何在我的服务中使用 FileProvider。

FileProvider.getUriForFile()需要第一个参数的上下文,但因为我在我的服务中使用它,所以我没有活动上下文。

我应该做些什么?

我需要改变这个:

Uri swatchImageUri = Uri.fromFile(favoritesImageFile);

对于他们上面的建议。

这是我在不使用 FileProvider 的情况下遇到的当前异常:

2019-07-23 23:04:42.748 11034-11034/com.company.projname E/AndroidRuntime: FATAL EXCEPTION: main

    Process: com.company.projname, PID: 11034

    android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/com.company.projname/cache/colors.png exposed beyond app through ClipData.Item.getUri()

        at android.os.StrictMode.onFileUriExposed(StrictMode.java:1978)

        at android.net.Uri.checkFileUriExposed(Uri.java:2371)

        at android.content.ClipData.prepareToLeaveProcess(ClipData.java:963)

        at android.content.Intent.prepareToLeaveProcess(Intent.java:10216)

        at android.content.Intent.prepareToLeaveProcess(Intent.java:10222)

        at android.content.Intent.prepareToLeaveProcess(Intent.java:10201)

        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1667)

        at android.app.Activity.startActivityForResult(Activity.java:4586)


慕桂英4014372
浏览 122回答 2
2回答

GCT1015

诠释行: Uri swatchImageUri = FileProvider.getUriForFile(//,                     BuildConfig.APPLICATION_ID + ".provider",                     swatchImageFile);将活动作为第一个参数传递: Uri swatchImageUri = FileProvider.getUriForFile(activity,                 BuildConfig.APPLICATION_ID + ".provider",                 swatchImageFile);

Cats萌萌

我应该做些什么?Service是一个Context。getUriForFile()因此,如果您直接在 a 中调用Service,请使用thisfor the Context。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java