当前位置: 首页 > 知识库问答 >
问题:

在Oreo 8.0中不工作的其他应用程序上共享图像

申屠英韶
2023-03-14

我正在使用此代码在Whatsapp、Facebook和Instagram等网站上共享图像。此代码在API 25以下运行良好,但在API 25以上不起作用。

Intent share = new Intent("android.intent.action.SEND");
                share.setType("image/jpeg");
                share.putExtra("android.intent.extra.STREAM", Uri.parse(this.imgUrl));
                startActivity(Intent.createChooser(share, "via"));

共有3个答案

阎昌勋
2023-03-14

试试这个:

Intent shareIntent = new Intent();
     shareIntent.setAction(Intent.ACTION_SEND); 
     shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage); 
     shareIntent.setType("image/jpeg");
startActivity(Intent.createChooser(shareIntent,getResources().getText(R.string.send_to)));
卜存
2023-03-14

首先确保您已添加权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

然后使用此代码

Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/jpeg");
Uri imageUri =  Uri.parse(this.imgUrl);                                
share.putExtra(Intent.EXTRA_STREAM, imageUri);
startActivity(Intent.createChooser(share, "Select"));
冯文彬
2023-03-14

如果Target etSdkVersion高于24,则使用Provider授予访问权限。

创建xml文件:res\xml\provider\u路径。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>

现在在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>

并用你的代码替换它

Intent share = new Intent("android.intent.action.SEND");
            share.setType("image/jpeg");
Uri uri = FileProvider.getUriForFile(MainActivity.this, BuildConfig.APPLICATION_ID+ ".provider",new File(this.imgUrl));
            share.putExtra("android.intent.extra.STREAM", uri);

            startActivity(Intent.createChooser(share, "via"));

使现代化

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="external_files" path="."/>
<cache-path name="external_files" path="."/>
<external-path name="external_files" path="."/>
<external-files-path name="external_files" path="."/>
<external-cache-path name="external_files" path="."/>
</paths>
 类似资料:
  • 在我们的应用程序中,我们发现有必要通过另一个应用程序的意图从我们的内部存储中打开文档。即打开我们内部存储在用户选择的默认pdf阅读器中的pdf。 在清单中,我将应用程序设置为提供程序,在我们的Provider类中,我实现了调用的openFile(Uri uri, String模式)方法,并且不会抛出FileNotFoundException。 我已经验证了该文件是否存在于预期的位置-并且意图不为空

  • 首先请不要把这个问题当作重复的问题。所有其他问题都是旧的,我已经尝试了其中大多数的解决方案,但没有一个奏效。 我正在开发一个Android应用程序,我已经将我的应用程序添加到共享Android菜单中。我想添加功能,这样如果用户在共享列表上单击我的应用,例如在Chrome浏览器或Google Drive应用中,我的应用将从该应用接收数据,例如从Chrome it wold URL。 我尝试过使用不同

  • 问题内容: 我有一个正在运行的Flask应用程序,该应用程序是根据我们在网上和Miguel Grinberg的“ Flask Web开发”书中找到的最佳实践组合设置的。 现在,我们需要第二个Python应用程序,它不是Web应用程序,并且需要访问与Flask应用程序相同的模型。我们想重复使用相同的课程模型,因此两个应用程序都可以从共享代码中受益。 我们删除了关于flask- sqlalchemy扩

  • 我有一个谷歌应用程序脚本,为我工作的罚款。其他与之共享工作表的人试图使用它,他们会得到消息: 您没有执行该操作的权限。请请求此项目的所有者授予您访问权限。 该脚本用于使用新的数据行更新现有工作表。它使用添加到UI的菜单项触发,并执行以下操作: 在GDrive文件夹中找到. xlsx文件(该文件由Web服务导出,并由我们手动放入GDrive文件夹,我们无法控制文件的内容或其格式) 使用UrlFetc

  • Photoshop 提供许多可帮助您在其它应用程序中使用图像的功能。由于 Adobe 产品之间是紧密集成的,因此许多 Adobe 应用程序都可以直接导入 Photoshop (PSD) 格式文件并使用图层、图层样式、蒙版、透明度及效果等 Photoshop 功能。 为页面排版程序准备图像 如何为页面排版程序准备图像取决于程序可识别的文件格式: Adobe InDesign 2.0 和更高版本可以放