当前位置: 首页 > 面试题库 >

Intent.ACTION_SEND无法在Oreo上使用

阎弘
2023-03-14
问题内容

我正在开发一个自定义相机应用程序,该应用程序可以捕获图片并将其存储在图库中。当我使用Intent.ACTION_SEND共享该图像时,除具有 API26(即OREO)的 设备外,它在所有设备上都可以正常工作

我分享图片的代码是:

Intent shareIntent = new Intent();
            shareIntent.setAction(Intent.ACTION_SEND);
            shareIntent.setType("image/jpeg");
            Uri uriShare = Uri.fromFile(outFile);
            //outfile is the path of the image stored in the gallery
            shareIntent.putExtra(Intent.EXTRA_STREAM, uriShare);
            startActivity(Intent.createChooser(shareIntent, ""));

谁能帮我解决这个问题?


问题答案:

如果targetSdkVersion大于 24,则使用FileProvider授予访问权限。

创建一个XML文件(路径:res\xmlprovider_paths.xml

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

添加 提供商*在AndroidManifest.xml中下 *

 <provider
    android:name="android.support.v4.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_paths"/>
</provider>

替换

Uri uri = Uri.fromFile(fileImagePath);

Uri uri = FileProvider.getUriForFile(MainActivity.this, BuildConfig.APPLICATION_ID + ".provider",fileImagePath);

到此为止。



 类似资料:
  • 有人能帮我解决这个问题吗?

  • 我是的新手,我必须制作一个音乐播放器。我从github中举了一个例子,我正在实现我需要的东西,但是当我将代码从更新到时,它会给我一个关于的错误: Android.app.remoteserviceException:StartForeground的错误通知:java.lang.runtimeException:服务通知的无效通道:通知(通道=null pri=0 contentview=null振

  • Firebase onMessageReceived从未在应用程序未运行时调用,并从最近的应用程序列表中删除。我正在使用Firebase并从服务器向我的应用程序发送数据负载通知,我尝试使用JobScheduler每隔1分钟启动一次MyFirebaseMessagingService以防系统关闭我的服务,但这种方法在一加3上对我不起作用。我知道android增加了后台服务的限制来优化电池使用,但是这

  • 问题内容: 我有一个表格: 和一个函数PrepareOrder 问题是在新的ipad(Safari)上未调用操作。在桌面浏览器上,它可以正常工作。控制台中没有错误。我尝试在之后添加警报: 像那样: 并且还给我。为什么?如果不调用。我还将日志记录添加到操作中,并且没有输出字符串。 问题答案: Safari和/或Ipad支持非常强大的缓存。我的应用程序中也遇到了同样的问题。尝试向您的控制器(甚至基本控

  • 我安装了一个新的并下载了最新的Maven。在中: :我选择了刚下载的Maven :我选择了 此外,当我打开该项目的时,它在带有的行中显示: 似乎有一个错误: 在此行找到多个批注:

  • 我试图防止在SearchView上调用requestFocus()后键盘出现,但在Android8上没有解决方案。 我试过: /*3/ /*4/ onGlobalLayout()工作,但软键盘显示了近0.5秒后消失。 即使在调用requestFocus()之后,是否可以帮助隐藏软键盘?