簡體   English   中英

分享原始資源android

[英]Share raw resources android

我的原始資源中有 .mp3、.mp4 和 .jpg 文件。 我想與社交應用分享這些文件。 為此,我嘗試設置文件提供程序,但沒有成功。

顯現:

<provider
  android:name="androidx.core.content.FileProvider"
  android:authorities="com.my.packagename.fileprovider"
  android:exported="false"
  android:grantUriPermissions="true">
  <meta-data
      android:name="android.support.FILE_PROVIDER_PATHS"
      android:resource="@xml/paths" />
</provider>

路徑.xml:

<?xml version="1.0" encoding="utf-8"?>
<paths>

<files-path name="file_path" path="."/>

<external-files-path name="external_path" path="/" />

</paths>

這就是我嘗試共享文件的方式(在本例中為音頻):

File file = new File(mAudio.getSoundUri().getEncodedPath());
Uri soundUri = FileProvider.getUriForFile(
                getContext(),
                "com.my.packagename.fileprovider",
                file);
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("audio/mp3");
sharingIntent.putExtra(Intent.EXTRA_STREAM, mAudio.getSoundUri());
startActivity(Intent.createChooser(sharingIntent, "Send"));

mAudio對象的getSoundUri()返回一個像這樣的 Uri: android.resource://com.my.packagename/raw/sound.mp3

當我運行它時,我要么沒有收到任何錯誤,但沒有顯示意圖並且我的活動被重建,或者我得到了這個:

java.lang.IllegalArgumentException: Failed to find configured root that contains /raw/sound.mp3

我試圖從 Uri 中刪除 /raw 但我得到了同樣的錯誤:

java.lang.IllegalArgumentException: Failed to find configured root that contains /sound.mp3

為什么會這樣?

為什么會這樣?

資源是開發機器上的文件。 它們不是設備上的文件。 設備上沒有資源的文件系統路徑,因此FileProvider無法為它們提供服務。

您的兩個主要選擇是:

  1. 將資源復制到文件(例如,在getCacheDir()中),然后使用FileProvider來提供文件

  2. 編寫您自己的ContentProvider以直接提供原始資源(在Context上使用getResources()來獲取Resources object,然后您可以從那里獲取原始資源上的InputStream

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM