如何使用intent发送资产文件夹中可用的图像

时间:2014-06-27 05:50:39

标签: android

我试图使用Intent发送资产文件夹中的某些图像但是它提供错误说共享失败以后再试一次请提供一些建议。

这就是我正在做的事情

Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/*");
share.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///android_asset/1.jpg"));
startActivity(Intent.createChooser(share, "Share Image!"));

我也尝试使用这样的

 Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/*");
share.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resource://com.example.whatsappshare/asset/1.jpg"));
startActivity(Intent.createChooser(share, "Share Image!"));

两种提供相同结果的方式。

3 个答案:

答案 0 :(得分:2)

如前所述,创建位图后,请使用以下代码段将其作为附件发送。

String path = Images.Media.insertImage(getContentResolver(), your_bitmap, "title", null);
Uri screenshotUri = Uri.parse(path);

final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
emailIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
emailIntent.setType("image/png");

startActivity(Intent.createChooser(emailIntent, "Send email using"));

答案 1 :(得分:0)

资产目录对您的应用是私有的,不适用于其他应用。因此,无法直接从资产中进行共享。您需要将文件从assets复制到文件系统中的公共目录,然后发送指向公共文件的共享意图。看看here.

答案 2 :(得分:0)

您无法直接共享文件,但应使用内容提供商进行共享。

要避免编写自己的内容提供商,请参阅cwac-provider

  

CWAC-Provider:帮助内容提供商失意

     

该项目提供了一个基于Google的FileProvider的StreamProvider。与FileProvider一样,StreamProvider旨在通过ContentProvider接口(content:// Uri值)提供文件,进行读写。 StreamProvider提供:

     
      
  • 从资产和原始资源中提供文件
  •   
  • 从getExternalFilesDir()和getExternalCacheDir()
  • 提供文件